我想从另一个.ctp文件中调用一个动作及其控制器文件的.ctp文件。 例如。
users_controller.php有一个名为list_category()的动作,我想从/app/views/pages/index.ctp文件中调用它。不只是调用list_category而且还想显示它的html输出(我的意思是也应该渲染list_category.ctp)。
感谢。
答案 0 :(得分:2)
创建一个元素,例如list_category.ctp
。
在元素中使用requestAction
来获取数据:
<?php
$categories = $this->requestAction('/users/list_categories');
?>
<?php foreach($categories as $category): ?>
<?php // Your display code goes here ?>
<?php endforeach; ?>
在您的控制器中,确保return
您想要的数据。
<?php
function list_categories() {
return $this->User->Category->find('all');
}
?>
您可以重复使用list_category.ctp
视图的代码。
使用requestAction
时会产生开销,但通常为less than people believe。
答案 1 :(得分:0)
你能用路由做到吗?我不确定我的头脑中的语法,但我认为您可以指定控制器在您登陆该页面时运行的方法
答案 2 :(得分:0)
这似乎不对,你想要完成的是什么?元素怎么样?
答案 3 :(得分:0)
如何从主控制器调用控制器,然后将其结果传递给您的布局。最后使用一个元素在那里渲染输出,并使用该元素在另一个控制器上渲染输出。这样你就没有重复的布局了。只有一个元素由两个控制器使用。
这与Rails在烘焙时创建布局的方式非常相似。它创建了一个等效的元素,用于添加和编辑布局。
答案 4 :(得分:0)
这可以通过requestAction来完成,但要注意,它很贵,你应该小心。