makallio85 / yaml-route
使用简单的YAML文件配置路由
Requires
- php: >=5.4.16
- cakephp/cakephp: >=3.0.0
- cakephp/plugin-installer: *
- symfony/yaml: ~2.6
Requires (Dev)
- phpunit/phpunit: ~4.0
- satooshi/php-coveralls: ^1.0
This package is auto-updated.
Last update: 2024-09-15 05:44:32 UTC
README
Yaml-route提供了使用简单的YAML文件来配置CakePHP 3路由的可能性。这基本上只是对CakePHP核心路由的封装,它解析YAML文件并正确调用Cake\Core\Router
。
主要目标不是实现CakePHP 3路由提供的所有花哨特性,只是实现真正需要的那些。当然,这取决于开发者,所以请随意分叉并提交你自己的代码。
安装
composer require makallio85/yaml-route
用法
- 将
config/routes.php
文件中的所有内容替换为单个方法调用makallio85\YamlRoute\Generator::getInstance()->run()
- 通过调用
makallio85\YamlRoute\Plugin::getInstance()->load($plugin, $options)
方法加载所有插件。此方法基本上是对Cake\Core\Plugin::load()
方法的封装。请注意,Cake\Core\Plugin::loadAll()
方法不受支持,并且所有插件应逐个加载。 - 将您的自定义路由添加到项目的
routes.yml
文件以及所需的插件中。
关于路由配置
每个路由都会自动以其键命名。根路由应按约定命名为root。路由可以包含路径和配置键。路径始终是字符串,但配置可以是引用另一个包含路由配置的YAML文件的字符串。外部路径的语法是"PluginName.RouteFileNameWithoutExtension"。所有路由配置都应放在项目的配置文件夹或插件的配置文件夹中。
路由还可以包含子路由,它们定义在config.routes
键内
config
键可以包含以下键
请注意,子路由不能包含路由,因此子路由的config.routes
不可用。
示例
基本路由
config/routes.yml
如下
root:
path: /
转换为这样
\Cake\Routing\Router::scope('/', [], function ($routes) { $routes->fallbacks('DashedRoute'); }); \Cake\Core\Plugin::routes();
插件路由
plugins/PluginCars/config/routes.yml
如下
cars:
path: /cars
config:
plugin: PluginCars
controller: Cars
action: index
extensions:
- json
- xml
routes:
bmws_list:
path: /bmws
config:
controller: Bmws
bmws_view:
path: /bmws/{id}
config:
_method: GET
controller: Bmws
action: view
validate:
id: '[0-9]+'
bmws_add:
path: /bmws/add
config:
_method: POST
controller: Bmws
action: add
ladas:
path: /ladas
config:
controller: Ladas
转换为这样
\Cake\Routing\Router::plugin('PluginCars', ['path' => '/cars'], function ($routes) { $routes->extensions(['0' => 'json', '1' => 'xml']); $routes->connect('/', ['plugin' => 'PluginCars', 'controller' => 'Cars', 'action' => 'index'], ['_name' => 'cars']); $routes->connect('/bmws', ['controller' => 'Bmws'], ['_name' => 'bmws_list']); $routes->connect('/bmws/:id', ['_method' => 'GET', 'controller' => 'Bmws', 'action' => 'view'], ['_name' => 'bmws_view', 'pass' => ['0' => 'id'], 'id' => '[0-9]+']); $routes->connect('/bmws/add', ['_method' => 'POST', 'controller' => 'Bmws', 'action' => 'add'], ['_name' => 'bmws_add']); $routes->connect('/ladas', ['controller' => 'Ladas'], ['_name' => 'ladas']); $routes->fallbacks('DashedRoute'); }); \Cake\Core\Plugin::routes();
调试
如果您想调试生成的路由,可以在调用makallio85\YamlRoute\Generator::getInstance()->run(true)
时将debug参数设置为true。之后,您可以通过调用makallio85\YamlRoute\Generator::getInstance()->getDump()
来获取执行调用。
待办事项
- 添加对真实继承的支持,允许子路由包含子路由
添加测试添加更多测试- 重构类
添加对扩展的支持改进异常处理
许可
MIT许可(MIT)
版权所有 (c) 2016 makallio85
特此授予任何人免费获取此软件及其相关文档文件(“软件”)副本的权限,用于不受限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向提供软件的人授予这样做,前提是满足以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何形式的保证,无论是明确的还是隐含的,包括但不限于适销性、适用于特定目的和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他原因,以及与软件或软件的使用或其他方式有关或相关。