1

URLを正しく機能させるのに少し問題があります。

URLは次のようになります:/ messages / from / 1 / page / 5

私のルートはこんな感じ

$router->addRoute('messages-from',
    new Zend_Controller_Router_Route('messages/from/:user_id/:page', array(
    'controller' => 'messages',
    'action' => 'from',
    'page' => 1
))
);

これは問題なく動作します。しかし、URLには/page/の部分がありません。追加した場合:

'messages/from/:user_id/page/:page'

その後、それは壊れ、user_idパラメータは常にnullになります。

どうすればこれを修正できますか?

ありがとう!

4

1 に答える 1

2

URLからその部分を除外できるようにしたいので、/page/2つの別々のルートを定義する必要があります。1つはユーザーIDとページのパラメーターに一致し、もう1つはページのないユーザーIDにのみ一致して、ルーターがルートを見つけられるようにします。どちらの場合も一致します。

または、このregexベースのルートはどちらの場合も機能します。

$route = new Zend_Controller_Router_Route_Regex(
    'messages/from/(\d+)(?:/page/(\d+)/?)?',
    array(
        'controller' => 'messages',
        'action'     => 'from',
        'page'       => 1,
    ),
    array(
        1 => 'from',
        2 => 'page',
    )
);

$router->addRoute('messages-from', $route);

指定したURLに基​​づいて、正規表現でfromパラメーターが整数であると想定しました。文字列を渡すことができる場合は、(\d+)パターンをのようなより適切なものに変更する必要があります([\w\d_-\.]+)

于 2012-09-24T19:24:15.080 に答える