如何从.ctp文件运行控制器文件的操作?

时间:2010-11-06 17:31:47

标签: php cakephp render

我想从另一个.ctp文件中调用一个动作及其控制器文件的.ctp文件。 例如。

users_controller.php有一个名为list_category()的动作,我想从/app/views/pages/index.ctp文件中调用它。不只是调用list_category而且还想显示它的html输出(我的意思是也应该渲染list_category.ctp)。

感谢。

5 个答案:

答案 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来完成,但要注意,它很贵,你应该小心。