0

コードで最も奇妙な Cake エラーが発生しています。以下のコードが add() メソッドを呼び出すと (ここでも別のコントローラーから再現されます)、コードは 302 で見つかった HTTP コードを使用して edit() アクションにリダイレクトします (つまり、ユーザーには何もないように見えます)。起こります)。さらに複雑なことに、そのページにいないときに同じ URL を呼び出すと (ページが相互に依存していないにもかかわらず)、アプリのベースにリダイレクトされ、リダイレクト ループが発生します。このコントローラーから (適切な引数を使用して) 他のメソッドを呼び出して、これが add() アクションの問題であるかどうかを確認しようとしましたが、同じリダイレクト ループが発生します。私はすでにSE全体をチェックしましたが、関連する答えが見つかりません。

関連するコードは次のとおりです。

function edit($id=null) {
 if(!$id) {
    $this->Session->setFlash('Invalid!');
    $this->redirect(array(
        'action' => 'index')
        );

 }
 else {
     //Get the slides themselves
    $slides = $this->Slide->find('all', array('conditions' => array('Slide.module_id' => $id)));
    $this->set('slides', $slides);
    //Get the data for the Module
    $module = $this->Module->find('first',
            array(
                'conditions' => array (
                    'Module.id' => $id
                ),
                'fields' => array(
                    'Module.module_name',
                    'Module.id')
            )
        );
 }
 }

そして、これが add() コードです (これも別のモジュールから):

    function add($module = null) {
        if ($this->request->is('get')) {
                        //Set some variables for the view (this code I know works as it has been used successfully elsewhere
        } 
        else { //User is POSTing
        $this->Slide->create();
        $this->Slide->save($this->data);
        }
    }

事前に皆さんに感謝します。あなたのサポートがなければ、私はこれを行うことができませんでした!

編集: AppController コードは次のとおりです。

public $components = array(
    'Auth' => array(
        'authorize' => array(
            'Actions' => array('actionPath' => 'controllers')
            ),
    'loginAction' => array(
        'controller' => 'users',
        'action' => 'login'
        ),
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email')
             )
        ),
    'logoutRedirect' => array('/')          
    ),
    'Session'
);
public $helpers = array('Html', 'Form', 'Session');
public function isAuthorized() {
    return true;
}
public function Controller() {

}

}

4

0 に答える 0