2012-07-30 78 views
0

我在束Symfony2的。自定义网址的问题。 URL编码

/{category} 

以下的路径,而且我有类别名称为

Category/Brand 

如果URL是这样的:

domain.com/Company/Brand 

然后我收到错误500有关/符号。

但是,如果在树枝我做

company.name|url_encode() 

然后我得到

Company%2F%Brand 

(代码可能是错的,不记得现在)

但尽管如此Symfony的告诉我,有没有匹配

和路由给我404

我怎样才能解决这个问题?

+0

你能指定500错误的文本吗? – 2012-07-30 19:43:04

回答

0

好的!

我找到了解决办法here

 

    #PUBLICATION URL 
    ###_publication: 
     pattern: /{username}/{category}/{publicationid} 
     defaults: { _controller: ###:Default:publication } 
     requirements: 
      _method: GET 
      category: .+ 
      username: .+ 
      publicationid: \d+        
    #CATEGORY - should be at very end, to match all other URLS 
    ###_category: 
     pattern: /{category} 
     defaults: { _controller: ###:Default:category } 
     requirements: 
      _method: GET 
      category: .+ 


0

如果你的路由/ {}类和您键入的是domain.com/Company/Brand的URL,错误是正常的。

你必须配置在这样的routing.yml路线:

Company/{category} 
+0

我到底需要domain.com/company/brand或公司%%%%品牌或类似这样的东西。 – 2012-07-30 21:03:43

1

是你的所有类别的名字一样,一个或只有一些?

如果所有的人都遵循这一结构,你可以改变的路线:

/{company}/{brand} 

并改变相应的控制器接受两个变量,而不是一个。后来你可以连接它们或者做任何你需要的东西

如果只有它们中的一些具有这种结构,你可以尝试用控制器中的某个字符组合替换目录分隔符,它创建链接,然后在该路线的控制器。例如,在控制器的模板,其中的链接显示,你可以

$nameEncoded = str_replace ('/','%%%%',$companyName); 

通这个变量的模板,并用它来生成的链接,然后在接收控制器做:

$nameDecoded = str_replace ('%%%%','/',$companyName);