Гилден, большое спасибо за идею, но она все равно не работает ...
Вот контроллер LOCALE SWITCHER:
class LocaleController extends Controller
{
public function changeAction($locale, Request $request)
{
if ($request->hasSession())
{
$session = $request->getSession();
$session->setLocale($locale);
$route_params = $session->get('jet_referrer');
$route_name = $route_params['_route'];
// Some parameters are not required to be used, filter them
// by using an array of ignored elements.
$ignore_params = array('_route' => true, '_controller' => true,
'_template_default_vars' => true);
$route_params = array_diff_key($route_params, $ignore_params);
$url = $this->get('router')->generate($route_name, $route_params);
return $this->redirect($url);
}
}
}
Вот контроллер BUSINESS LOGIC:
/**
* @Route("/{_locale}")
*/
class TestController extends Controller
{
/**
* @Route("/", name="_test")
* @Template()
*/
public function indexAction(Request $request)
{
$request->getSession()->set('jet_referrer', $request->attributes->all());
return array();
}
/**
* @Route("/hello/{name}", name="_test_hello")
* @Template()
*/
public function helloAction($name, Request $request)
{
$request->getSession()->set('jet_referrer', $request->attributes->all());
return array('name' => $name);
}
}
Что касается параметров IGNORED для array_key_diff () ...
_controller
_locale
_route
_template
_template_default_vars
_template_vars
Я попытался включить несколько из них для нового поколения маршрутов, но безуспешно ..Не понимаю, что происходит ...
Кажется, это просто хак ... У нас есть более изощренный способ реализовать эту простую функцию в Symfony2 ??RAW PHP позволяет мне делать это намного проще ...
Еще раз спасибо.