【发布时间】:2013-10-26 16:42:05
【问题描述】:
刚刚在 IRC 频道 ZFTalk 上发布了这个,
希望我能在使用 MAMP 的 ZF2、ZF2 专辑教程、OSX 方面获得一些帮助。骨架框架,主页正在运行。
问题:完成第 8.5 节列出专辑后,您在模块/Album/view/album/album/index.phtml 中填写一些代码,然后他们要求您在http://zf2-tutorial.localhost/album 上预览页面。
我收到 404,请求的 URL 无法通过路由匹配。
我前往 Google 寻求建议。找到了一个 GIT 存储库,其中包含教程的“完全工作模型”,所以我得到了这个来比较我的代码。如果我将此设置为另一台主机,我会收到相同的 404 路由消息。
仔细阅读手册后,它在开头明确指出,如果您的 httpd.conf / AllowOverride 未设置为 FileInfo,您将无法查看除开始/主页以外的任何内容。
决定扫描整个机器以查找名为 httpd.conf 的文件,以防万一我更改的路径在启动服务器时未被 MAMP 使用。
所以找到了3个,全部改了(虽然找到了3个,但我相信正确的路由是/private/etc)我的问题仍然存在于我从教程中编写的代码中,以及GIT代码中“工作模式”。
有人遇到过这个问题吗?在 stackoverflow Zend Framework 2 .htaccess mamp pro 上找到了这个,它与我的问题有相似之处,但尚未解决。这里的任何人都可以帮助我吗?
采取的其他路线包括:检查代码中的拼写错误,检查 application.config.php 是否设置了路线。请指教? :)
模块.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',
),
),
);
【问题讨论】:
-
首先,您关心的 .htaccess 文件将位于您的骨架应用程序安装的 /public 文件夹中。任何其他都将与与 wamp 捆绑的应用程序相关。也就是说,您的 .htaccess 文件似乎正在生效,因为您收到的错误消息似乎是 Zend Framework 错误;看来,虽然 ZF 正确处理了您的重写,但它无法将您访问的 URL 与路由配置中的任何内容相匹配。您可以将您的 module.config.php 和 Module.php 粘贴到某个地方,以便我可以尝试找出问题吗?
-
嘿@SpabbyPHP,感谢您的回复!我正在编辑我的帖子以包含您要求的代码,它将在几分钟内完成。非常感激。从发布此内容开始,我放弃了该教程并尝试了 2 本新书。没有帮助 :D 如果这是一个配置问题,无论我正在学习什么书,它都会困扰我。但是让我快速为您提供代码
-
@SpabbyPHP 进一步谷歌搜索和 IRC'ing 确实显示我的 mod_rewrite 正在加载,所以我怀疑你的理论是正确的 hope (这是通过运行 php -i 和研究模块加载)
-
只是为了也清楚编码,其他人对 application.config.php 文件有问题,识别模块的行被添加到数组中。 (即,模块数组有一个额外的行,指出“专辑”)
-
这看起来不错,您能否确认您没有在粘贴的链接末尾添加句号(我猜它;那里只是为了语法,但值得检查)。
标签: macos zend-framework zend-framework2 mamp