Skip to content
This repository has been archived by the owner on Mar 10, 2018. It is now read-only.

rande/swCrossLinkApplicationPlugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cross Application Routing

This plugin allows to transparently used routes defined in other applications with no performance overhead or without loading applications' sfContext .

Usage :

  • From the frontend application, you can link back to the edit form

      [php]
      <?php if($sf_user->isSuperAdmin()):?>
          <?php link_to('Edit Blog Post', '@backend.edit_post?id='.$blog->getId()) ?>
      <?php endif ?>
    
  • Even better, if the edit_post route does not exists in the frontend, then the backend one is used

      [php]
      <?php if($sf_user->isSuperAdmin()):?>
          <?php link_to('Edit Blog Post', '@edit_post?id='.$blog->getId()) ?>
      <?php endif ?>
    

Installation

  • Enable the feature, edit your app.yml

      [yml]
      all:
        swToolbox:
          cross_link_application:
            frontend:
              autoregister: true
              enabled: true                         # enable the feature
              load:
                backend:
                  routes:                         # routes to load, leave empty will load all the routes
                    - homepage
                    - edit_blog
                  env:                            # define the environment
                    dev: rabaix.net/backend.php   # define the full path for the dev environment
                    prod: rabaix.net/backend      # define the full path for the prod environment
    
            backend:
              autoregister: true
              enabled: true
              load:
                frontend:
                  routes:
                    - homepage
                    - edit_blog
                  env:
                    dev: rabaix.net/frontend_dev.php
                    prod: rabaix.net
    
  • Edit your factories.yml

      [yml]
      all:
        routing:
          class: swPatternRouting
    
  • In your frontend's template, you can access to a backend route like this

      [php]
      <?php link_to('Edit Blog Post', '@backend.edit_post?id='.$blog->getId()) ?>
    
  • that's all !!

Autoregister

The autoregister option load the route dynamically, this add a small overhead. You can speed up thing by setting the autoregister to false and add routes definition in the routing.yml file.

    [yml]
    # encapsulated route
    backend.edit_blog:
      url: /blog/edit/:id
      class: swEncapsulateRoute
      options:
        encapsulated:
          name: backend.edit_blog

Troubleshooting

How to check that externals routes are loaded ?

Routes from other applications are displayed in the log as : Connect swEncapsulateRoute "app_name.route_name" If routes are not present then something is wrong in your settings.

My settings look ok, but the routes do not appear

All routes loaded with an event or dynamically added at runtime cannot be used with this plugin. Routes have to be defined in the routing.yml of each application.

symfony's bootstraping get slower after plugin installation

This might occurs if you load all routes from others application, it is a good practice to be explicit when you load externals routes : populate the routes section with routes you need in the current application.

About

Easily create links between symfony applications.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages