当 'urlManager' 数组不存在时,如何在 Yii2 中管理路由?

问题描述 投票:0回答:1

我继承了一个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

php yii2
1个回答
0
投票

在 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>

只要您的路由遵循这些模式,您就不需要为每个控制器/操作显式声明路由。

© www.soinside.com 2019 - 2024. All rights reserved.