3
我正在構建一個網站,用戶可以選擇他想要的國家,州和城市。自動傳遞路徑參數
一旦他選擇這些參數,他去這樣的頁面:en.example.com/spain/madrid/madrid/
的問題是,我想建立一個新的URL每次,我必須通過這3個變量,我在想,如果我能做到有些東西可以使它們變得像_locale
變量一樣,symfony自身將它傳遞給參數。
感謝
我正在構建一個網站,用戶可以選擇他想要的國家,州和城市。自動傳遞路徑參數
一旦他選擇這些參數,他去這樣的頁面:en.example.com/spain/madrid/madrid/
的問題是,我想建立一個新的URL每次,我必須通過這3個變量,我在想,如果我能做到有些東西可以使它們變得像_locale
變量一樣,symfony自身將它傳遞給參數。
感謝
搜索更多後,我發現這個職位:http://blog.viison.com/post/15619033835/symfony2-twig-extension-switch-locale-current-route
我只是用的想法,並取得我所需要的變化,這是我的分機最終代碼
<?php
namespace Comehoy\CoreBundle\Twig\Extension;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\HttpKernel;
class PathExtension extends \Twig_Extension
{
private $request;
private $router;
public function __construct(Router $router) {
$this->router = $router;
}
public function onKernelRequest(GetResponseEvent $event) {
if ($event->getRequestType() === HttpKernel::MASTER_REQUEST) {
$this->request = $event->getRequest();
}
}
public function getFunctions()
{
return array(
'l10n_path' => new \Twig_Function_Method($this, 'getPath')
);
}
public function getPath($name, $parameters = array())
{
$parameters = array_merge($parameters, [
'country' => $this->request->get('country'),
'state' => $this->request->get('state'),
'city' => $this->request->get('city'),
]);
return $this->generator->generate($name, $parameters, false);
}
public function getName()
{
return 'twig_my_path_extension';
}
}
而且至於其配置與後相同
services:
twig.localized_route_extension:
class: Acme\CoreBundle\Twig\PathExtension
tags:
- { name: twig.extension }
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
arguments: [@router]
對於我使用國家,州和城市的路線,我將它們放在前綴中以避免在每條路線中重複它們。
希望它可以幫助別人。
非常感謝您的支持!在symfony 2.5中'$ this-> generator-> generate'應該是'$ this-> router-> generate' –