我正在使用 CakeRoute 类为 php 创建路由。
parse 方法工作正常,但我如何在应用程序中创建映射的 url:
mydomain.com/teachers/contentProfile/1
to
mydomain.com/chris-willis
我重写了 parse() 方法以使我的 slugs 在请求中正确映射,但链接没有转换为 mydomain.com/chris-willis,它们看起来仍然是旧的方式。
我正在使用 CakeRoute 类为 php 创建路由。
parse 方法工作正常,但我如何在应用程序中创建映射的 url:
mydomain.com/teachers/contentProfile/1
to
mydomain.com/chris-willis
我重写了 parse() 方法以使我的 slugs 在请求中正确映射,但链接没有转换为 mydomain.com/chris-willis,它们看起来仍然是旧的方式。
首先,确保您使用数组语法指定 URL;如果您向 CakePHP 提供字符串 url,CakePHP 将无法翻译 url。
$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);
}
}
mydomain.com/teachers/contentProfile/1
将 slug 而不是 id 传递给链接: array('slug' => $teacher['Teacher']['slug']);
mydomain.com/teachers/contentProfile/