1

ナビゲーション xml に奇妙な問題があります。スニペットを次に示します。

...
<registration>
      <label>Registration</label>
      <module>mine</module>
      <controller>registration</controller>
      <pages>
          <register>
             <label>Register</label>
             <module>mine</module>
             <controller>registration</controller>
             <action>doregistration</action>
           </register>
      </pages>
</registration>
...

/mine/registration/index アクションを呼び出すたびに、後で /mine/registration/doregistration アクションがトリガーされます (デバッグ時に 1 ~ 2 秒かかる場合があります)。

/mine/registration/index は正しく表示されます。

この問題は、アプリケーション全体で発生します。2 番目 (またはサブ) ページのアクションを変更すると、この特定のアクションが実行されます。

これは Zend の既知の問題ですか? 誰かが以前にこの問題を抱えていましたか?

4

2 に答える 2

0

おそらく、同じ問題を抱えた同じアプリケーションからのこの例は、物事をより明確にします:

navigation.xml

...
<over>
    <label>Over ons</label>
    <module>default</module>
    <controller>over</controller>
    <action>index</action>
    <pages>
        <wat>
            <label>Wat?</label>
            <module>default</module>
            <controller>over</controller>
            <action>wat</action>
        </wat>
        <wie>
            <label>Wie?</label>
            <module>default</module>
            <controller>over</controller>
            <action>wie</action>
        </wie>
        <contact>
            <label>Contact</label>
            <module>default</module>
            <controller>over</controller>
            <action>contact</action>
        </contact>
        <faq>
            <label>Help</label>
            <module>default</module>
            <controller>over</controller>
            <action>faq</action>
        </faq>
    </pages>
</over>
...

対応するOverControllerものは次のようになります。

class Default_OverController extends Custom_Controller_Action_EhcAction
{

public function indexAction()
{
    return $this->render('index');
}

public function contactAction()
{
    return $this->render('contact');
}

public function wieAction()
{
    return $this->render('wie');
}

public function watAction()
{
    return $this->render('wat');
}

public function faqAction()
{
    return $this->render('faq');
}
}

ご覧のとおり、コントローラーはCustom_Controller_Action_EhcAction. Zend_Controller_Actionこれは、 を拡張し、いくつかの追加機能 (ロギング、ログイン ユーザーの ID など) を追加するカスタム クラスです。このカスタム クラスが問題の原因である可能性はありません。 is を使用しない場合でも発生します。

この例では、default/over/watアクションに移動すると、アプリケーションは次のノードも呼び出しますdefault/over/wie。XML で場所を入れ替えると、2 番目の呼び出しは常に次のノードまたは最初の下位ノードであることがわかります。

Charles でトラフィックを確認すると、1 つの呼び出ししかディスパッチされていないため、JavaScript 呼び出しではないと考えています。

この例のビュー スクリプトには単純な HTML のみが含まれており、PHP や JS は一切含まれていません...

これで問題がより明確になることを願っています...

于 2012-05-03T11:40:56.957 に答える
0

あはは!問題の原因が見つかりました: リンク ナビゲーション ヘルパー http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.navigation.links

これに対する実際の解決策はまだありませんが、これらのヘッド リンクはそれほど重要ではありません。もう使用しません。

于 2012-05-04T08:32:51.037 に答える