Configurando rotas mágicas para plugins no CakePhp 1.3?
-
26-09-2019 - |
Pergunta
Estou trabalhando para atualizar meu projeto do CakePHP 1.2 para 1.3. No processo, parece que o roteamento "mágico" para os plugins pelo qual um nome de controlador (por exemplo: "ForumsController") corresponde ao nome do plug -in (por exemplo, "fóruns") não é mais rotas automaticamente para a raiz do URL do plug -in (por exemplo, : "www.example.com/forums" apontando para plugin "Fóruns", fóruns do controlador ", ação" índice ").
A mensagem de erro dada é a seguinte:
Error: ForumsController could not be found.
Error: Create the class ForumsController below in file: app/controllers/forums_controller.php
<?php
class ForumsController extends AppController {
var $name = 'Forums';
}
?>
De fato, mesmo que eu navegue para "www.example.com/forums/forums" ou "www.example.com/forums/forums/index", recebo o mesmo erro exato.
Preciso configurar explicitamente rotas para todos os plug -in que eu uso? Isso parece destruir muito da magia que eu gosto no CakePhp. Eu só descobri que fazer os seguintes trabalhos:
Router::connect('/forums/:action/*', array('plugin' => 'forums', 'controller' => 'forums'));
Router::connect('/forums', array('plugin' => 'forums', 'controller' => 'forums', 'action' => 'index'));
Configurar 2 rotas para cada plug -in parece um exagero, não é? Existe uma solução melhor que cobrirá todos os meus plug -ins, ou pelo menos reduzirá o número de rotas que preciso configurar para cada plug -in?
Solução
Eu acho que esse tópico Configuração e aplicação-Bootstrapping cobre isso:
App::build(array(
'plugins' => array('/full/path/to/plugins/', '/next/full/path/to/plugins/')
));
Dê uma olhada também neste bilhete: http://cakephp.lighthouseapp.com/projects/42648/tickets/750-plugin-rute-problem-when-acl-and-auth-components-used#ticket-750-5 (O bolo 1.3 removeu rotas de plug -in mágicas).
Outras dicas
Você não tem myplugin_app_controller.php no seu diretório/app/plugins/myplugin.
Basta criar um arquivo contendo seguidores:
<?php
class MypluginAppController extends AppController {
}
?>
E você terá todos os recursos do seu plugin. :)