1

私の見解では、次のリンクがあります。

<?php echo $this->Html->link($article['Article']['title'],  array('category' => $article['Page']['Category']['directory'], 'page' => $article['Article']['page_id'],  $article['Article']['id'])); ?>

リンクが出力されることを期待しています: http://example.com/shows/3/articles/6

私のルートは次のようになります。

Router::connect(
    '/:category/:page/:controller/:id',
    array('action' => 'view'),
    array(
        'pass' => array('id'),
        'page' => '[0-9]+',
        'id' => '[0-9]+',
         'category' => 'shows|music|games|books|hobbies',
    )
);

代わりに、私のリンクは次のように返されます: http://example.com/articles/6/category:shows/page:3

絶対 URL を使用せずにこれを適切に表示するにはどうすればよいですか? これはルーティング、ビュー、リンク HTML ヘルパー、または 3 つの組み合わせの問題ですか? リンク ヘルパーが URL を解析する方法に問題があると思いますが、それを変更する方法がわかりません。

ブラウザに URL http://example.com/shows/3/articles/16を手動で入力すると、正しいページが表示されます。

名前付きパラメーターを調べましたが、それも私が望むものを達成していないようです。

4

1 に答える 1

0

にすべてのパラメータを含める必要がありますpass

したがって、ルートは次のようになります。

Router::connect(
    '/:category/:page/:controller/:id',
    array('action' => 'view'),
    array(
        'pass' => array('category','page','id'), // added all passed params here
        'category' => 'shows|music|games|books|hobbies'
        'page' => '[0-9]+',
        'id' => '[0-9]+'
        // Just re-ordered to match your route ;)
    )
);
于 2013-01-16T10:25:00.290 に答える