CakePHP 1.3 でプラグインのマジック ルートを設定しますか?
-
26-09-2019 - |
質問
私はプロジェクトを CakePHP 1.2 から 1.3 にアップグレードすることに取り組んでいます。その過程で、コントローラー名 (例:"ForumsController") プラグイン名と一致します (例:「フォーラム」)は、プラグイン URL のルートに自動的にルーティングされなくなりました(例:「www.example.com/forums」はプラグイン「forums」、コントローラ「forums」、アクション「index」を指します)。
表示されるエラー メッセージは次のとおりです。
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';
}
?>
実際、「www.example.com/forums/forums」または「www.example.com/forums/forums/index」に移動しても、まったく同じエラーが表示されます。
使用するすべてのプラグインへのルートを明示的に設定する必要がありますか?これは、CakePHP について私が気に入っている魔法の多くを破壊するようです。次のことを実行するだけでうまくいくことがわかりました。
Router::connect('/forums/:action/*', array('plugin' => 'forums', 'controller' => 'forums'));
Router::connect('/forums', array('plugin' => 'forums', 'controller' => 'forums', 'action' => 'index'));
プラグインごとに 2 つのルートを設定するのはやりすぎのように思えますよね。すべてのプラグインをカバーする、または少なくともプラグインごとに設定する必要があるルートの数を減らす、より良いソリューションはありますか?
解決
たぶん、その話題 構成とアプリケーションのブートストラップ 以下のことをカバーします:
App::build(array(
'plugins' => array('/full/path/to/plugins/', '/next/full/path/to/plugins/')
));
こちらのチケットもご覧ください: http://cakephp.lighthouseapp.com/projects/42648/tickets/750-plugin-route-problem-when-acl-and-auth-components-used#ticket-750-5 (Cake 1.3 ではマジック プラグイン ルートが削除されました)。
他のヒント
あなたはmyplugin_app_controller.phpであなたの/アプリ/プラグイン/ mypluginディレクトリがありません。
はただ、次を含むファイルを作成します
<?php
class MypluginAppController extends AppController {
}
?>
そして、あなたはすべてのプラグインの機能を備えています。 :)