2011-09-08 7 views
1

다른 페이지에서 호출 한보기에 페이지 (자체 템플릿을 사용하는 페이지)를 추가하고 싶습니다.템플릿 /보기에 페이지 추가

이 작품과 나는 데이터를 얻을 그러나 blog.php의 3copies 얻을 index.php에 게재 나는 왜 이런 일을하는지 이해가 안 돼.

의 index.php : (index.php를 호출)

<?php 
class page_index extends Page { 
    function init(){ 
     parent::init(); 
     $p=$this; 

     $p=$this->add('View',null,null,array('view/home')); 
     $p->template->tryset('pageblog',$this->add('page_blog')); 

    } 
} 

home.html을 :

<div> 
<?$pageblog?> 
</div> 

blog.php :

<?php 
class page_blog extends Page { 
    function init(){ 
     parent::init(); 
     $page=$this; 

     //Get Articles 
     $articles=$this->add('Model_News')->getRows(); 

     $page->add('H1')->set('Latest News'); 

     foreach($articles as $article){ 
      $content=$this->add('view',null,null,array('view/blog')); 
      $content->template->set('title',$article['title']); 
      $content->template->set('content',$article['content']); 
     } 

    } 
} 

blog.html (템플릿 blog.php)

<div> 
<h3><?$title?></h3> 
<p><?$content?></p> 
<hr> 
</div> 
+0

"보기"에 "페이지"를 추가 하시겠습니까? 일반적으로 다른 방향입니다. – romaninsh

답변

2

자, 여기에 몇 가지 기본 사항이 누락되었습니다.

  1. 페이지를 추가하지 마십시오. ApiFrontend가 도움이됩니다.
  2. defaultTemplate()을 사용하여보기를 추가 할 필요없이 기존 페이지에 대한 템플릿을 정의 할 수 있습니다.
  3. 개체를 개체에 추가하면이를 한 자리에 배치 할 수 있습니다. 객체를 템플릿에 수동으로 삽입하면 좋은 것은 아닙니다.
  4. 그런 항목을 표시하는 데 리스터를 사용할 수 있습니다.

페이지/index.php에

class page_index extends Page { 
    function init(){ 
     parent::init(); 
     $this->add('MVCLister',null,'News','News')->setModel('News'); 

    } 
    function defaultTemplate(){ 
     return array('page/home'); // separate pages from views to avoid mess in templates 
    } 
} 

템플릿/기본/페이지/home.html을 :

<div> 
<h1>My Blog page</h1> 
<p>Welcome to my blog</p> 
<hr/> 
<?News?> 
    <?rows?> 
    <?row?> 
    <div><h3><?$title?></h3> 
    <?$content?> 
    </div> 
    <?/row?> 
    <?/rows?> 
<?/News?> 
</div> 

는 지금은 MVCLister에 코멘트를 확인해야합니다. MVCGrid와 비슷하지만 기본적으로 템플릿이 없으므로 지정해야합니다. 세 번째 인수는 뉴스를 페이지에 표시 할 위치를 정의합니다. 넷째 인자는 템플릿이며, 일반적으로 "array (...)"로 지정합니다. 배열이 없으면 부모 템플릿에서 청크가 제거됩니다. 따라서이 경우 MVCLister에서 사용하는 콘텐츠를 가져 와서 현재 가지고있는 것을 대체하는 동일한 태그에 콘텐츠를 다시 넣습니다.

MVCLister는 템플릿에서 찾고 충분한 시간을 반복하여 결과를 넣습니다. 내부의 모든 태그는 정확한 이름을 가진 모델 필드에 자동으로 할당됩니다.

타이핑을 많이 저장합니다.