将URL参数转换为SHA1,无论是在树枝还是在路由或任何其他地方


Turn URL parameter into SHA1 either in twig or in route or any other place

我如何在Twig下面生成URL ?我会接受任何其他的解决方案,不仅仅是树枝,只要哈希被转换成SHA1格式。

注意: brand.id是来自DB的纯数字,如1, 2, ,3, 10, 23, 69, .....,需要散列。我不想在数据库中存储散列数据!

生成如下url:

{% for brand in brands %}
   <a href="{{ path('product_delete_process', {'hashId':brand.id }) }}">Delete</a>
   <br />
{% endfor %}

结果URL:

...../product/delete/process/12df54dg54th897yhjrt65DFesrSDE1123ASa

路线:

product_delete_process:
    pattern:  /product/delete/process/{hashId}
    defaults: { _controller: ProDuctBundle:ProductDelete:process }
    methods:  [GET]
    requirements:
        hashId:   "[a-zA-Z0-9]{40}"

只需创建您自己的自定义TWIG过滤器,将编码应用于您的URL参数- http://symfony.com/doc/current/cookbook/templating/twig_extension.html

然后在你的模板中使用它:

{% for brand in brands %}
   <a href="{{ path('product_delete_process', {'hashId':brand.id|sha1_encode }) }}">Delete</a>
   <br />
{% endfor %}