2017-11-12 13 views
0

CakePHP3のルートから「言語」パラメータをアクションに渡そうとしているので、それらのページの言語を設定できます。CakePHP3ルーティング:コントローラの動作に静的変数を渡す

$routes->connect('/es/hola', ['controller' => 'StaticPages', 'action' => 'welcome']); 
$routes->connect('/en/hello', ['controller' => 'StaticPages', 'action' => 'welcome']); 

私はそれを行うことができますWORこのようなdinamycパラメータを使用している唯一の方法は:

$routes->connect('/:lang/hola', ['controller' => 'StaticPages', 'action' => 'welcome'], ['pass' => ['lang']]); 

しかし、問題は、このルートが試合になります:

/en/hola 
/es/hello 
... 
/fr/hello 

私はsouldを考えますCakePHP3でこれを行う別の最善の方法かもしれませんが、私はこれを見つけることができません。

ありがとうございます!

答えて

2

あなたはそれをダイナミックにしたくない場合は、デフォルトでそれを渡す必要があり、すなわちコントローラとアクションと並ん:コントローラで

$routes->connect(
    '/es/hola', 
    [ 
     'controller' => 'StaticPages', 
     'action' => 'welcome', 
     'lang' => 'es' 
    ] 
); 

パラメータは、リクエストを経由して利用できるようになりますオブジェクト:あなたはそれをコントローラのアクションに引数として渡すことにしたい場合は

$lang = $this->request->getParam('lang'); // param('lang') before CakePHP 3.4 

、あなたはまだpassオプションを使用して渡されることを定義することができます。

を参照してください。
関連する問題