josegonzalez / cakephp-dynamic-route
为 cakephp 自动生成数据库支持的动态路由
Requires
This package is auto-updated.
Last update: 2024-08-29 04:19:52 UTC
README
DynamicRoute 插件(适用于 CakePHP 2.0)
快速方便地从数据库中读取路由到 routes.php
背景
正如我构建的其他路由类一样,有人在IRC上问我是否可以从数据库中读取路由并动态加载到app/Config/routes.php
文件中。我决定这是可行的,这就是结果。
要求
- PHP 5.2+
- CakePHP 2.0
安装
[使用 Composer]
将插件添加到项目的 composer.json
文件中 - 例如:
{
"require": {
"josegonzalez/cakephp-dynamic-route": "1.0.0"
}
}
由于此插件在其自己的 composer.json
中设置了类型 cakephp-plugin
,所以 composer 知道将其安装到您的 /Plugins
目录中,而不是常规的 vendors 文件中。建议您将 /Plugins/DynamicRoute
添加到您的 .gitignore 文件中。(为什么?阅读此内容。)
[手动]
- 下载此内容:https://github.com/josegonzalez/cakephp-dynamic-route/zipball/master
- 解压下载的内容。
- 将生成的文件夹复制到
app/Plugin
- 将您刚刚复制的文件夹重命名为
DynamicRoute
[GIT Submodule]
在您的应用目录中输入:
git submodule add git://github.com/josegonzalez/cakephp-dynamic-route.git Plugin/DynamicRoute
git submodule init
git submodule update
[GIT Clone]
在您的插件目录中输入:
git clone git://github.com/josegonzalez/cakephp-dynamic-route.git DynamicRoute
启用插件
在 2.0 中,您需要在 app/Config/bootstrap.php
文件中启用插件
CakePlugin::load('DynamicRoute');
如果您已经使用了 CakePlugin::loadAll();
,则此步骤不是必需的。
用法
在您的 app/Config/routes.php
文件底部附近,在加载默认路由的行之前,添加以下内容:
App::uses('FancyRoute', 'DynamicRoute.Lib'); FancyRoute::connectFancyRoutes();
您现在可以从您的 app/Config/routes.php
文件中删除所有其他 hack。
我们启用的是在数据库中创建 spec|slug
路由。一个 spec
将是 CakePHP 内部映射,如 posts/view?id=45
或 events/calendar?date=2011-11-01&category=lol
,而相应的 slugs
可能是类似 /why-isnt-this-pup-asleep
或 /manchester/cakephp-developers-dance-to-beyonce
的事物。
此 spec|slug
系统允许在需要时跨多个模型和控制器使用专门的表来处理路由 - 默认为 dynamic_routes
表。它允许开发者为非开发者创建一个简单界面来构建内部应用程序路由,这些路由可以在以后使用。这对于构建需要 Joomla 或 Wordpress 类似路由系统的内容管理系统非常有用。
选项
FancyRoute::connectFancyRoutes()
接受一个可选数组来配置路由加载
model
: 字符串或对象,引用要用于加载记录的 CakePHP 模型。- 默认:(string)
DynamicRoute.DynamicRoute
- 注意:要加载的模型必须有一个返回 spec 到 slug 映射的
load
自定义查找方法
- 默认:(string)
cacheKey
: 用于将动态路由缓存在磁盘上的键- 默认:(string)
dynamic_routes
- 默认:(string)
cache
: 是否缓存数据库查询- 默认:(boolean) true
注意
由于此类的工作方式,对于任何动态路由,无需调用 Router::connect()
,因为这是由 FancyRoute
类内部调用的。
DynamicRoute
模型包含将给定规范转换为内部 cakephp 请求的方法,无论是字符串还是数组。
您目前必须自己创建有效的 spec|slug
记录。Slugs 应该以 /
字符开头,但不应该以它结尾。Specs 是常规网络请求,$_GET
样式。
在 DynamicRoute
模型上有一个名为 saveNew()
的辅助方法;此方法接受一个 spec
和 slug
,或数据数组,并返回保存是否成功。它还将尽可能确保数据被正确设置,通过规范化规范并确保 slug 格式正确。
待办事项
- 单元测试
- 创建新动态路由的后端 UI
创建新动态路由的辅助模型方法移植到 2.0
许可证
版权所有 (c) 2011 Jose Diaz-Gonzalez
在此特此授予任何人获得本软件及其相关文档文件(“软件”)副本(“软件”)的权利,免费处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许将软件提供给其他人以这样做,但受以下条件约束:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的,包括但不限于适销性、适用于特定目的和不侵权保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论该责任是基于合同、侵权或其他原因,以及与软件、软件的使用或以其他方式使用软件有关。