我使用CakeRoute类为php创建路由。让我的CakePHp链接有虚荣的URL
parse方法工作得很好,但如何让我的应用程序的URL被映射liek:
mydomain.com/teachers/contentProfile/1
to
mydomain.com/chris-willis
我改写了parse()方法,使我的蛞蝓正确映射的请求,但这些链接不会转换为mydomain.com/chris-willis,它们仍然是旧的方式。
我使用CakeRoute类为php创建路由。让我的CakePHp链接有虚荣的URL
parse方法工作得很好,但如何让我的应用程序的URL被映射liek:
mydomain.com/teachers/contentProfile/1
to
mydomain.com/chris-willis
我改写了parse()方法,使我的蛞蝓正确映射的请求,但这些链接不会转换为mydomain.com/chris-willis,它们仍然是旧的方式。
mydomain.com/teachers/contentProfile/1
传递芯子代替id来的链接:阵列( '蛞蝓'=> $老师[ '教师'] [ '蛞蝓' ]);
mydomain.com/teachers/contentProfile/
我可以通过许多链接进行更改。应该有更好的方式使用匹配($ url)功能 – cdub
首先,确保你与数组要指定网址的;如果您提供了字符串url,CakePHP无法翻译url。的
$this->Html->url(array('controller' => 'teachers', 'action' => 'contentProfile', $id));
代替
$this->Html->url('/teachers/contentProfile/' . $id);
您可能必须交替提供塞而不是ID
$this->Html->url(array('controller' => 'teachers', 'action' => 'contentProfile', 'slug' => 'teacher-name'));
或者,更新您的自定义路由类match()
的方法来查找正确的slu when时只提供一个id。
class CustomRoute {
match($url) {
if (empty($url['slug']) && isset($url[0])) {
// lookup slug
}
unset($url[0]);
return parent::match($url);
}
}
真棒,我必须在我回家时尝试这个,你只是今天回答我所有的问题。在match()中,我是否需要添加像$ url ['slug'] ='my-slug'这样的slu?? – cdub
这是愚蠢的,但那个是顶级的正常工作(我硬编码的问题:http://stackoverflow.com/questions/13127337/routing-in-cakephp-to-vanity-urls/13127705#13127705 )我不想在db中执行查询,并且每次都重新生成路由 – cdub