質問

私はプロジェクトを 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 {

}
?>

そして、あなたはすべてのプラグインの機能を備えています。 :)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top