0

CakePHP 2.3 で次のルーティングをセットアップしようとしています。

ドメイン/ニュース/スラッグ

ルーティングに関するクックブックのガイドラインに従ってい ますが、作成されるルートは正しいです。私が遭遇する問題は、リンクを選択すると、「NewsController にメソッドがありません」というエラー メッセージが表示されることです。

ここに私が設定したものがあります:

    Router::connect(
    '/news/:slug/', 
    array('controller' => 'news', 'action' => 'view'), 
    array(
        'pass' => array('slug'),
        'slug' => '[^_]+'
        )
    );

スラッグを正規表現 (アンダースコアを含まない任意の文字列) で渡しています。

これはインデックスページの私のリンクです:

        <?php echo $this->Html->link(
          $news['News']['title'], 
          array(
            'controller' => 'news',
            'action' => 'view',
            'slug' => $news['News']['slug']
            )
          ); ?>

前述のとおり、URL は正しく作成されており、次のようになっています: /news/test-slug-news-story

しかし、それをクリックすると、「NewsController にメソッドがありません」というエラー メッセージが表示されます。

私が見逃しているのは明らかですか?これを見るには長すぎます。

ありがとう、ポール

4

2 に答える 2

0

これを試すことができます:

<?php
// Routing code
Router::connect('/news/:slug/', 
    array(
        'controller' => 'news', 
        'action' => 'view'
    ), 
    array(
       'slug' => '[a-zA-Z0-9_-]+'
    )
);
?>

<?php 
// HTML Link code.    
echo $this->Html->link(
    $news['News']['title'], 
    array(
        'controller' => 'news',
        'action' => 'view',
        'slug' => $news['News']['slug']
    )
); 
?>

それがあなたのために働いていない場合は、私に知らせてください:)

ありがとう

于 2013-10-07T10:38:49.403 に答える