2013-03-31 86 views
1

我一直在關注Zend的教程(http://www.youtube.com/watch?feature=player_embedded&v=EerB9bTvqrY),但是當我在項目中添加一個新模塊時,我無法導航到它,本教程中的說明是否不正確?在Zend Studio中創建新模塊(Zend Framework 2)

基本上,當我在Zend Studio中添加一個新模塊到我的Zend Framework項目中時,我無法導航到它,我的新模塊被稱爲「交易」。我導航到本地主機/ dealproject /交易,我得到錯誤404。當瀏覽到本地主機/ dealproject /它正確加載zend骨架應用程序頁面。

感謝您的幫助。

module.config.php

<?php 
return array(
'controllers' => array(
    'invokables' => array(
     'Deals\Controller\Deals' => 'Deals\Controller\DealsController', 
    ), 
), 
'router' => array(
    'routes' => array(
     'deals' => array(
      'type' => 'Literal', 
      'options' => array(
       // Change this to something specific to your module 
       'route' => '/deals', 
       'defaults' => array(
        // Change this value to reflect the namespace in which 
        // the controllers for your module are found 
        '__NAMESPACE__' => 'Deals\Controller', 
        'controller' => 'Deals', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       // This route is a sane default when developing a module; 
       // as you solidify the routes for your module, however, 
       // you may want to remove it and replace it with more 
       // specific routes. 
       '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(
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
), 
'view_manager' => array(
    'template_path_stack' => array(
     'Deals' => __DIR__ . '/../view', 
    ), 
), 

);

+0

能否請你告訴我們,從導致問題:) –

+0

現在我已經發布module.config.php模塊的module.config.php你的路由配置在問題中。謝謝你的幫助。 – Jonjon

+0

謝謝,它看起來不錯:)。我發佈了一個答案,希望它能幫助你解決你的404錯誤:) –

回答

0

對我來說,路由配置看起來是正確的,它應該顯示結果。我注意到,ZF2應用程序的基本URL(localhost/dealproject/)位於域根目錄的子目錄中。正如您可能知道所有請求都映射到應用程序的index.php(~/public/index.php)。這是通過.htaccess文件中的某些配置完成的(在同一目錄中)。

在示例網址www.example.com/blog中,如果blog不存在作爲www.example.com根目錄下的文件夾,則會得到404 Page not found。但是,如果沒有找到目錄(假定您使用ZendSkeletonApplication),則ZF2的.htaccess會使apache在域的根目錄中調用index.php。現在

,因爲你的index.php不在域根(localhost/),但在localhost/dealproject/和你的.htaccess是(我認爲)在localhost/dealproject/還有,當你打電話,因爲在localhost/dealproject/deals Apache是​​尋找一個目錄dealproject/dealslocalhost沒有.htaccess來準備必要的配置。

我建議您將dealproject文件夾作爲localhost的根目錄。這將使您能夠像這樣呼叫您的路線:localhost/deals並且.htaccess和index.php將被正確處理。

希望這有助於:)

斯托揚

1

確保您已啓用模塊~/config/application.config.php

'modules' => array(
    'Application', 
    'Deals', 
), 
+0

模塊已啓用,當我創建模塊時,Zend Studio將它添加到application.config.php中。據我所知,一切都是正確的,Zend Studio安裝有問題嗎? – Jonjon