私は多くの内部リンクを持つCakePHP Webサイトを持っていますHtmlHelper
.
/app/View/MyController/myaction.ctp
<?php
echo $this->Html->link(
$item['Search']['name'],
array(
'controller' => 'targetcontroller',
'action' => 'targetaction',
$profileId,
$languageId
)
);
?>
デフォルトルートで問題なく動作します:
/app/Config/routes.php
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
生成されたリンクは次のようになります/mycontroller/myaction/$profileId/$languageId
。
ここで、Web サイトの一部に検索エンジンに適した URL (ID の代わりにプロファイル名と ISO-639-1 言語コードを使用) を使用し、新しいルートを追加したいと考えています。
/app/Config/routes.php
Router::connect(
'/:iso6391/:name.html',
array('controller' => 'mycontroller', 'action' => 'myaction'),
array(
'iso6391' => '[a-zA-Z]+',
'name' => '[0-9a-zA-ZäöüßÄÖÜ\-]+',
)
);
また、正常に動作し、着信 URI など/producer/en/TestName.html
は正しく解釈されます。
しかし、HtmlHelper
はまだ のような古い URI を生成しています/mycontroller/myaction/1/1
。
ドキュメントには次のように書かれています。
逆ルーティングは CakePHP の機能で、すべてのコードを変更することなく URL 構造を簡単に変更できるようにするために使用されます。ルーティング配列を使用して URL を定義すると、後でルートを構成でき、生成された URL が自動的に更新されます。
はルーティングHtmlHelper
配列を入力として取得します。つまり、逆ルーティングを使用しています。
うまくいかないのはなぜですか?(呼び出しHtmlHelper
を変更せずに) 新しい URL を生成する方法は?HtmlHelper#link(...)