2011-09-05 49 views
0

我正在尝试为我的CakePHP应用程序设置路由。CakePHP路由:隔离字符串中传递的参数

我想要的一个URL的例子是/:slug-c-:id/。 (EG example.com/foo-c-1/

该URL应该有两个传递的参数::slug:id
但是,CakePHP将这两个参数看作:slug-c:id

我试图分离这样:slug\-c-:id的路线,但后来当我使用HTML帮助创建一个URL,它包括它建立字符串中的\。 (EG example.com/foo\-c-1/

有另一种方式来分离从其他字符串传递参数的东西,如PHP的This is a string with a {$var}adjacent to letters

回答

0

我发现,我宁可不使用有点哈克的解决方案,但基本上我建立了我的路线是?

/:slug-:cslug-:id/*并设置:cslug的正则表达式来c

的问题,这是我每次设置与HTML帮助一个URL时我要做

array(
    'controller' => 'products' 
    'action' => 'index' 
    'slug' => 'Foo' 
    'cslug' => 'c' 
    'id' => 1 
) 
0

使其为/:slug-:id/并设置slug的正则表达式以包含'-c'。

我不完全确定你可以设置贪婪的正则表达式为slu with与id在最后。此外,如果您使用Inflector创建slug(这是推荐的方式),它会创建带下划线的slug。所以我认为最好用'_c'代替。正则表达式应该是沿线[A-Za-z0-9_]+_c

这里更多:http://book.cakephp.org/view/945/Routes-Configuration