действие на контролера за повикване от ctp файл

Искам да извикам действие на файла на контролера от .ctp файл в cakephp. възможно ли е? да, отколкото как? Моля помогнете. за напр. Имам действие в контролера. потребителски_контролер.php

<?php
class UsersController extends AppController {

    function get_category() {
        ....
    }

}
?>

Искам да го извикам от файла /question/index.ctp.


person gautamlakum    schedule 01.11.2010    source източник
comment
Защо искате да направите това? Това е в нарушение на добрите MVC практики и за мен крещи, че нещо не е настроено правилно.   -  person Travis Leleu    schedule 01.11.2010


Отговори (3)


Правилният начин да направите това е:

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

Създаването на url the CakePHP way ще увеличи производителността (няма да се налага да използва рутер). Също така винаги ще работи, докато го правите като: "users/get_category" може да причини някои проблеми, когато не сте в индексната страница.

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

person pawelmysior    schedule 01.11.2010
comment
Но не генерира изход от файла get_category.ctp. Също така искам да покажа изхода му. - person gautamlakum; 06.11.2010

Трябва да се отбележи, че НЕ трябва да разчитате на requestAction като обичайна практика. requestAction е изключително натоварващо извикване и трябва да се използва само ако не можете да организирате кода си по друг начин.

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

function my_action() {
   ...
   $this->set('category', $this->getCategory());
}
person jmking    schedule 02.11.2010

можете да го наречете като $this->requestAction('controller'=>'users','action'=>'get_category')

person mentes    schedule 01.11.2010
comment
доколкото знам $this-›requestAction('controller'=›'users','action'=›'get_category') това трябва да е $this-›requestAction(array('controller'=›'users', 'action'=›'get_category')) Не опитах по друг начин - person mentes; 01.11.2010