makallio85/yaml-route

使用简单的YAML文件配置路由

1.0.6 2016-06-09 06:15 UTC

This package is auto-updated.

Last update: 2024-09-15 05:44:32 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License Build Status Coverage Status

Yaml-route提供了使用简单的YAML文件来配置CakePHP 3路由的可能性。这基本上只是对CakePHP核心路由的封装,它解析YAML文件并正确调用Cake\Core\Router

主要目标不是实现CakePHP 3路由提供的所有花哨特性,只是实现真正需要的那些。当然,这取决于开发者,所以请随意分叉并提交你自己的代码。

安装

composer require makallio85/yaml-route

用法

  1. config/routes.php文件中的所有内容替换为单个方法调用makallio85\YamlRoute\Generator::getInstance()->run()
  2. 通过调用makallio85\YamlRoute\Plugin::getInstance()->load($plugin, $options)方法加载所有插件。此方法基本上是对Cake\Core\Plugin::load()方法的封装。请注意,Cake\Core\Plugin::loadAll()方法不受支持,并且所有插件应逐个加载。
  3. 将您的自定义路由添加到项目的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

特此授予任何人免费获取此软件及其相关文档文件(“软件”)副本的权限,用于不受限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向提供软件的人授予这样做,前提是满足以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何形式的保证,无论是明确的还是隐含的,包括但不限于适销性、适用于特定目的和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他原因,以及与软件或软件的使用或其他方式有关或相关。