我想路由这些网址:
>>> add(1)(2)()
3
>>> add(1)(2)(3)() # and so on..
6
我创建了这个Controller类:
/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);
}
}
此URL效果很好:/ hello / foo 但是这个不是:/ en / hello / foo,显示了这个错误:
RouterListener.php第125行中的NotFoundHttpException:找不到路由 for&#34; GET / en / hello / foo /&#34;
似乎第二个&#34; mount&#34;句子被覆盖到第一个。
有人可以帮我解决这个问题吗?如何使用可选的{_locale}?
设置路由感谢。
答案 0 :(得分:0)
我遇到了同样的问题并编写了服务提供程序,它自动将语言环境添加到所有路由https://github.com/pmaxs/silex-locale。可能会满足您的要求。