CakeRouteクラスを使用してphpのルートを作成しています。
解析メソッドは正常に機能しますが、マップされたURLをアプリで作成するにはどうすればよいですか?
mydomain.com/teachers/contentProfile/1
to
mydomain.com/chris-willis
parse()メソッドを上書きして、リクエストに応じてスラッグを正しくマップしましたが、リンクはmydomain.com/chris-willisに変換されず、古い方法で表示されます。
CakeRouteクラスを使用してphpのルートを作成しています。
解析メソッドは正常に機能しますが、マップされたURLをアプリで作成するにはどうすればよいですか?
mydomain.com/teachers/contentProfile/1
to
mydomain.com/chris-willis
parse()メソッドを上書きして、リクエストに応じてスラッグを正しくマップしましたが、リンクはmydomain.com/chris-willisに変換されず、古い方法で表示されます。
mydomain.com/teachers/contentProfile/1
ID の代わりにスラッグをリンクに渡します: array('slug' => $teacher['Teacher']['slug']);
mydomain.com/teachers/contentProfile/
まず、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);
}
}