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.

Foi útil?

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')

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top