【问题标题】:Yii2 route config if controller inside folder?Yii2路由配置如果控制器在文件夹中?
【发布时间】:2022-01-04 03:44:46
【问题描述】:

此图像是我的 yii2 项目结构,我已经配置了访问这些控制器的路由,控制器文件夹顶层控制器的一些路由运行良好(绿色),但在子文件夹内的控制器中不起作用(红色)。

目标

网址(绿色):/{storeId}/{controller}/{action} -> 运行良好

URL(红色):/{storeId}/{folder}/{controller}/{action} -> 不工作(显示未找到消息)

如何解决这个问题?,我不知道并且已经在谷歌上搜索但没有运气。 提前致谢。

已解决

    '<module:(product|report)>/<controller>/<id:\d+>' => '<module>/<controller>/view',
    '<module:(product|report)>/<controller>/<action>/<id:\d+>' => '<module>/<controller>/<action>',
    '<module:(product|report)>/<controller>/<action>' => '<module>/<controller>/<action>',

【问题讨论】:

  • 你的问题解决了吗?
  • 是的,它已经解决了,我已经用解决代码编辑了我的问题。顺便说一句,感谢回答
  • 太棒了。你能赞成我的回答吗?我建议也使用模块。谢谢。

标签: routes controller yii2


【解决方案1】:

Yii 的约定是所有控制器都存放在同一个目录中,即controllers,不能使用子目录。但是您可以使用模块。在您的目录结构中:

...
controllers
models
modules
  product
    controllers
      InboundController.php
      OutboundController.php
    models
    Module.php
    views
  report
    controllers
      PurchaseController.php
      SalesController.php
      StockController.php
    models
    Module.php
    views
runtime
...

Yii documentation。配置 Module.php,按照那里的描述进行引导。

您可以在您的 routes.php 中使用以下路由:

'<store:\w+>/<module:\w+>/<controller:[\w\-]+>/<action:[\w\-]+>' => '<module>/<controller>/<action>'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2013-09-21
    • 1970-01-01
    • 2020-10-13
    • 2012-12-06
    相关资源
    最近更新 更多