1

Cakephp 3 でルーティング プレフィックスを設定しようとしているので、/json/ で始まるすべての URL がプレフィックス キー セットを取得し、それに応じてアプリ コントローラーでレイアウトを変更できます。それ以外は、通常のコントローラーとアクションを使用する必要があります。以下をroutes.phpに追加しました

$routes->prefix('json', function($routes) {
    $routes->connect(
        '/:controller/:action/*',
        [],
        ['routeClass' => 'InflectedRoute']
    );
});

最初の URL セグメントとして json を使用するすべてのリクエストを、2 番目の URL セグメントで指定されたコントローラーに送信したいと考えています。例 /json/users/add_account_type/ はユーザーコントローラーに移動します。ただし、この URL にアクセスすると、次のメッセージが表示されます。

エラー: 次のファイルにクラス UsersController を作成します: src/Controller/Json/UsersController.php

一方、私はそれを使用したい

src/Controller/UsersController.php

これは可能だと思いますが、本を調べても何が間違っているのかよくわかりません。部分的に私のコードに基づいています:プレフィックスルーティングを使用する場合の URL の CakePHP3.x コントローラー名

事前にどうもありがとう

4

2 に答える 2

1

これは、ドキュメントで説明されているように、プレフィックスルーティングが 3.x でどのように機能するか、プレフィックスがサブ名前空間にマップされているため、サブフォルダー内のコントローラーを分離する方法です。

http://book.cakephp.org/3.0/en/development/routing.html#prefix-routing

その動作を変更したい場合 (理由はよくわかりません)、1 つの方法は、カスタムControllerFactoryディスパッチャ フィルタを実装することです。

http://book.cakephp.org/3.0/en/development/dispatch-filters.html

余談ですが、このRequestHandlerコンポーネントはすぐに使用できるレイアウト/テンプレートの切り替えをサポートしているため、試してみてください。

于 2015-03-25T13:18:16.500 に答える