Ação do controlador de chamada do arquivo CTP
Pergunta
Quero chamar uma ação do arquivo do controlador de um arquivo .ctp no CakePhp. É possível? Sim, do que como? por favor ajude. Por exemplo, eu tenho uma ação no controlador. Users_controller.php
<?php
class UsersController extends AppController {
function get_category() {
....
}
}
?>
Eu quero chamá -lo de arquivo /question/index.ctp.
Solução
A maneira correta de fazer isso é:
$this->requestAction(array('controller' => 'users', 'action' => 'get_category'));
Criando o URL the CakePHP way
aumentará o desempenho (ele não precisará usar o roteador). Além disso, sempre funcionará, enquanto faz isso como: "Usuários/get_category" pode causar alguns problemas quando você não estiver na página de índice.
Ele deve ser usado apenas em elementos (especialmente com cache), se o caso for diferente - refere -se a que Travis Leleu
escreveu em seu comentário.
Outras dicas
Deve -se notar que você não deve confiar no RequestAction como uma prática comum. O RequestAction é uma chamada extremamente tributária e só deve ser usada se você não puder organizar seu código de qualquer outra maneira.
Idealmente, você enviaria os dados necessários da ação do controlador para a visualização, em vez de ligar de volta ao seu controlador.
function my_action() {
...
$this->set('category', $this->getCategory());
}
Você pode chamá-lo como $ this-> requestAction ('controlador' => 'usuários', 'ação' => 'get_category')