刚刚在IRC频道ZFTalk上发布了这个,
希望我可以使用MAMP获得ZF2,ZF2专辑教程,OSX的一些帮助。骨架框架,主页正在工作。
问题:完成部分后:8.5列出相册,用一些代码填写模块/专辑/视图/专辑/专辑/ index.phtml,然后他们要求您在http://zf2-tutorial.localhost/album上预览页面。
我收到404,请求的网址无法与路由匹配。
我前往谷歌寻求建议。找到了一个GIT存储库,其中包含了Tutorial的“完全工作模型”,因此我将其与我的代码进行比较。如果我将其设置为另一个主机,我会得到相同的404路由消息。
在仔细研究手册之后,如果您的httpd.conf / AllowOverride未设置为FileInfo,它在开始时明确指出您将无法查看除开始/主页之外的任何内容。
决定扫描整个机器上的httpd.conf文件,以防万一MAMP在启动服务器时没有使用我改变的路径。
所以发现3,改变了所有这些(虽然我们找到了3,我相信正确的路由是/ private / etc)我的问题仍然存在于我从教程编写的代码中,以及GIT代码'工作模式'。
有没有人遇到过这个问题?在stackoverflow Zend Framework 2 .htaccess mamp pro上发现了这与我的问题有相似之处但尚未解决。这里的任何人都可以帮助我吗?
其他路由涉及:检查代码中的拼写错误,检查application.config.php是否设置了路由。请指教? :)
Module.php
<?php
namespace Album;
use Album\Model\Album;
use Album\Model\AlbumTable;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
class Module
{
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';
}
public function getServiceConfig()
{
return array(
'factories' => array(
'Album\Model\AlbumTable' => function($sm) {
$tableGateway = $sm->get('AlbumTableGateway');
$table = new AlbumTable($tableGateway);
return $table;
},
'AlbumTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Album());
return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
},
),
);
}
}
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',
),
),
);
答案 0 :(得分:0)
在此thread的帮助下解决了此错误。
我认为,除非有任何其他错误配置,否则此错误的来源 - 至少对我来说 - 是注册相册模块的位置。
SKELETON应用程序附带应用程序模块。这是两个不同的东西,他们有自己的config
文件夹:
config // SKELETON Application config
module/Application/config // Application MODULE config
模块需要在骨架提供的Skeleton Application配置文件中注册,即config/application.config.php
和 NOT ,方法是在Application Module配置中创建application.config.php
文件,例如module/Application/config/application.config.php
。
答案 1 :(得分:0)
你可以解决的是通过配置(httpd.conf)中的apache设置来改变 &#34; AllowOverride无&#34; to&#34; AllowOverride All&#34;。 此类设置允许您通过.htaccess覆盖配置值
答案 2 :(得分:-1)
请试试这个
如果您看到标准的Apache 404错误,则需要在继续之前修复.htaccess
用法。如果您正在使用带有URL重写模块的IIS,请导入以下内容:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php [NC,L]
您现在拥有一个有效的骨架应用程序,我们可以开始为我们的应用程序添加细节。如果你工作得很好,请告诉我。