2009-09-29 4 views
0
protected function _initRoutes() 
{ 
    $this->router = $this->frontController->getRouter(); 
    $route = new Zend_Controller_Router_Route(
     ':username', 
     array(
      'module'  => 'default', 
      'controller' => 'view', 
      'action'  => 'profile', 
      'username' => ':username' 
     ) 
    ); 
    $this->router->addRoute('profile', $route); 
} 

Что он должен сделать, это соответствовать этому:Что случилось с этим маршрутом?

http://www.mydomain.com/something 

To:

http://www.mydomain.com/view/profile/username/something 

, который работает. Беда в том, когда я иду:

http://www.mydomain.com 

Я получаю аа длинную ошибку в базе данных, которая существует в основном потому, что она соответствует (и это не должно быть):

http://www.mydomain.com/view/profile 

Но без имени пользователя , что требуется.

Маршрут определен в моем файле начальной загрузки. Что я должен сделать, чтобы он работал правильно?

EDIT:

Кажется, проблема с помощником URL-адрес в моих взглядах. Что не так с этими URL-адресами?

<?php 

echo $this->url(array('module' => 'default', 
         'controller' => 'view', 
         'action' => 'profile', 
         'id' => $this->escape($m->id)), 
       null, 
       true); 

       ?> 

Или:

<?php 

echo $this->url(array('module' => 'default', 
         'controller' => 'my-account', 
         'action' => 'write-message'), 
       null, 
       true); 

      ?> 

ответ

2

Линия

'username' => ':username' 

Это означает, что вы устанавливаете значение В параметре умолчанию имя пользователя в строку ': имя пользователя', если вы оставите его из route def, если нет имени пользователя, он просто проигнорирует этот маршрут и продолжит движение.

protected function _initRoutes() 
{ 
    $this->router = $this->frontController->getRouter(); 
    $route = new Zend_Controller_Router_Route(
     ':username', 
     array(
      'module'  => 'default', 
      'controller' => 'view', 
      'action'  => 'profile', 
     ) 
    ); 
    $this->router->addRoute('profile', $route); 
} 
+0

Да, эта линия абсолютно бесполезна – andho

+0

Это не только бесполезно, но и является причиной проблемы. Имея значение по умолчанию для имени пользователя, оно всегда будет иметь значение, что означает, что этот маршрут всегда будет соответствовать. – linead

+0

Когда я удаляю эту строку, www.mydomain.com снова работает отлично, но когда я перехожу на сайт www.mydomain.com/username, я получаю сообщение об ошибке: «имя пользователя не указано» –

Смежные вопросы