【问题标题】:Retaining parent slugs in CakePHP在 CakePHP 中保留父 slug
【发布时间】:2011-11-29 16:04:36
【问题描述】:

我正在尽可能高效地在 CakePHP 中尝试对 SEO 友好的 URL,我已经设法使用当前格式,每个示例都使用函数 view($slug),除了第一个使用函数 index() 的示例。

/类别/

/类别/书籍/

/categories/books/it-and-computing/

但是,如果 IT 和计算有一个子类别“Web 开发”呢?我希望 URL 变为:

/categories/books/it-and-computing/web-development/

如果不创建太多路线,我不确定如何做到这一点。到目前为止,这是我的路线代码:

Router::connect('/categories/', array('controller' => 'categories', 'action' => 'index'));

Router::connect('/categories/:slug', 数组('控制器' => '类别','动作' => '视图'), 数组('pass' => 数组('slug')) );

Router::connect('/categories/:parent/:slug', 数组('控制器' => '类别','动作' => '视图'), 数组('通过' => 数组('父','slug')) );

任何帮助将不胜感激

亲切的问候

斯蒂芬

【问题讨论】:

    标签: cakephp routes cakephp-1.3 slug custom-routes


    【解决方案1】:
    // in routes.php
    Router::connect('/categories/:row:lastslash',array('controller' => 'settings', 'action' => 'show',),array(
          'pass'=>array('row'),
          'row'=>'.*?',
          'lastslash'=>'\/?'
    ));
    
    //in controller
    function show($row = ""){
      if($row){
        $categories = split('/',$row);
    
        ?><pre><? print_r($categories);?></pre><?die();
      }else{
        die('do something else');
      }
    }
    

    /categories/books/computing/web-development/cakephp/

    结果:

    Array
    (
        [0] => books
        [1] => computing
        [2] => web-development
        [3] => cakephp
    )
    

    /类别/

    结果:

    do something else
    

    /类别/书籍

    结果:

    Array
    (
        [0] => books
    )
    

    【讨论】:

    • 我也希望这个问题能得到更多的答案。适用于 n 级子类别的东西。
    • 以上行不通,我想你误解了这个问题。网站需要保留 URL 中的完整历史记录,有点像面包屑。 /categories/books/computing/web-development/cakephp/等
    • 这看起来正是我要找的东西,我现在不能尝试,但我稍后会尝试。非常感谢 sukinsan :) 我会“投票”你,但我对这个网站太陌生了。干杯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2013-10-04
    • 2020-11-25
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多