我正在使用CakeRoute类为php创建路由。
解析方法工作正常,但如何在应用程序中创建映射列的URL:
mydomain.com/teachers/contentProfile/1
to
mydomain.com/chris-willis
我覆盖了parse()方法,使我的slug在请求中正确映射,但是链接没有转换为mydomain.com/chris-willis,它们仍然看起来很旧。
答案 0 :(得分:0)
mydomain.com/teachers/contentProfile/1
将slu而不是id传递给链接:array('slug'=> $ teacher ['Teacher'] ['slug']);
mydomain.com/teachers/contentProfile /
答案 1 :(得分:0)
首先,确保使用数组语法指定URL;如果你提供了一个字符串网址,CakePHP就无法翻译网址。
$this->Html->url(array('controller' => 'teachers', 'action' => 'contentProfile', $id));
而不是
$this->Html->url('/teachers/contentProfile/' . $id);
您可能必须交替提供slug而不是ID
$this->Html->url(array('controller' => 'teachers', 'action' => 'contentProfile', 'slug' => 'teacher-name'));
或者,更新您的自定义路由类'match()
方法,以便在仅提供ID时查找正确的slug。
class CustomRoute {
match($url) {
if (empty($url['slug']) && isset($url[0])) {
// lookup slug
}
unset($url[0]);
return parent::match($url);
}
}