承接 yasiekz/router-bundle 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

yasiekz/router-bundle

最新稳定版本:1.0.3

Composer 安装命令:

composer require yasiekz/router-bundle

包简介

Bundle that provides aviability of generating URL address to objects instead of giving route name and route parameters

README 文档

README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

Bundle that provides aviability of generating URL address to objects instead of giving route name and route parameters

Instalation

Add bundle in your AppKernel.php

$bundles = array(
                new Yasiekz\RouterBundle\YasiekzRouterBundle(),
            )

Bundle automatically overrides default symfony2 routing service.

Additional Configuration

There is no additional configuration required.

What interface should I use?

We have two interfaces avaiable. The RoutableCmsInterface is useful when you want to have more than one routing per object for example in CMS systems, where you might want to have diffrent routing for edit, delete object. The RoutableFrontInterface is useful for websites when there is only only one routing per object, but one object might have many routes depends on for example category that object belongs. TheRoutableMultiFrontStrategy is combo of both interfaces.

Usage:

RoutableCmsInterface

use Yasiekz\RouterBundle\Service\RoutableCmsInterface;

class YourClass implements RoutableCmsIterface
{
    public function getPossibleRoutes()
    {
        // method should return an array of aviable routes as below
        return array(
            'destination1' => 'routingName1',
            'destination2' => 'routingName2'
        );
    }

    public function getRouterParameters($routeName, $destination = null);
    {
        // method should return parameters that is necessary to create routing depend on $destination parameter:
        return array(
            'id' => $this->getId()
        );
    }
}

The URL is generated as same as default in Symfony2.

From controller:

$object = new YourClass();
$url = $this->generateUrl($object, 'edit');

The example above generates indirect address to object $object for destination 'edit'

From twig:

{{ path(object, 'edit') }}

RoutableFrontInterface

Usage

use Yasiekz\RouterBundle\Service\RoutableFrontInterface;

class YourClass implements RoutableFrontIterface
{
    public function getRouteName()
    {
        // method should return routeName for given object
        return 'yourclass_detail';
    }

    public function getRouterParameters($routeName, $destination = null);
    {
        // method should return parameters that is necessary to create routing depend on $routeName parameter:

        return array(
            'id' => $this->getId()
        );
    }
}

The URL is generated as same as default in symfony2.

From controller:

$object = new YourClass();
$paramers = array(); // here might be additional params which be marged to routing
$url = $this->generateUrl($object, $parameters);

The example above generates indirect address to object $object without transmission any additional params. Will be taken only params from getRouterParameters() method from class YourClass.

From Twig:

{{ path(object, { 'param1': value1, 'param2': value2 }) }}

RoutableMultiFrontInterface

Usage

use Yasiekz\RouterBundle\Service\RoutableMultiFrontInterface;

class YourClass implements RoutableMultiFrontInterface
{
    const DESTINATION_ARTICLE = 'article';

    public function getRouteName($parameters = array(), $destination = null)
    {
        // method should return routeName for given object and parameters or destination
        if ($destination == self::DESTINATION_ARTICLE) {
            return 'yourclass_detail';
        }
        return 'yourclass_default';
    }

    public function getRouterParameters($routeName, $destination = null);
    {
        // method should return parameters that is necessary to create routing depend on $routeName parameter:

        return array(
            'id' => $this->getId()
        );
    }
}

The URL is generated as same as default in symfony2.

From controller:

$object = new YourClass();
$parameters = array('destination' => 'article'); // here might be additional params which be marged to routing
$url = $this->generateUrl($object, $parameters);

The example above generates indirect address to object $object with transmission destination param, and merge this param with getRouterParameters() method from class YourClass

From Twig:

{{ path(object, { 'destination': 'article', 'param1': value1, 'param2': value2 }) }}

Important

There is no possibility that the one class implements all interfaces at the same time.

Contrubution

You are highly encouraged to participate in the development. The terms are the same as the symfony2 http://symfony.com/doc/current/contributing/code/patches.html

统计信息

  • 总下载量: 875
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2014-12-27