我在yii工作有问题: 我想制作一个这样的网址:
http://domainabc.com/catalog/cat1/cat2/cat3....?sort=name&limit=10&brand=....
它指向控制器:CatalogController,动作索引
网址只是说cat1是父级,cat2是cat3的父级。
所以在这个动作中它只是获得最后一个类别的产品(例如cat3)
但目前我不知道让最后一只猫获得产品的最佳方式是什么。
错误:
"系统无法找到请求的操作' cat1'"
我们必须使用/
来分隔每个类别。
答案 0 :(得分:0)
您需要清除一些内容,这个类别列表是否已修复(您将始终拥有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:[a-z0-9\-_\.\/]+>' => 'myController/myAction'
只有你需要保持这个规则像列表上的最后一样,因为它会捕获所有内容。在这个行动中,你得到这个&#39; url&#39;参数和搜索seo数据库表来获取记录,从该记录中你可以看到什么是模型名称及其ID,以便你可以加载正确的内容。
我希望这有帮助。