Easily create links between symfony applications.
PHP
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
config
lib
LICENSE
README.md
package.xml.tmpl

README.md

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.