让我的Cakephp链接有虚荣网址

时间:2012-10-30 08:32:13

标签: php cakephp routing routes cakephp-2.1

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

解析方法工作正常,但如何在应用程序中创建映射列的URL:

mydomain.com/teachers/contentProfile/1

to

mydomain.com/chris-willis

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

2 个答案:

答案 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);
  }
}