所以我有一个新的ZF2安装,一切正常,除非我创建一个新的控制器... FooController.php和我去application / foo我得到一个404我不明白为什么,做我必须在ZF1中设置开箱即用的路线
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository
* @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class FooController extends AbstractActionController
{
public function indexAction()
{
$view = new ViewModel(array(
'foo' => 'The Foo Controller'
));
return $view;
}
}
答案 0 :(得分:1)
是的,您需要设置至少一条路线。您可以设置一个通用路由来处理控制器/操作类型路由:
/**
* Generic Route
*/
'generic_route' => array(
'type' => 'segment',
'options' => array(
'route' => '[/:controller[/:action[/:id[/:extra]]]][/]',
'constraints' => array(
'__NAMESPACE__' => 'Application\Controller',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
'extra' => '[a-zA-Z0-9_-]+',
),
'defaults' => array(
'controller' => 'Index',
'action' => 'index',
),
),
),
答案 1 :(得分:0)
解决方案是创建一个这样的新路线:
'foo' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/foo',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Application\Controller\Foo',
'action' => 'index',
),
),
),
'controllers' => array(
'invokables' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController',
'Application\Controller\Foo' => 'Application\Controller\FooController',
),
我认为这是它在ZF2中的工作方式,你可以自动完成,你必须为每个新控制器创建一个路径