所以我一直在关注相当简单的zend 2骨架示例“专辑”。我跟着每一步都走到了牙齿,但是当我输入http://hostname/album进行索引时,我无法逃避 404错误 - 请求的网址无法与路由匹配,或http://hostname/album/add进行添加等等。
当然,我查看了 module.config.php 文件中的路由:
<?php
return array(
'controllers' => array(
'invokables' => array(
'Album\Controller\Album' => 'Album\Controller\AlbumController',
),
),
'router' => array(
'routes' => array(
'album' => array(
'type' => 'segment',
'options' => array(
'route' => '/album[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Album\Controller\Album',
'action' => 'index',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'album' => __DIR__ . '/../view',
),
),
);
这里的一切看起来都不错,所以我查看 Module.php ,其中 module.config.php 从中加载:
<?php
namespace Album;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
class Module implements AutoloaderProviderInterface, ConfigProviderInterface
{
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
}
}
同样,这里的一切看起来都很好。现在我想也许问题是我没有在 application.config.php 文件中包含Album模块(删除了注释):
<?php
return array(
'modules' => array(
'Application',
'Album',
),
'module_listener_options' => array(
'module_paths' => array(
'./module',
'./vendor',
),
'config_glob_paths' => array(
'config/autoload/{{,*.}global,{,*.}local}.php',
),
);
但它包括在内。我还有 AlbumController.php 和视图(.phtml)文件的确切位置。我多次检查路径,但路线仍然无法正常工作。有任何想法吗?任何建议将不胜感激。
PS - 我使用的是Ubuntu 14.04虚拟盒。
修改
这是应用程序的目录结构:(我只是列出相关文件/文件夹以使其更具可读性)
另外,我正在使用apache2.2的虚拟主机。
答案 0 :(得分:0)
对于仍在寻找此问题解决方案的任何人,
清除数据/缓存文件夹,允许路由按预期工作。
答案 1 :(得分:0)
就像@Mayank Awasthi一样:
清除数据/缓存文件夹,允许路由以 预期的。
这适用于Zend AND 椎板。
如果问题与缓存无关,请检查您的配置和路由文件!
答案 2 :(得分:0)
如果您按照官方页面中的教程一步一步进行操作并显示 404。请确保 1- 停止发球, 2-输入“composer development-enable”。 3-输入“作曲家服务” 然后它应该工作。该教程确实提到了“composer development-enable”,但没有按正确的顺序提到它,这就是为什么很多人不断获得 404 的原因