0

最近、新しい zend フレームワーク プロジェクトを開始しました。ZF ツールを使用して、すべての db-table モデル、モデル、コントローラー、アクション、フォーム、および有効なレイアウトを作成しました。作成したすべてのアイテムは .zf-project.xml に表示されます。

次に、デフォルト レイアウトの最初のヘッダーとフッターの設定に取り掛かりました。このレイアウトの下部には、いくつかのリンクを含むフッター ナビゲーション セクションがあります。例:

    <a href="/howitworks">How it Works</a>

これをクリックすると、index controller / howitworksAction に移動する必要がありますが、そうではありません。代わりに、次のエラーが表示されます。

    Message: Invalid controller specified (howitworks)

    **Stack trace:**

    #0 /usr/share/php/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #1 /usr/share/php/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
    #2 /usr/share/php/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
    #3 /var/www/vhosts/lokals.mediagiantdesign.com/httpdocs/public/index.php(26): Zend_Application->run()
    #4 {main}  
    Request Parameters:

    array (
      'controller' => 'howitworks',
      'action' => 'index',
      'module' => 'default',
    )  

URL を /index/howitworks に強制すると、正常に動作します。これは、これまでにこれが起こった場所で構築した最初の Zend アプリケーションであるため、これには完全にうんざりしています。以前のアプリケーションでは、このリンクはすぐに使用できました。カスタムルーターをセットアップしていません。ブートストラップはベアボーンです。したがって、これが機能しない理由はわかりません。

zend は最初にコントローラーに一致するコントローラーを探し、見つからない場合は一致するアクションを探して index を探し、それが見つからない場合は /public のファイルであると想定します。もしそうなら、私はここで何が欠けていますか?

前もって感謝します。リック

4

2 に答える 2

2

デフォルトの Zend Framework の URL 構造はhttp://yourdomain.com/controller/action/paramsです。Zend Framework は、デフォルトで「http://yourdomain/howitworks」という形式の URL をルーティングするときは常に、howitworks をコントローラーと見なし、アクションが指定されていないため、indexAction が想定されます。混乱を避けるために、Zend url ビュー ヘルパーを使用することは常に役に立ちます。

    <a href="<?php  echo $this->url(array('controller' => 'index', 'action' => 'howitworks'), null, true); ?>"

「/howitworks」ポイントを IndexController の howitworksAction に使用する場合は、bootstrap.php でカスタム ルートを設定する必要があります。

于 2012-10-31T00:30:06.720 に答える
1

デフォルトでは、URL domain.com/howitworks は howitworksController の indexAction を参照します。それが見つからない場合、Zend は引き続きエラー コントローラにアクセスして、エラーの処理方法を見つけます。Zend にこのフォールバックを使用するように指示するルートまたはエラー処理が errorController にない限り、デフォルトでは indexcontroller には行きません。

于 2012-10-30T23:21:18.057 に答える