cakephp 3でルーティングのデフォルトのプレフィックスを設定する方法は?
-
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に基づいています
この行を見てください:
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 あなたがそのコードを使用する場合;-)