действие контроллера вызова из файла ctp - PullRequest
1 голос
/ 01 ноября 2010

Я хочу вызвать действие файла контроллера из файла .ctp в cakephp. Является ли это возможным? да чем как? пожалуйста помоги. например, У меня есть действие в контроллере. users_controller.php

<?php
class UsersController extends AppController {

    function get_category() {
        ....
    }

}
?>

Я хочу вызвать его из файла /question/index.ctp.

Ответы [ 3 ]

2 голосов
/ 01 ноября 2010

Правильный способ сделать это:

$this->requestAction(array('controller' => 'users', 'action' => 'get_category'));

Создание URL-адреса the CakePHP way повысит производительность (ему не нужно будет использовать Router).Также всегда будет работать, делая это так: «users / get_category» может вызвать некоторые проблемы, когда вы не на странице индекса.

Он должен использоваться только в элементах (особенно с кэшем), еслидело другое - вспомните то, что Travis Leleu написал в своем комментарии.

2 голосов
/ 02 ноября 2010

Следует отметить, что вы НЕ должны полагаться на requestAction в качестве обычной практики.requestAction является чрезвычайно сложным вызовом, и его следует использовать только в том случае, если вы не можете организовать свой код каким-либо другим способом.

В идеале вы должны отправлять необходимые данные из действия контроллера в представление, а не вызывать обратнок вашему контроллеру.

function my_action() {
   ...
   $this->set('category', $this->getCategory());
}
1 голос
/ 01 ноября 2010

вы можете назвать это как $ this-> requestAction ('controller' => 'users', 'action' => 'get_category')

...