まず、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);
}
}