cakephp 3でルーティングのデフォルトのプレフィックスを設定する方法は?

StackOverflow https://stackoverflow.com/questions/7377112

  •  28-10-2019
  •  | 
  •  

質問

私は言語にプレフィックスを使用していますが、これが正しい方法であるかどうかはわかりませんが、各コントローラーのカスタムルートを書きたくありません。私は今までに20のコントローラーを持っています(最も単純です)。

/nl /contactおよび /en /contactがnl_index()とen_index()にルーティングしようとしているという問題がありますが、これは管理ルーティングには問題ありませんが、すべてのコントローラーは多リンゴでプログラムされていてi18nを使用する必要があります。 index()、編集()などのみであり、その前の言語_ではありません。

これはどうすればいいですか?これらのプレフィックスを追加した理由は、同じコントローラーと機能を使用してより多くのコンテンツを使用できるためです。現在、URL(/en、/nl)の最初の2/3文字に基づいて、言語のbefforefilterでconfigure.write言語を作成しています。

役に立ちましたか?

解決

私はあなたに実装を提示します Croogo CMS cakephpに基づいています

これがクラスです CroogoRouter ルーター

この行を見てください:

Router::connect('/:locale/:controller/:action/*', array(), array('locale' => '[a-z]{3}'));

これが作成されます Localized routes パターン、ここで locale 変数は可能です 3文字の言語コード (ISO 639を読んでください)

つまり、解析されたパスのいずれかがから始まる場合、 3 letter code として使用されます locale 変数はAppControllerに渡されました

それで このファイルを見てください, 、そのようなクラスの使用が提示される場所:

CroogoRouter::connect('/', array('controller' => 'nodes', 'action' => 'promoted'));

ご覧のとおり、いくつかを接続します action path (ここ /)コントローラーとアクションに、しかしクルーゴロウターはこのパスをローカライズすることになります :locale 変数

注:言及を忘れないでください MITライセンス, 、これはデフォルトです クルーゴCMS あなたがそのコードを使用する場合;-)

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