这是我的目录结构
-> = folder
- = file
wamp/www/zf2crud
->module
->Application
->CsnUser
->config
-module.config.php
->language
- ..
->src
->CsnUser
->Controller
-UserController.php
->view
->csn-user
->user
-create.phtml
-delete.phtml
-index.phtml
-update.phtml
->error
..
->layout
..
-Module.php
我按照本教程开发了一个模块CsnUser。所以我从我的默认文件夹Application文件夹复制了module.config.php。之后,如果我输入http://localhost/zf2crud/public/我的zend框架聋哑主页工作正常,并输入http://localhost/zf2crud/public/csn-user它去我的CsnUser索引页也很好。但如果我输入http://localhost/zf2crud/public/csn-user/user/update/出现404错误我认为问题出在模块。config。php
我需要去所有我的另一个视图,如更新,删除,创建页面如何做到这一点。
这是我的CsnUser配置文件。module.config.php
namespace CsnUser;
return array(
'router' => array(
'routes' => array(
'csn_user' => array(
'type' => 'Zend'Mvc'Router'Http'Literal',
'options' => array(
'route' => '/csn-user',
'defaults' => array(
'controller' => 'CsnUser'Controller'user',
'action' => 'index',
),
),
),
// The following is a route to simplify getting started creating
// new controllers and actions without needing to create a new
// module. Simply drop new controllers in, and you can access them
// using the path /application/:controller/:action
'csnuser' => array(
'type' => 'Literal',
'options' => array(
'route' => '/csnuser',
'defaults' => array(
'__NAMESPACE__' => 'CsnUser'Controller',
'controller' => 'user',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => '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(
),
),
),
),
),
),
),
'service_manager' => array(
'abstract_factories' => array(
'Zend'Cache'Service'StorageCacheAbstractServiceFactory',
'Zend'Log'LoggerAbstractServiceFactory',
),
'factories' => array(
'translator' => 'Zend'Mvc'Service'TranslatorServiceFactory',
),
),
'translator' => array(
'locale' => 'en_US',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
'controllers' => array(
'invokables' => array(
// 'CsnUser'Controller'User' => Controller'UserController::class
'CsnUser'Controller'user' => 'CsnUser'Controller'UserController'
),
),
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'csn-user/user/index' => __DIR__ . '/../view/csn-user/user/index.phtml',
'csn-user/user/update' => __DIR__ . '/../view/csn-user/user/update.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
// Placeholder for console routes
'console' => array(
'router' => array(
'routes' => array(
),
),
),
);
1)您应该尝试直接从公用文件夹提供应用程序。你现在做的是http://localhost/zf2crud/public/
,它应该直接服务于http://localhost/
。您可以通过配置vhost轻松解决此问题。
2)如果你问我,你的路由器配置似乎有点偏离,我会建议这样做,我认为这是你想要的…
return array(
'router' => array(
'routes' => array(
'csnuser' => array(
'type' => 'Literal',
'options' => array(
'route' => '/csn-user',
'defaults' => array(
'__NAMESPACE__' => 'CsnUser'Controller',
'controller' => 'user',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => '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(
'action' => 'index'
)
)
)
)
)
)
)
),
这将匹配如下:
url controller action
------------------------------------------------------------------------------------
http://localhost/csn-user -> CsnUser'Controller'UserController -> index
http://localhost/csn-user/user -> CsnUser'Controller'UserController -> index
http://localhost/csn-user/user/index -> CsnUser'Controller'UserController -> index
http://localhost/csn-user/user/update -> CsnUser'Controller'UserController -> update
http://localhost/csn-user/user/delete -> CsnUser'Controller'UserController -> delete
http://localhost/csn-user/user/create -> CsnUser'Controller'UserController -> create
如果你引入一个新的控制器例如公司:
'CsnUser'Controller'company' => 'CsnUser'Controller'CompanyController'
你可以像这样匹配
url controller action
------------------------------------------------------------------------------------------
http://localhost/csn-user/company -> CsnUser'Controller'CompanyController -> index
http://localhost/csn-user/company/index -> CsnUser'Controller'CompanyController -> index
http://localhost/csn-user/company/update -> CsnUser'Controller'CompanyController -> update
http://localhost/csn-user/company/delete -> CsnUser'Controller'CompanyController -> delete
http://localhost/csn-user/company/create -> CsnUser'Controller'CompanyController -> create
3)您也可以将整个csn-user
部分从路由器上移除。这似乎有点不必要……
return array(
'router' => array(
'routes' => array(
'default' => array(
'type' => '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(
'__NAMESPACE__' => 'CsnUser'Controller',
'action' => 'index'
'controller' => 'user'
)
)
)
)
)
),
这将匹配如下:
url controller action
------------------------------------------------------------------------------------
http://localhost -> CsnUser'Controller'UserController -> index
http://localhost/user -> CsnUser'Controller'UserController -> index
http://localhost/user/index -> CsnUser'Controller'UserController -> index
http://localhost/user/update -> CsnUser'Controller'UserController -> update
http://localhost/user/delete -> CsnUser'Controller'UserController -> delete
http://localhost/user/create -> CsnUser'Controller'UserController -> create
如果你引入一个新的控制器例如公司:
'CsnUser'Controller'company' => 'CsnUser'Controller'CompanyController'
你可以像这样匹配
url controller action
------------------------------------------------------------------------------------------
http://localhost/company -> CsnUser'Controller'CompanyController -> index
http://localhost/company/index -> CsnUser'Controller'CompanyController -> index
http://localhost/company/update -> CsnUser'Controller'CompanyController -> update
http://localhost/company/delete -> CsnUser'Controller'CompanyController -> delete
http://localhost/company/create -> CsnUser'Controller'CompanyController -> create