这是posts / index.php =>
<?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>';
}
?>
我想从products / index.ctp =&gt;中调用此帖子/ index.ctp它将是所有控制器的通用/通用index.ctp。我怎么能这样做?
在posts / index.ctp中使用$ allposts。它设置在帖子/索引操作中。但是当我从products / index action调用posts / index.ctp时,会在那里设置不同的变量。假设$ this-&gt; set('allproducts',$ allproducts);在产品/索引操作中设置。现在我如何在posts / index.ctp中使用allproducts变量?
答案 0 :(得分:1)
我们可以使用$this->render('view_name');
将其他视图用于其他操作。我不确定你将如何实现目标。
答案 1 :(得分: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');
。然后你的posts / index.php文件可以这样做:
<?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>';
}
?>
请注意我已将'controller' => 'posts'
替换为'controller' => $this->controller
这会使您的视图变为动态,因此链接将始终指向正确控制器的视图操作。
我希望这有帮助!
答案 2 :(得分:0)
如果要渲染posts / index.ctp而不是products / index.ctp,请使用$this->render('/posts/index');
或者你可能想把它放在一个元素中(这与generic / common index.ctp的想法相同)。