2011-09-07 57 views
0

這是帖子/ index.php文件=>CakePHP問題:如何從另一個控制器調用一個控制器的視圖?

<?php foreach ($allposts as $post) { 
      echo '<tr class="class_row">'; 
      echo '<td>'; 

      echo $this->Html->link($post['Post']['title'], 
           array('controller'=>'posts','action'=>'view',$post['Post']['id']), 
           array('id'=>'id_anchor_title','class'=>'class_anchor_title')); 
      echo '<tr>'; 
      echo '<td>'; 
} 
?> 

我想打電話從產品/ index.ctp =>這個帖子/ index.ctp這將是所有控制器的通用/通用index.ctp。我怎樣才能做到這一點 ?

在posts/index.ctp中使用$ allposts。它在帖子/索引操作中設置。但是當我從產品/索引行動中調用posts/index.ctp時,不同的變量就設置在那裏。假設$ this-> set('allproducts',$ allproducts);在產品/索引行動中設置。現在我怎麼能使用posts/index.ctp中的所有產品變量?

回答

1

由於@Vins說,你可以在你的控制器動作結束使用$this->render('view_name');來呈現不同的視圖(在你的情況應該是$this->render('/posts/index');

在使用你想要的變量而言,有夫婦可以做的事情。一種方法是將每個控制器中的set函數更改爲使用通用名稱。例如,帖子控制器可能有$this->set('results',$allposts);,而產品控制器可能有$this->set('results',$allproducts);這樣做,您始終可以在您的視圖文件中引用$results。您可能還想設置另一個變量,$pageModel。例如,在您的產品控制器中使用$this->set('pageModel','Product');。那麼你的職位/ index.php文件可以做這樣的事情:我代替'controller' => 'posts''controller' => $this->controller這將使您的視圖動態的,所以該鏈接將始終指向正確的控制器的視圖操作

<?php foreach ($results as $result) { 
      echo '<tr class="class_row">'; 
      echo '<td>'; 

      echo $this->Html->link($result[$pageModel]['title'], 
           array('controller'=>$this->controller,'action'=>'view',$result[$pageModel]['id']), 
           array('id'=>'id_anchor_title','class'=>'class_anchor_title')); 
      echo '<tr>'; 
      echo '<td>'; 
} 
?> 

通知。

我希望這有助於!

1

我們可以使用$this->render('view_name');來使用另一個視圖來執行其他操作。我不確定你將如何實現你的目標。

+0

+1它爲我工作,謝謝。 – Chinmay235

0

,如果你想渲染帖子/ index.ctp,而不是產品/ index.ctp,使用$this->render('/posts/index');

或者你可能想把他們中的元素(這是通用/通用index.ctp同樣的想法)。

相關問題