happyr / blaze-bundle
Write down your routing mapping at one place
Installs: 7 303
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 2
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^7.2
- symfony/config: ^4.4 || ^5.0
- symfony/dependency-injection: ^4.4 || ^5.0
- symfony/http-kernel: ^4.4 || ^5.0
- symfony/routing: ^4.4 || ^5.0
- symfony/yaml: ^4.4 || ^5.0
- twig/twig: ^2.1 || ^3.0
Requires (Dev)
- matthiasnoback/symfony-config-test: ^4.1
- nyholm/symfony-bundle-test: ^1.6.1
- symfony/framework-bundle: ^4.4 || ^5.0
- symfony/phpunit-bridge: ^4.4 || ^5.0
README
This bundle lets you configure dynamic routes. A piece of code explains the benefit:
// Generate the path /blog-post/{post_id}/comment/{comment_id}/edit <a href="{{ path('edit_comment', {'comment_id':comment.id, 'post_id':comment.post.id}) }}">Click here</a> <a href="{{ comment|blaze('edit') }}">Click here</a>
Installation
Step 1: Using Composer
$ composer require happyr/blaze-bundle
Step 2: Register the bundle
To register the bundles with your kernel:
// in AppKernel::registerBundles() $bundles = array( // ... new Happyr\BlazeBundle\HappyrBlazeBundle(), // ... );
Step 3: Configure the bundle
# app/config/config.yml happyr_blaze: objects: Acme\DemoBundle\Entity\Foo: edit: route: 'foo_edit' parameters: {id:'getId'} show: route: 'foo_show' parameters: {id:'getId'} Acme\DemoBundle\Entity\Bar: show: route: 'bar_show' parameters: {id:'getId'} Acme\DemoBundle\Entity\Baz: anything: route: 'baz_show' parameters: {id:'getId', foo_id:'getFoo.getId'} #if you need support for routes where the objects have no relation: Acme\DemoBundle\Entity\FooBar: manage: route: 'foobar_manage' parameters: [{id: 'getId'}, {baz_id: 'getId', baz_name: 'getName'}, {bazbar_id: 'getSlug'}] complementaryObjects: ["Acme\DemoBundle\Entity\Baz", "Acme\DemoBundle\Entity\BazBar"]
Usage
Twig
{# foo is a Foo object #} <a href="{{ foo|blaze('show') }}">Show Foo</a> {# baz is a Baz object #} <a href="{{ baz|blaze('anything') }}">Show Baz</a> {# and the multiple objects .. #} <a href="{{ [foobar,baz,bazbar]|blaze('manage') }}">Show Baz</a>
PHP
use Happyr\BlazeBundle\Service\BlazeManagerInterface; class MyController { private $blaze; public function __construct(BlazeManagerInterface $blaze) { $this->blaze = $blaze; } public function SomeAction() { $blaze = $this->get(BlazeManagerInterface::class); $showUrl = $blaze->getPath($foo, 'show'); $manageUrl = $blaze->getPath($foobar, 'show', array($baz, $bazbar)); // ... } }