Convert values of route parameters dynamically in Symfony 2

▼魔方 西西 提交于 2019-12-08 06:45:49

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!