我的包裹中有以下路线
/{category}
我有名称的类别
Category/Brand
如果 url 是这样的:
domain.com/Company/Brand
然后我得到关于 / 符号的错误 500。
但如果我在树枝上
company.name|url_encode()
然后我得到
Company%2F%Brand
(代码可能有误,暂时不记得了)
但尽管如此 Symfony 告诉我没有路由匹配
并给我404。
我怎么解决这个问题?
您的所有类别名称都是这样的,还是只有其中一些?
如果它们都遵循此结构,则可以将路由更改为:
/{company}/{brand}
并更改相应的控制器以接受两个变量而不是一个。稍后您可以将它们连接起来或对它们做任何您需要的事情
如果只有其中一些具有这种结构,您可以尝试用创建链接的控制器中的某些字符组合替换目录分隔符,然后在控制器中为该路由反转此替换。例如,在显示链接的模板的控制器中,您可以
$nameEncoded = str_replace ('/','%%%%',$companyName);
将此变量传递给模板并使用它来生成链接,然后在接收控制器中执行:
$nameDecoded = str_replace ('%%%%','/',$companyName);
如果您的路由是 /{category} 并且您键入的 URL 是 domain.com/Company/Brand,则该错误是正常的。
您必须像这样在 routing.yml 中配置您的路线:
Company/{category}
行!
我在这里找到了解决方案。
#PUBLICATION 网址
###_出版物:
模式:/{username}/{category}/{publicationid}
默认值:{ _controller: ###:Default:publication }
要求:
_方法:获取
类别:.+
用户名:.+
出版物编号:\d+
#CATEGORY - 应该在最后,以匹配所有其他 URL
###_类别:
模式:/{类别}
默认值:{ _controller:###:默认值:类别}
要求:
_方法:获取
类别:.+