0

この質問は、Zend Framework アプリケーション バージョン: 2.1.3 に関するものです。開発者である私は、Zend Framework を初めて使用するので、あなたの支援を大いに歓迎します。

私は教会の「寄贈者管理システム」のモジュールを作っていました。私が取り組んでいるモジュールは「QueryBuilder」と呼ばれています。以前のモジュールは問題なく、うまく機能しました。Sublime Text に Zend Helper を使用すると、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、それでもエラーが発生します。

:これは何も行われていないプラグインです。routeURLがきれいに見えるように値を変更しただけです。

これが[画像]の最終的なものです。 ルートにアクセスするエラー

いいえ、これはIEではありません。Chrome(query-builderURLにアクセスしなかった)でも試したからです。

Zend フォルダー全体 (Web サイトのルート) には、query-builder. それはどこから来て、どうすれば変更できますか?

前もって感謝します。

4

2 に答える 2

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 として参照します。

于 2013-03-02T16:30:19.953 に答える
0

最初に質問させていただいたZiyanと申します。

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-builderHelloModuleshello-modules

したがって、ビュー マネージャーは を探しているようです../views/query-builder/query-builder/index

私の場合、ZF Helper for Sublime text は状況を調べる必要があります。GitHub でプラグインを修正できれば、それは素晴らしいことです。私は自分自身を試してみます。

私は自分の主張の証拠を見つけることができず、ソース コードを調べる時間もありませんでした。誰かがいくつかのリンクを提供してくれるとうれしいです。

于 2013-03-01T21:24:18.480 に答える