piotrpasich/cakephp-symfony-router

为cackePhp设计的symfony路由器

dev-master 2014-08-11 19:36 UTC

This package is not auto-updated.

Last update: 2024-09-24 07:12:01 UTC


README

CakephpSymfonyRouter是一个插件,可以扩展默认路由器的使用方式。它提供了三个新特性:

  • 添加命名路由
  • 操作匹配路由的参数
  • 只有当路由符合给定条件时才匹配

要求

  • CakePHP 2.x(已在2.4和2.5上测试,但应适用于所有2.x版本)
  • PHP 5.3或更高版本(应能在5.2上运行,但未进行测试)
  • composer

安装

使用Composer

将插件添加到项目的composer.json文件中,例如:

{
    "require": {
        "piotrpasich/cakephp-symfony-router": "dev-master"
    }
}

然后你需要安装供应商

cd app/Plugins/CakephpSymfonyRouter
composer install

因为这个插件在其自己的composer.json文件中设置了类型为cakephp-plugin,所以Composer知道将其安装在你项目的/Plugins目录中,而不是在通常的供应商文件中。建议你将/Plugins/PowerRouter添加到你的.gitignore文件中。为什么?阅读这个

手册

GIT子模块

在你的app目录中输入

git submodule add git://github.com/piotrpasich/cakephp-symfony-router.git plugins/CakephpSymfonyRouter
git submodule init
git submodule update

GIT Clone

在你的插件目录中输入

git clone git://github.com/piotrpasich/cakephp-symfony-router.git CakephpSymfonyRouter

使用方法

CakephpSymfonyRouter是一个扩展了CakeRoute的定制路由类。这样,你可以使用它来定义路由并利用其特性。使用它将使你在CakePHP中使用路由比现在更容易。

为了使用CakephpSymfonyRouter的特性,首先需要在你的app/Config/bootstrap.php文件中添加以下行来加载插件:

//app/Config/bootstrap.php
App::build(array('Plugin' => array(ROOT . '/Plugin/')));
CakePlugin::load('CakephpSymfonyRouter');

然后,将库导入到你的app/Config/routes.php文件中,如下所示:

//app/Config/routes.php
App::uses('SymfonyRouter', 'CakephpSymfonyRouter.Lib');
App::uses('RouterYmlConfiguration', 'CakephpSymfonyRouter.Lib');

$routerYmlConfiguration = new RouterYmlConfiguration(APP . 'Config' . DS . 'router.yml');
$symfonyRouter = new SymfonyRouter($routerYmlConfiguration);

之后,你可以在app/Config/router.yml文件中创建自己的文件,如下所示:

home:
    path:      /
    defaults:  { controller: Home,  action: index }
blog:
    path:      /blog
    defaults:  { controller: Blog,  action: index }
blog_post:
    path:      /blog/{slug}
    defaults:  { controller: Blog,  action: post }

在模板视图中进行路由匹配

为了在你的视图文件中使用此插件并生成URL,你需要在控制器中添加一个Helper,如下所示:

//app/Controller/BlogController
class BlogController extends AppController
{

    public $helpers = array('CakephpSymfonyRouter.SymfonyRouter');

    /** ... **/
}

然后你可以在视图中生成你的URL

//app/View/Blog/index

<?php echo $this->SymfonyRouter->getPath('blog_post', array('slug' => $post->getSlug())); ?>
<a href="<?php echo $this->SymfonyRouter->getPath('blog_post', array('slug' => $post->getSlug())); ?>"><?php echo $post->getSlug() ?></a>

#更多信息

有关如何在https://symfony.com.cn/doc/current/book/routing.html中工作,你可以找到更多关于Symfony路由的信息。

此插件主要是Symfony路由包和CakePHP框架之间的桥梁。

许可

MIT许可(MIT)

版权所有(c)2014 Piotr Pasich

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

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

本软件按照“原样”提供,不提供任何形式的保证,无论是明示还是暗示,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论该责任产生于合同行为、侵权或其他与软件的使用或其他相关行为有关的行为。