2009-07-13 - cross link application with symfony - part 2

A few week ago, I have posted an article about Cross Link Application with symfony. The implementation was not totally fine, as collection route was not handled and the configuration parts was not so logical. I spent some time to improve it. The solution is still bundled with the swToolboxPlugin (v1.2.6).

Configuration

Check your log

In your log, you should see new routes prefixed with 'swEncapsulateRoute' and the name of the route. In the following backend log (tail -f log/backend_dev.log). 2 routes from the frontend are loaded

[...]
{swPatternRouting} Connect sfRoute "default_index" (/:module)
{swPatternRouting} Connect sfRoute "default" (/:module/:action/*)
[...]
{swPatternRouting} Connect swEncapsulateRoute "frontend.homepage" (/)
{swPatternRouting} Connect swEncapsulateRoute "frontend.sw_blog_view_post" (/blog/:year/:month/:day/:slug)
[...]

If you havn't these lines, then something is wrong with the configuration.

No more hack !

When I first introduce this feature, I have added some php code that you can add if you don't want to include the application name (frontend.sw_blog_view_post => sw_blog_view_post). Now this code is included into the swPatternRouting, so from the backend you can do :

<?php
// symfony 1.2 syntax with a sfDoctrineRoute with the application name
echo link_to('View post', 'frontend.sw_blog_view_post', $blog)

// symfony 1.2 syntax with a sfDoctrineRoute without the application name
echo link_to('View post', 'sw_blog_view_post', $blog)

// old symfony 1.2 syntax with the application name
echo link_to('View post', '@frontend.sw_blog_view_post?year='.$blog->getYear().'&month='.$blog->getMonth().'&day='.$blog->getDay().'&slug='.$blog->getSlug())

// old symfony 1.2 syntax without the application name
echo link_to('View post', '@sw_blog_view_post?year='.$blog->getYear().'&month='.$blog->getMonth().'&day='.$blog->getDay().'&slug='.$blog->getSlug())

Comments

comments powered by Disqus