【问题标题】:yii rewrite url with many sub categoriesyii 用许多子类别重写 url
【发布时间】:2014-07-08 02:29:20
【问题描述】:

我在 yii 工作时遇到问题: 我想做一个这样的网址:

http://domainabc.com/catalog/cat1/cat2/cat3....?sort=name&limit=10&brand=....

指向控制器:CatalogController, action Index

url只是说cat1是父级,cat2是cat3的父级。

所以在这个动作中它只获取最后一个类别的产品(例如cat3)

但目前我不知道让最后一只猫得到产品的最佳方法是什么。

错误:

“系统找不到请求的动作'cat1'”

我们必须使用/ 来分隔每个类别。

【问题讨论】:

    标签: yii url-rewriting many-to-one


    【解决方案1】:

    您需要澄清一些事情,这个类别列表是固定的(您总是有 3 个级别的类别,不少于或更多)还是这个类别列表是动态的。 如果你有固定的类别列表,你可以像这样轻松设置 Yii url 规则:

    'catalog/<cat1:\w+>/<cat2:\w+>/<cat3:\w+>' => 'catalog/myAction'
    

    或多一点动态:

    '<controller:\w+>/<cat1:\w+>/<cat2:\w+>/<cat3:\w+>' => '<controller>/list'
    

    如果您希望捕获动态类别列表,我和我的团队通常会使用我们命名为 SeoBehavior 的东西。我们将此行为附加到表示类别内容的模型上,并在保存此行为时根据此内容所属的类别列表构建 url 路径并将其保存到 seo 数据库表中(我们保留有关模型名称和模型 ID 的信息,并且还可以其他一些有用的配置参数)。 比在您的 url 规则中,您可以添加如下内容:

    '<url:[a-z0-9\-_\.\/]+>' => 'myController/myAction'
    

    只有你需要像列表中的最后一个一样保留这条规则,因为它会捕获所有内容。在此操作中,您获取此“url”参数并搜索 seo 数据库表以获取记录,并从该记录中您可以看到模型名称及其 id 是什么,因此您可以加载正确的内容。

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多