Why are you sending so many e-mails?  You sent three the first time, and six
following my reply.  If this is a bug in your e-mail client, please use a
different one.  If this is intentional, please stop.
Now that I think about it some more, you can do one of two things.  You can
define a series of routes up to a reasonable maximum number of submenus
(hacky, but it's fast and will work) or you can write your own Route class,
Your_Controller_Router_Route_Http.  You definitely do not want to match on
(.*) and parse it yourself, since you'd basically be writing your own Route
class in a non-standard way.

-Matt

On Wed, Dec 3, 2008 at 12:24 AM, Michał Zieliński <[EMAIL PROTECTED]> wrote:

>
> Thanks Matt.
>
> I create route like this:
> routes.x.type = "Zend_Controller_Router_Route_Regex"
> routes.x.route = "(.*)"
> routes.x.defaults.module = "default"
> routes.x.defaults.controller = "section"
> routes.x.defaults.action = "load"
> routes.x.map.1 = "path"
>
> For uri like /about/history/1999/
> I get output like:
> array(4) {
>  ["path"] => string(2) "about/history/1999"
>  ["module"] => string(7) "default"
>  ["controller"] => string(5) "section"
>  ["action"] => string(5) "load"
> }
>
> So it is fine, I can easily load appropriate site section (section: about,
> subsection: history, subsubsection: 1999).
>
> But if I have a defined controller like subscription, or different module
> like admin I can`t use them. I could redirect to it from within
> SectionController::loadAction where every request goes but it isn`t the
> best
> solution I believe.
>
> I was thinking about plugin which could decide if additional routing is
> needed or maybe custom route but (in both options) at the moment when
> routes
> are loaded I guess front controller methods like getModuleName or
> getControllerName don`t exist or return null. So I`m not sure how could I
> make this decision (if controller exists load it, else use route regex like
> "(.*)".
>
> How it should be done?
>
> @edit
> looking at the errorHandler plugin I see that this approach could also be
> used:
>
>
> switch ($exceptionType) {
>                case 'Zend_Controller_Dispatcher_Exception':
>                    $error->type = self::EXCEPTION_NO_CONTROLLER;
>                    break;
>
>
> So I could write similar plugin for this or basically use
> ErrorController::errorAction to handle the logic for retriving section from
> db. However, I don`t know if this plugin (errorAction method) was designed
> to play such role.
> I could also try to catch dispatch exception in my app index.php file like
> this:
>
>
> $fc = Zend_Controller_Front::getInstance();
> try {
>  $fc->dispatch();
> } catch  (Zend_Controller_Dispatcher_Exception $e) {
>  // create router with additional route "(.*)"
>  $fc->setRouter($router);
>  $fc->dispatch();
> } catch (Exception $e) {
>  // ...
> }
>
>
> However, I don`t know if this approach is recommended because according to
> quickstart tutorial I guess front controller configuration (and other
> config
> as well) should be in bootstrap file. Index.php should only launch
> dispatch.
> Again, what`s your opinion?
> --
> View this message in context:
> http://www.nabble.com/Friendly-URLs-tp6055801p20808404.html
> Sent from the Zend Framework mailing list archive at Nabble.com.
>
>

Reply via email to