我继承了一个Yii2应用程序来维护,虽然我使用普通的PHP和Laravel,但我对这个框架了解不够。因此,我有时会感到非常没有安全感和困惑。
例如,应用程序分别管理后端和前端,就好像它是一个多站点应用程序一样。
在前端,
urlManager
中有一个config/main.php
数组,其中定义了所有公共路由。
另一方面,后端位于子域中,并且任何配置文件中都没有路由定义(
/common/config/*
或/backend/config/*
),所以我无法理解如何为该区域生成新路由。
所以我需要为后端区域创建一组新的路线,但我不知道如何实现它
应用程序树如下
├── backend
│ ├── assets
│ │ └── resources
│ ├── components
│ │ ├── SupplierController.php
│ │ ├── SupplierDetailViewer.php
│ │ ├── WebController.php
│ │ └── views
│ ├── config
│ │ ├── bootstrap.php
│ │ ├── main-local.php
│ │ ├── main.php
│ │ ├── params-local.php
│ │ └── params.php
│ ├── controllers
│ │ ├── ...
│ │ ├── SiteController.php
│ │ ├── SupplierController.php
│ │ ├── TermsOfUseController.php
│ │ ├── UserController.php
│ │ └── base
│ ├── gii
│ │ └── SupplierWorkGiiantCRUD.json
│ ├── models
│ │ ├── ...
│ │ └── SupplierUserAccessReportForm.php
│ ├── runtime
│ │ ├── CSS
│ │ ├── HTML
│ │ ├── URI
│ │ ├── cache
│ │ └── logs
│ ├── views
│ │ ├── ...
│ │ ├── layouts
│ │ ├── site
│ │ ├── supplier
│ │ ├── supplier-user
│ │ ├── user
│ │ └── ...
│ └── web
│ ├── assets
│ ├── cropper
│ ├── favicon.ico
│ ├── images
│ ├── index.php
│ └── robots.txt
├── common
│ ├── components
│ │ ├── CDNCalculator.php
│ │ ├── HighCharts.php
│ │ ├── LanguageSelector.php
│ │ └── Yii.php
│ ├── config
│ │ ├── bootstrap.php
│ │ ├── main-local.php
│ │ ├── main.php
│ │ ├── messages.php
│ │ ├── params-local.php
│ │ └── params.php
│ ├── gii
│ │ ├── ...
│ │ ├── admin_settingGiiantModel.json
│ │ ├── tSupplierGiiantModel.json
│ │ └── ...
│ ├── interfaces
│ │ └── ...
│ ├── models
│ │ ├── ...
│ │ ├── Supplier.php
│ │ ├── SupplierWork.php
│ │ ├── TSupplier.php
│ │ ├── User.php
│ │ ├── UserHasProveedorSupportTicketCategory.php
│ │ ├── base
│ │ ├── query
│ │ ├── search
│ │ └── validators
│ └── widgets
│ ├── ...
│ ├── GMapInput.php
│ ├── OneScroll.php
│ ├── gmapinput
│ ├── onescroll
│ └── views
├── composer.json
├── console
│ ├── config
│ │ ├── bootstrap.php
│ │ ├── main-local.php
│ │ ├── main.php
│ │ ├── params-local.php
│ │ └── params.php
│ ├── controllers
│ │ ├── CropperMantainerController.php
│ │ ├── ExportController.php
│ │ ├── FakeDataController.php
│ │ ├── ImportController.php
│ │ └── nohup.out
│ ├── models
│ └── runtime
│ ├── cache
│ └── logs
├── docker-compose.yml
├── environments
│ ├── dev
│ │ ├── backend
│ │ ├── common
│ │ ├── console
│ │ ├── frontend
│ │ └── yii
│ ├── dev-docker
│ │ ├── backend
│ │ ├── common
│ │ ├── console
│ │ ├── frontend
│ │ └── yii
│ ├── index.php
│ ├── prod
│ │ ├── backend
│ │ ├── common
│ │ ├── console
│ │ ├── frontend
│ │ └── yii
│ └── test
│ ├── backend
│ ├── common
│ ├── console
│ ├── frontend
│ └── yii
├── frontend
├── init
├── init.bat
├── nginx
│ ├── backend
│ ├── frontend
│ └── nginx.conf
├── yii
└── yii.bat
在 Yii 2 中,
urlManager
中没有 backend/config/main.php
配置并不意味着 urlManager
没有被使用。这只是意味着它使用默认设置。
如果您愿意,您可以简单地在
urlManager
的 components
部分添加 backend/config/main.php
配置数组。
但在大多数情况下,使用默认设置的
urlManager
组件对于后端来说就足够了,因为不需要为 SEO 优化 url。
在默认设置中,
urlManager
期望规则的格式如下:
backend.domain.example/index.php?r=<route>
路线可以采用如下格式:
<controller>/<action>
<controller>/<action>/<id>
<module>/<controller>/<action>
<module>/<controller>/<action>/<id>
只要您的路由遵循这些模式,您就不需要为每个控制器/操作显式声明路由。