0

次の2つのアクションを含むコントローラーファイルがあります。

class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }

    public function doLoginAction()
    {
        // action body
    }
}

および対応するビュー ファイル。つまり、http://www.mydomain.com/index にアクセスすると、インデックス ビューが読み込まれます。私が直面している問題は、このコントローラーの index アクションにアクセスしようとすると、対応するビューが読み込まれますが、 dologin アクションを実行しようとするとエラーが発生することです

http://www.mydomain.com/index/dologin

*メッセージ: アクション "dologin" は存在せず、__call() にトラップされませんでした*

リクエスト パラメータ:

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

別のコントローラーとアクションで試してみると、同じことが起こっています。index アクションはそのコントローラーでも正常に実行されますが、コントローラー内の他のアクションは実行されません。

PS : Apache 構成ファイルで mod_rewrite モジュールと AllowOverride ALL を構成しました

4

2 に答える 2

0

キャメルケースのアクション名は、パラメータとして破線であることが期待されます。したがって、doLoginAction() は dologin ではなく /default/index/do-login に応答します。URL を dologin にしたい場合は、アクションの名前を dologinAction() に変更する必要があります。

于 2012-05-02T12:39:07.380 に答える
0

コントローラーレベルでも、ハイフン (-) で区切られた URL を持つことができます。

次のような URL が必要だとします。

http://www.mydomain.com/do-some-stuff/my-stuff/

次に、コントローラーの名前を次のようにする必要があります。

DoSomeStuffController (as class name) && DoSomeStuffController.php (as controller file name)

myStuffAction() (as your method name)
于 2014-05-14T07:59:42.453 に答える