Hi,

thats a bit more complex, as you need to take care about order within the 
routing.xml So it's not that easy to just "use" a (fictional) module´s routing

I would say, "loading/installing/activating" a module should trigger a kind of 
build script which _try´s_ to find a proper place to inject the module´s 
routing config itself, or (for sake of easy updating) a xi:include to that 
config.


Greets, 

Robert

On 05.01.2010, at 12:07, Guilherme Aiolfi wrote:

> Dynamic URLs would allow some kind of self container modules: modules with 
> all its actions, views, models, routings.
> 
> Something that is not possible today, I guess. The only part that can't be 
> done by module is its routings that has to be all into routings.xml.
> 
> If I want to allow the admin of my site to e.g. load, unload, disable modules 
> dynamically, how should it be done?
> 
> Being able to look for routings in the DB would improve the agavi flexibility 
> a lot. Is it possible? I mean, using an "unhacked" agavi?
> 
> On Tue, Jan 5, 2010 at 8:20 AM, Felix Gilcher <[email protected]> 
> wrote:
> In general, I fail to see the benefit of that. URLs are organized like 
> folders, each part can be represented as s sub-folder. How would you organize 
> your data:
> 
> - Have one big folder and throw in all events and all galleries in the same 
> folder, just organized by name
> - Have two subfolders named "events" and "galleries" and organize your data 
> in those two folders by name
> 
> The first one roughly translates to your static routing example. The second 
> approach translates to something like the following (untested) routing config
> 
> <route pattern="^/galleries" name="gallery" module="Galleries">
>        <route pattern="^/(galname:\S+)" name=".gallery" action="Gallery">
>                <route pattern="^$" name=".index" action=".Index" />
>        </route>
> </route>
> 
> <route pattern="^/events" name="events" module="Events">
>        <route pattern="^/(eventname:\S+)" name=".event" action="Event">
>                <route pattern="^$" name=".index" action=".Index" />
>                <route pattern="^edit/$" name=".edit" action=".Edit" />
>        </route>
> </route>
> 
> That solves most of your matching problems. It also provides a natural place 
> where to hook in a "view all galleries" and "display upcoming events" page. 
> And as a bonus, search engines love well structured url schemata.
> 
> If you're writing a CMS, you should at any point have a knowledge what kind 
> of item you're handling and thus be able to use the proper routes. All items 
> should by default use the canonical urls laid out by the routing scheme and 
> should always be retrievable by using that url. This provides the visitor 
> with a simple scheme of how urls are laid out and how to navigate the page. 
> You should also include a <link rel="canonical" ...> element in the head of 
> the page pointing to the canonical url for the item. However, sometimes the 
> user of the CMS wishes to assign additional shortcut urls to specific items 
> of any kind. There's multiple ways of solving that:
> 
> - You can provide the user with a way to define a mapping from short url to 
> the canonical url and dynamically generate a rewrite config. That's probably 
> the fastest way since the webserver does all the rewriting, but its 
> technically a bit complex. You need to take extra care that the config is 
> valid, since breaking it would break the whole webserver config, you may need 
> to restart the webserver after changes were made, ...
> 
> - Same as above, but don't generate a rewrite config. Have a catch-all route 
> at the end of the routing with a callback that resolves the short url and 
> redirect to the long url from there. This is a relatively simple solution, 
> however, the url changes for the user and it requires one extra roundtrip.
> 
> - You can provide the user with an option to map a short url to any specified 
> item. Then, in the Error404 Action you can try and recover - look up the 
> short url in your mapping and forward to the appropriate action. This may 
> involve elaborate logic in the 404 action. No extra roundtrip for the 
> redirect, the url does not change.
> 
> The last two options may put quite a bit of strain on your database server 
> since every false url (as in "does not point to a valid page") will result in 
> a database query. You may want to cache the mapping in a memcache server or 
> similar to speed things up
> 
> Hope that helps
> 
> felix
> 
> 
> On Jan 5, 2010, at 10:39 AM, Michal wrote:
> 
> > Hi,
> >
> > Is it possible to have routing determined (more or less) at runtime?
> > I'm thinking that in a CMS-type app, a user might want to choose what
> > a route maps to: say to a gallery action or an events calendar action.
> > Each of these actions could have different sub-routes. Static-ly, I
> > would do it something like (non-working example):
> >
> > <route pattern="^(galname:\S+/" name="gallery" module="gallery">
> >  <route pattern="^$" name=".index" action="Index" />
> > </route>
> >
> > <route pattern="^(eventname:\S+)/" name="events" module="events">
> >  <route pattern="^$" name=".index" action="Index" />
> >  <route pattern="^edit/$" name=".edit" action="Edit" />
> > </route>
> >
> > The issue with the above example is that the "gallery" route would
> > always be matched, and the "events" one would not. I need some way to
> > dynamically choose at runtime which one. A few ideas:
> >
> > - Have a callback in each route. The callback would query the database
> > (and possibly cache the result) to see if the current route should
> > match.
> > - Use a modified routing class. I'm not sure quite how to modify it though.
> > - Dynamically generate routing.xml itself. This could either be on
> > every request (somehow?), or just when a user makes a change.
> > - Don't really use routing.xml at all: have a "catch all" route that
> > maps to a "Control" action, that then processes the URL and forwards
> > to the correct action.
> >
> > I'm not sure in which direction to go. Any suggestions?
> >
> > Michal.
> >
> > _______________________________________________
> > users mailing list
> > [email protected]
> > http://lists.agavi.org/mailman/listinfo/users
> >
> 
> --
> Felix Gilcher
> 
> Bitextender GmbH
> Paul-Heyse-Str. 6
> D-80336 München
> 
> T: +49 89 57 08 15 16
> F: +49 89 57 08 15 17
> M: +49 172 840 88 28
> 
> [email protected]
> http://www.bitextender.com/
> 
> Amtsgericht München, HRB 174280
> Geschäftsführer: David Zülke, Florian Clever
> 
> 
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.agavi.org/mailman/listinfo/users
> 
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.agavi.org/mailman/listinfo/users


_______________________________________________
users mailing list
[email protected]
http://lists.agavi.org/mailman/listinfo/users

Reply via email to