wiki:rfc/new-url-routing
developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

New Url Routing

Goal

Simplify the way we do URL mapping. So, only one "URL engine". No more "url engine" plugins.

Why

There are too many problem with these system of different url engine, and many problems when entrypoints don't use the same url engine.

And although the "simple" and "basic_significant" url engines are performant and aren't complex in term of code, their configurations can be tricky (too many questions in the forum).

Declaring the URL mapping should be easy.

How

Proposition:

  • suppress the plugin system for URLs
  • we keep the significant url engine.
  • we improve the engine to allow to declare that it should support basic significant url, so we won't have to declare url for all methods of all controllers. We could activate it with a simple basicSignificant attribute. ex:
   <entrypoint type="classic" name="index" default="true" basicSignificant="true">

       <url .../>
   </entrypoint>

If a given url does not correspond to url declared inside the entrypoint, jUrl tries to map it to "/:module/:controller/:method", as the basic_significant engine did. Only one entrypoint is allowed to support basic_significant, else jUrl::get() could not know on which entry point it should take to generate the url.

  • remove the "module" and "action" GET parameters in urls, except for "overrided" action in urls.xml. However, we could continue to have "module" and "action" parameters in the list of request parameters, in internal code, to keep compatibility with all components (such as controllers with "$this->param('module')"). However we could deprecate this behavior (and emit a notice?).

see 1223.

Last modified 8 years ago Last modified on Sep 14, 2012, 11:23:00 AM