Symfony2:使用ParamConverter的路由的generateUrl()或如何反转参数转换

时间:2015-06-03 14:33:30

标签: symfony routes

我在我的路线中使用自定义ParamConverter,不仅要保持控制器的精益,还要重用参数转换算法。它使用route参数作为哈希映射的索引,并将请求参数设置为相应的值。像魅力一样。

class EntityParamConverter implements ParamConverterInterface
{
    protected $classNames;

    public function __construct($classnames = array())
    {
        $this->classNames = $classnames;
    }

    function apply(Request $request, ParamConverter $configuration)
    {
        $options = $configuration->getOptions();
        $paramName = $configuration->getName();
        $nameParam = isset($options['entity_name']) ? $options['entity_name'] : 'entityname';

        if (empty($request->get($nameParam))) {
            return false;
        }

        $entityName = $request->get($nameParam);

        if (empty($this->classNames[$entityName])) {
            return false;
        }

        $entityClass = $this->classNames[$entityName];
        $request->attributes->set($paramName, $entityClass);

        return true;
    }

    function supports(ParamConverter $configuration)
    {
        return empty($configuration->getClass());
    }
}

我的问题是我不知道如何从控制器内生成该路由的URL,而不必告诉控制器有关哈希映射的信息。有没有办法逆转ParamConversion,或者这是一个错误的方法开始?

0 个答案:

没有答案