2012-05-17 49 views
1

我无法解决的问题是zend框架2中的路由。如何设置没有ZF2 DI /实例/别名路线?

我使用zend skeleton application。我创建了如zf1中的控制器和相应的视图文件。如果我尝试从开放浏览器应用程序创建的控制返回404返回码,直到我添加别名:

<?php 
return array(
    'di' => array(
     'instance' => array(
      'alias' => array (
       'login' => 'Application\Controller\LoginController', 
       'logout' => 'Application\Controller\LogoutController', 
       'user' => 'Application\Controller\UserController', 
      ), 

而且,我也要别名阵列添加所有控制器中的文件。

如何使无添加别名默认路由?

回答

2

实例别名并非用于在路由使用,但“捷径”为DI有用。 例如,假设你是在调用模块事件的方法中:

// get the di locator 
$di = $e->getTarget()->getLocator(); 
// get instance by alias 
$loginController = $di->get('login'); 

相反,设置路由规则,你可以在你的配置文件来完成:

// Setup for router and routes 
return array(
    'di' => array(
     'instance' => array(

     .... 

      // Setup for router and routes 
     'Zend\Mvc\Router\RouteStack' => array(
      'parameters' => array(
       'routes' => array(
        'default' => array(
         'type' => 'Zend\Mvc\Router\Http\Segment', 
         'options' => array(
          'route' => '/[:controller[/:action]]', 
          'constraints' => array(
           'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
           'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
          ), 
          'defaults' => array(
           'controller' => 'Application\Controller\IndexController', 
           'action'  => 'index', 
          ), 
         ), 
        ), 
        'home' => array(
         'type' => 'Zend\Mvc\Router\Http\Literal', 
         'options' => array(
          'route' => '/', 
          'defaults' => array(
           'controller' => 'Application\Controller\IndexController', 
           'action'  => 'index', 
          ), 
         ), 
        ), 
       ), 
      ), 
     ), 

我建议你Akrabat's Getting started tutorial

+0

我有我的配置文件,这个(Zend的\的mvc \路由器\ RouteStack)部分,但它们似乎并不可行。可能是我应该重新克隆骨架应用程序? – rdo

+0

你在application.config.php中配置了你的应用程序模块吗?看看这里还[链接](http://packages.zendframework.com/docs/latest/manual/en/zend.mvc.quick-start.html) – seltzlab