问题
I have route /track/Johnny+Cash/There+You+Go and I need route parameters artist_name="Johnny Cash", name="There You Go" (without pluses)
For this I added listener in MainBundle\Resources\config\services.yml
services:
app.listener.location:
class: Melofania\MainBundle\LocationListener
scope: request
tags:
- { name: kernel.event_listener, event: kernel.controller }
arguments: []
And created file MainBundle\LocationListener.php
namespace Melofania\MainBundle;
use Symfony\Component\HttpKernel\HttpKernel;
class LocationListener {
public function onKernelController($event) {
if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) {
return;
}
$request = $event->getRequest();
$parameters = $request->attributes->get('_route_params');
foreach($parameters as &$parameter) {
$parameter = str_replace('+', ' ', $parameter);
}
$request->attributes->set('_route_params', $parameters);
}
}
But route parameters in controllers didn't changed. Anybody can explain this bug? Thanks for answers.
来源:https://stackoverflow.com/questions/27754401/convert-values-of-route-parameters-dynamically-in-symfony-2