2013-03-01 56 views
0

此問題涉及到Zend Framework應用程序版本:2.1.3。我是開發人員,是Zend Framework的新成員,並且非常重視您的幫助。更改module.config.php的路由值後加載視圖錯誤 - Zend Framework

我正在爲一個教會的'捐贈者管理系統'製作一個模塊。我正在使用的模塊被稱爲「QueryBuilder」。以前的模塊很好,工作很好。我使用Zend幫手崇高文字和它產生的module.config.php

<?php 
/** 
* 
* @package QueryBuilder 
*/ 
return array(
    'controllers' => array(
     'invokables' => array(
      'QueryBuilder\Controller\QueryBuilder' => 'QueryBuilder\Controller\QueryBuilderController', 
     ), 
    ), 

    // The following section is new and should be added to your file 
    'router' => array(
     'routes' => array(
      'querybuilder' => array(
       'type' => 'segment', 
       'options' => array(
        'route' => '/querybuilder[/:action][/:id]', 
        'constraints' => array(
         'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
         'id'  => '[0-9]+', 
        ), 
        'defaults' => array(
         'controller' => 'QueryBuilder\Controller\QueryBuilder', 
         'action'  => 'index', 
         //'action'  => 'search', 
         //'action'  => 'recent', 
        ), 
       ), 
      ), 
     ), 
    ), 

    'view_manager' => array(
     'template_path_stack' => array(
      'querybuilder' => __DIR__ . '/../view', 
     ), 
    ), 
); 
?> 

確定爲具有樂趣一點點的做了一些成功的模塊後,類似的一些事情,我改變了router如下。

<?php 
/** 
* 
* @package QueryBuilder 
*/ 
return array(
    'controllers' => array(
     'invokables' => array(
      'QueryBuilder\Controller\QueryBuilder' => 'QueryBuilder\Controller\QueryBuilderController', 
     ), 
    ), 

    // The following section is new and should be added to your file 
    'router' => array(
     'routes' => array(
      'querybuilder' => array(
       'type' => 'segment', 
       'options' => array(
        'route' => '/query-builder[/:action][/:id]', 
        'constraints' => array(
         'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
         'id'  => '[0-9]+', 
        ), 
        'defaults' => array(
         'controller' => 'QueryBuilder\Controller\QueryBuilder', 
         'action'  => 'index', 
         //'action'  => 'search', 
         //'action'  => 'recent', 
        ), 
       ), 
      ), 
     ), 
    ), 

    'view_manager' => array(
     'template_path_stack' => array(
      'querybuilder' => __DIR__ . '/../view', 
     ), 
    ), 
); 
?> 

注意:只有route值從/querybuilder...變更爲/query-builder...。當我嘗試訪問路線http://konnections/query-builder時,出現了一些錯誤,但我沒有通過它。

想知道爲什麼我不想成爲英雄,我把價值改回了默認值。並試圖加載http://konnections/querybuilder,但它也給出了一個錯誤。

Zend\View\Renderer\PhpRenderer::render: Unable to render template "query-builder/query-builder/index"; resolver could not resolve to a file

無論在哪裏在模塊的代碼,你可以找到的話query-builder。所以常識說,需要訪問query-builder/query-builder/index沒有辦法。

認爲這可能是一些緩存,我在整個應用程序文件夾中查找它。然後我重新啓動計算機Apache,刪除並創建了一個名稱相同的新模塊QueryBuilder,但仍然存在錯誤。

注意:這是一個什麼也沒做的插件。我只是改變了route的值,認爲它會使URL看起來更整齊。

這裏是我結束了[圖片]: The Error I get accessing the route

不,這不是IE,因爲我在Chrome嘗試(它沒有訪問query-builder URL)爲好。

整個Zend文件夾(網站的根目錄)沒有提及query-builder。它來自哪裏,我如何改變它?

在此先感謝。

+0

我想我找到了正在發生的事情,但我打開了一個更好的答案。 – 2013-03-01 21:25:00

回答

0

我是紫巖,首先提出這個問題的人。

在Google找不到解決方案之後,我想知道如何製作另一個模塊並最終遇到同樣的困境。困惑我做了一個Zend Framework的新安裝,並創建了一個同名的模塊。

Zend\View\Renderer\PhpRenderer::render: Unable to render template "query-builder/query-builder/index"; resolver could not resolve to a file沒有消失。

知道這不是重新配置之類的東西,我仔細看了看。

它似乎在每個單詞之間劃一條短跑線。我就像Zend瘋了一樣!但是,不,似乎是將每個大寫字母的模塊名稱拆分,並使用' - '(短劃線)將它們連接起來。

在我的情況下,QueryBuilder變成query-builder或名爲HelloModules的插件將是hello-modules

所以視圖管理器似乎在尋找../views/query-builder/query-builder/index

在我的情況下,ZF助手的崇高文本需要注意的情況。如果你可以在GitHub上修復這個插件,那就太好了。我會試一試我的自我。

我無法找到任何證據表明我的聲明沒有時間通過​​源代碼。如果有人提供一些鏈接,會很高興。

1

來自ZF1系列(http://framework.zend.com/manual/1.12/en/zend.controller.basics.html),ZF2是相同的,但未在手冊中找到此描述。

案例命名約定 由於在輸入鏈接時維護區分大小寫時人類出現了衆所周知的不一致,Zend Framework實際上將路徑信息標準化爲小寫。這當然會影響你如何命名你的控制器和操作......或者在鏈接中引用它們。 如果您希望讓控制器類或操作方法名稱具有多個MixedCasedWords或camelCasedWords,則需要使用' - '或'。'來分隔url上的這些單詞。 (儘管你可以配置使用的字符)。例如,如果您要進入FooBarController :: bazBatAction()中的操作,您可以在URL上將其稱爲/ foo-bar/baz-bat或/foo.bar/baz.bat。