1
に{から_locate}オプションを宣言し、私は、URLのこれらの種類をルーティングたいと思います:サイレックス2:ルーティング
/hello/{name}
/en/hello/{name}
/es/hello/{name}
私は、このコントローラクラス作成しました:
<?php
namespace Fw\Controllers;
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Fw\Application as FwApplication;
class Hello implements ControllerProviderInterface {
const URL_BASE = '/hello';
const URL_BASE_LOCALE = '/{_locale}/hello';
public function connect(Application $app) {
$controllers = $app['controllers_factory'];
$controllers
->get('/{name}/', array($this, 'nameAction'))
->bind('hello_name')
;
return $controllers;
}
public function nameAction(FwApplication\ApplicationBase $app, Request $request, $name) {
return new Response('Hello ' . $name, 200);
}
}
をそして、それはこの中に登録されています方法:番目、/ EN /ハロー/ fooの:/こんにちは/ fooの しかし、これではない:
$app->mount(FwControllers\Hello::URL_BASE_LOCALE, new FwControllers\Hello());
$app->mount(FwControllers\Hello::URL_BASE, new FwControllers\Hello());
このURLは良い作品エラーが表示されます。
NotFoundHttpException RouterListener.php線125に:Noルートは
第二は、 "マウント" の文章があるようだ "/ GET/EN /ハロー/ foo" というため を認めませんでした最初のものに上書きされます。
誰でもこの問題を解決できますか?オプションの{_locale}でルーティングを設定するにはどうすればよいですか?
ありがとうございました。
あなたの素早い答えに感謝:)あなたのライブラリはうまく動作し、ほとんど私の要件を訴える。 1つのこと:使用可能な言語が "es"、 "en"の場合、読み込まれたURLがNotFoundHttpExceptionをスローする代わりに "/ fr/hello/foo"であり、デフォルト(/ en/hello/foo) "または"/hello/foo "? – cybtow
{$ request-> getLocale()== 'fr'}のように、可能なロケールに 'fr'を追加してリダイレクトすることができます($ symfony- )redirect ...; }); ' –
ありがとうございました! – cybtow