2014-02-07 6 views
0

저는 charme처럼 작동하는 무 지방 PHP 프레임 워크에 들어가려고합니다. 알아낼 수없는 것들이 있습니다. 하려면 긴 이야기는 짧은 여기에 간단한 예를 찾을 수 :db 결과를 통한 fatfree 프레임 워크 탐색

http://barbatti.de/f3/

질문 :

  1. 기록에 한 킬로는 GET /보기/@ 아이디 경로가 트리거됩니다. 다음 기사와 이전 기사에 대한 다음 단일보기에서 내비게이션을 실현하려면 어떻게해야합니까? 다음 기사와 Nr.가 없으면 링크가 보이지 않아야합니다. 현재 기사의 네임드이어야합니다. (나는 커서에 대한 방법을 읽었지만 이것을 알아낼 수는 없습니다.)

  2. 발견 된 모든 기사로 선택 상자를 채우려면 어떻게합니까?

  3. 질문 2의 선택 상자 드롭 다운에서 게시물을 수신하는 단일보기의 경로를 변경하려면 어떻게해야합니까?

내 설정 :

의 index.php (나는 아래의 코드에서 GET/경로를 걷어)

$f3 = require('lib/base.php'); 

$f3->set('DB', 
    new DB\SQL(
    'mysql:host=localhost;port=3306;dbname=f3', 
    'root', 
    'root' 
) 
); 

$f3->route('GET /view/@id', 
    function($f3) { 
    $id = $f3->get('PARAMS.id'); 
    $article=new DB\SQL\Mapper($f3->get('DB'),'test');  
    $f3->set('list',$article->find(array('id=?',$id))); 
    echo template::instance()->render('single.htm'); 
    } 
); 

$f3->run(); 

템플릿 단일보기 :

<repeat group="{{ @list }}" value="{{ @item }}"> 
    <p> 
     {{ @item.name }} 
     {{ @item.text }} 
     {{ @item.age }} 
    </p> 
</repeat> 

<hr> 
<a href="view/@item">prev</a> | <a href="view/@item">next</a> | <small>this is entry XX from XX</small> 
<p> <small>Select Entry:</small></p> 
<form action="/view" method="post"> 
    <select name="goto"> 
     <repeat group="{{ @list }}" value="{{ @item }}"> 
     <option value="{{ @item.id }}">{{ @item.name }}</option> 
     </repeat> 
    </select> 
<input type="submit"> 
</form> 

SQL :

CREATE TABLE `test` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` text NOT NULL, 
    `text` text NOT NULL, 
    `age` text NOT NULL, 
    `rel` int(11) NOT NULL, 
    KEY `id` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; 

INSERT INTO `test` (`id`, `name`, `text`, `age`, `rel`) VALUES 
    (1, 'a', 'hi', '20', 1), 
    (3, 'b', 'yes', '25', 1), 
    (4, 'c', 'why not', '30', 1), 
    (5, '1', 'why', '15', 2), 
    (6, '2', 'Ahoi', '35', 2), 
    (7, '3', 'ade', '40', 2); 

고마워요!

답변

1

where 조건에서 id 조건을 사용하여 find()를 사용하는 이유는 무엇입니까? 전체리스트? 이것은 나에게별로 의미가 없습니다. findone() 또는 load() 메서드를 사용하십시오. 그런 다음 $ article-> next() -> dry(); 다른 레코드가 있는지 확인하는 중 ... prev()/skip (-2)과 동일합니다.

+0

도 살펴 봅니다. http://fatfreeframework.com/cursor#paginate – ikkez

+0

안녕하세요 Ikkez,이 페이지 매김 플러그인을 사용하고 있습니다. 감사합니다. –

1

: 1 :이 방법은 상당히 더럽지 만 더 높거나 더 낮은 ID를 가진 기사를 찾으려면 두 가지 추가 검색어를 사용할 수 있습니다. 다른 결과가 반환되면 이전 또는 다음 링크를 추가 할 수 있습니다. Stackoverflow에서 "페이지 매김"을 찾아 몇 가지 예제를 찾아야합니다.

to 2 : 데이터베이스의 모든 항목을 포함하는 다른 쿼리를 작성해야 해당 입력란을 채울 수 있습니다.

3 : 양식 작업을위한 새 경로를 만들거나 경로를 다음과 같이 변경하십시오. GET|POST /view/@id하지만 이는 양식의 작업을 정확한 경로로 변경해야 함을 의미합니다. 따라서 action="{{(int) @PARAM.id}}" (교차 사이트 스크립팅을 방지하기 위해 (int)을 추가했습니다.)

+0

안녕하세요. SnOopy, 답장을 보내 주셔서 감사합니다. db 행에 다음 번호가없는 경우 ID가이 값보다 많으면 실패합니다. 해결 방법은 배열의 모든 ID 결과를 읽은 다음 탐색을 위해이 ID의 현재 위치를 가져올 수 있다고 생각했습니다. 불행히도 f3은 PHP 현재 또는 다음 또는 이전과 같은 배열 함수를 지원하지 않습니다 ( –

관련 문제