0

CakeRouteクラスを使用してphpのルートを作成しています。

解析メソッドは正常に機能しますが、マップされたURLをアプリで作成するにはどうすればよいですか?

mydomain.com/teachers/contentProfile/1

to

mydomain.com/chris-willis

parse()メソッドを上書きして、リクエストに応じてスラッグを正しくマップしましたが、リンクはmydomain.com/chris-willisに変換されず、古い方法で表示されます。

4

2 に答える 2

0

mydomain.com/teachers/contentProfile/1

ID の代わりにスラッグをリンクに渡します: array('slug' => $teacher['Teacher']['slug']);

mydomain.com/teachers/contentProfile/

于 2012-10-30T09:38:48.247 に答える
0

まず、URL を配列構文で指定していることを確認してください。文字列 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()メソッドを更新して、ID のみが提供されている場合に正しいスラッグを検索します。

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 に答える