managed to get this working in the end, not sure if it was by simply
adding a rule for "/" or if it was fixed by making the compiled config
exactly the same as the one generated by sfConfigRoutingHandler (i.e.
with serialization). In either case it works now, so I'm happy.

On Jul 14, 1:00 am, Dan Leech <dan.t.le...@gmail.com> wrote:
> Hi
>
> I am trying to implement an XML navigation map which also contains all
> the routing information for the app,
> I have created the config handler below and changed factories.yml to
> use a custom routing class which extends sfPatternRouting. Both listed
> below, also the generated route cache file.
>
> The routes seem to get loaded OK, but I get the error
>
>   "Empty module and/or action after parsing the URL "/" (/)."
>
> Im not too sure what that signifies, can anybody spot what I am not doing 
> right?
>
> Cheers
>
> dan.
>
> class gwProjectRouting extends sfPatternRouting
> {
>   protected function getConfigFileName()
>   {
>     return 
> sfContext::getInstance()->getConfigCache()->checkConfig('config/navtree.xml',
> true);
>   }
>
> }
>
> class gwProjectRoutingConfigHandler extends sfConfigHandler
> {
>   public function execute($configFiles)
>   {
>     $options = $this->getOptions();
>     unset($options['cache']);
>
>     $dom = new DOMDocument("1.0");
>     $dom -> load($configFiles[0]);
>
>     $xpath = new DOMXpath($dom);
>     foreach ($xpath -> query('//node') as $i => $node)
>     {
>       if ($url = $node -> getAttribute('url'))
>       {
>         $params = array();
>         if ($node -> hasAttribute('module'))
>         {
>           $params['module'] = $node -> getAttribute('module');
>         }
>
>         if ($node -> hasAttribute('action'))
>         {
>           $params['action'] = $node -> getAttribute('action');
>         }
>
>         foreach ($xpath -> query('./param') as $param)
>         {
>           $params[$param -> getAttribute('name')] = $param ->
> getAttribute('value');
>         }
>
>         $route_name = $node -> hasAttribute('name') ? $node ->
> getAttribute('name') : $i;
>
>         $data[] = sprintf('$this -> routes["%s"] = new %s("%s",%s);',
>           $route_name, 'sfRoute', $url, var_export($params, true));
>         $data[] = sprintf('$this -> routes["%s"] -> setDefaultOptions(%s);',
>           $route_name, var_export($options, true));
>         $data[] = sprintf('$this -> routes["%s"] -> compile();', $route_name);
>       }
>     }
>
>     $code = implode("\n", $data);
>
>     return sprintf("<?php\n".
>                    "// auto-generated by gwProjectRoutingConfigHandler\n".
>                    "// date: %s\n%s\n", date('Y/m/d H:i:s'), $code );
>   }
>
>   protected function getOptions()
>   {
>     $config = 
> sfFactoryConfigHandler::getConfiguration(sfContext::getInstance()->getConfiguration()->getConfigPaths('config/factories.yml'));
>     return $config['routing']['param'];
>   }
>
> }
>
> <?php
> // auto-generated by gwProjectRoutingConfigHandler
> // date: 2010/07/14 00:37:15
> $this -> routes["default"] = new sfRoute("/:module/:action",array (
> ));
> $this -> routes["default"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["default"] -> compile();
> $this -> routes["2"] = new sfRoute("/audit",array (
>   'module' => 'gwProjectAuditLog',
>   'action' => 'list',
> ));
> $this -> routes["2"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["2"] -> compile();
> $this -> routes["3"] = new sfRoute("/audit/:id",array (
>   'module' => 'gwProjectAuditLog',
>   'action' => 'edit',
> ));
> $this -> routes["3"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["3"] -> compile();
> $this -> routes["4"] = new sfRoute("/profile",array (
>   'module' => 'gwProjectUser',
>   'action' => 'profile',
> ));
> $this -> routes["4"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["4"] -> compile();
> $this -> routes["5"] = new sfRoute("/issues",array (
>   'module' => 'gwProjectIssue',
>   'action' => 'list',
> ));
> $this -> routes["5"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["5"] -> compile();
> $this -> routes["6"] = new sfRoute("/issue/:issue_number",array (
>   'module' => 'gwProjectIssue',
>   'action' => 'view',
> ));
> $this -> routes["6"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["6"] -> compile();
> $this -> routes["7"] = new sfRoute("/issue/task/create",array (
>   'module' => 'gwProjectIssue',
>   'action' => 'createTask',
> ));
> $this -> routes["7"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["7"] -> compile();
> $this -> routes["8"] = new sfRoute("/reports",array (
>   'module' => 'gwProjectReport',
>   'action' => 'index',
> ));
> $this -> routes["8"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["8"] -> compile();
> $this -> routes["13"] = new sfRoute("/search",array (
>   'module' => 'gwProjectSearch',
>   'action' => 'search',
> ));
> $this -> routes["13"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["13"] -> compile();
> $this -> routes["14"] = new sfRoute("/login",array (
>   'module' => 'sfGuardAuth',
>   'action' => 'signin',
> ));
> $this -> routes["14"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["14"] -> compile();
> $this -> routes["15"] = new sfRoute("/logout",array (
>   'module' => 'sfGuardAuth',
>   'action' => 'signout',
> ));
> $this -> routes["15"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["15"] -> compile();
> $this -> routes["21"] = new sfRoute("entity/:id",array (
>   'module' => 'gwProjectEntity',
>   'action' => 'view',
> ));
> $this -> routes["21"] -> setDefaultOptions(array (
>   'load_configuration' => true,
>   'suffix' => '',
>   'default_module' => 'default',
>   'default_action' => 'index',
>   'debug' => '1',
>   'logging' => '1',
>   'generate_shortest_url' => true,
>   'extra_parameters_as_query_string' => true,
> ));
> $this -> routes["21"] -> compile();
>
> --
> Dan Leech

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony users" group.
To post to this group, send email to symfony-users@googlegroups.com
To unsubscribe from this group, send email to
symfony-users+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en

Reply via email to