0

我正在使用 CakeRoute 类为 php 创建路由。

parse 方法工作正常,但我如何在应用程序中创建映射的 url:

mydomain.com/teachers/contentProfile/1

to

mydomain.com/chris-willis

我重写了 parse() 方法以使我的 slugs 在请求中正确映射,但链接没有转换为 mydomain.com/chris-willis,它们看起来仍然是旧的方式。

4

2 回答 2

0

首先,确保您使用数组语法指定 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);
  }
}
于 2012-10-30T23:05:31.993 回答
0

mydomain.com/teachers/contentProfile/1

将 slug 而不是 id 传递给链接: array('slug' => $teacher['Teacher']['slug']);

mydomain.com/teachers/contentProfile/

于 2012-10-30T09:38:48.247 回答