2010-11-06 53 views
1

我想從另一個.ctp文件中調用一個控制器文件的.ctp文件。例如對於例如 如何從.ctp文件運行控制器文件的操作?

users_controller.php有一個名爲list_category()的操作,我想從/app/views/pages/index.ctp文件中調用它。不只是調用list_category,但也希望顯示它的html輸出(我的意思是list_category.ctp應呈現)。

謝謝。

回答

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

+0

但是,如果我想將此操作用作小部件,該怎麼辦。我的意思是我想調用這個動作也想在另一個layout/vtp文件中渲染ctp html。 – gautamlakum 2010-11-09 13:37:19

+0

您可以在任何想要渲染的元素上調用該元素。在任何視圖中,如果你輸入<?php echo $ this-> element('list_category'); ?>它將呈現元素,元素中的requestAction將從控制器獲取數據。 – 2010-11-11 10:24:22

0

你可以用路由嗎?我不確定語法,但我認爲你可以指定控制器在你登陸頁面時運行的方法

0

這似乎是錯誤的,你試圖完成什麼? ?元素如何?

0

如何從主控制器調用控制器,然後將其結果傳遞給您的佈局。最後使用一個元素來渲染那裏的輸出,並且也使用這個元素來渲染另一個控制器上的輸出。這樣你就沒有重複的佈局。只有一個由兩個控制器使用的元素。

這與Rails在「烘烤」它們時創建佈局的方式非常相似。它創建了一個在添加和編輯佈局中使用的元素的等價物。

0

這可以用requestAction完成,但請注意,它很貴,您應該小心。

相關問題