0

これを IRC チャンネル ZFTalk にも投稿したばかりですが、

ZF2、ZF2 アルバム チュートリアル、MAMP を使用した OSX に関するヘルプが得られることを願っています。スケルトン フレームワーク、ホームページが機能しています。

問題 : セクション : 8.5 アルバムのリストを完了した後、module/Album/view/album/album/index.phtml にコードを入力すると、 http://zf2-tutorial.localhost/でページをプレビューするように求められます。アルバム

404 が表示されます。要求された URL はルーティングによって一致しませんでした。

アドバイスを求めてGoogleに向かいました。チュートリアルの「完全に機能するモデル」を含む GIT リポジトリを見つけたので、これを入手して自分のコードと比較しました。これを別のホストとしてセットアップすると、同じ 404 ルーティング メッセージが表示されます。

マニュアルを注意深く読んだ後、httpd.conf / AllowOverride が FileInfo に設定されていない場合、スタート/ホームページ以外は表示できないことが最初に明示されています。

サーバーの電源を入れたときに、変更したパスへのパスがMAMPによって使用されない場合に備えて、マシン全体をスキャンしてhttpd.confと呼ばれるファイルを見つけることにしました。

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',
        ),
    ),
);
4

3 に答える 3

0

(httpd.conf)でApache設定を構成することで解決できます。「AllowOverride None」を「AllowOverride All」に変更します。このような設定により、.htaccess によって構成値をオーバーライドできます。

于 2015-07-15T12:58:55.890 に答える