Как указано @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
Это сделает ваш вид динамическим, поэтому ссылки всегда будут указывать на действие видаправильного контроллера.
Надеюсь, это поможет!