【问题标题】:CakePHP Routing assistanceCakePHP 路由帮助
【发布时间】:2010-10-12 07:48:31
【问题描述】:

我有一个用户模块和一些操作,如墙、菜肴、餐馆、照片。

我想设置类似这样的路由

site.com/users/**{userId or Username}**/wall  => *should route to wall() action*

site.com/users/**{userId or Username}**/dishes => *should route to dishes() action*

site.com/users/**{userId or Username}**/restaurants => *should route to restaurants() action*

site.com/users/**{userId or Username}**/photos => *should route to photos() action*

我不确定如何在地址栏中保持 url 完整,但加载操作.. 将用户 ID 或用户名传递到操作的位置。

【问题讨论】:

    标签: cakephp routing url-routing cakephp-1.3


    【解决方案1】:

    试试:

    Router::connect(
        '/users/:id/:action',
        array(
          'controller' => 'users'
          'id' => '[0-9]+') # or [a-zA-Z0-9] for username
    );
    

    在那些动作(墙壁、盘子...)中,您还需要添加:

    $id = $this->params['id'];
    

    【讨论】:

    【解决方案2】:

    http://bakery.cakephp.org/articles/view/cakephp-s-routing-explained

    <?php
    Router::connect(
        '/writings/:username/:action/:id/*', 
        array(
            'controller' => 'articles'
        ),
        array(
            'pass' => array(
                'id',
                'username'
            )
        )
    );
    ?> 
    

    有了这条路线,CakePHP 就会像 $Controller->show(69, 'phally') 这样调用你的动作,然后你的动作应该如下所示:

    <?php
    public function show($id = null, $username = null) {
        // $id == 69;
        // $username == 'phally';
    }
    ?> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 2011-08-17
      相关资源
      最近更新 更多