0

私の CakePHP アプリケーションには、いくつかのフィールドとボタンを持つ Element があります。この要素をすべてのページに配置し、ユーザーがボタンをクリックしたときに同じコントローラーとアクションに移動するために使用したいと考えています。Element のフォームはルート ページでは正常に機能しますが、別のページでボタンをクリックすると、関数はヒットせず、アドレス バーにはコントローラー/関数のみが追加されます。

エレメント:

<form id="login-user" action="Login/doSomething" method="post">

      <input id="edit-submit-button" class="form-submit" type="submit" value="Log in" name="op">   </input>
</form>

私のコントローラーは:

class LoginController  extends Controller{
    public  $helpers=array('Js'=>array('Jquery'), 'Session');

    public function index() {
        $this->autoRender = false;
    }

    function  doSomething(){            
        $this->redirect("/");

    }
}

Pages.ctp ファイルとビューにこの要素があります。Pages.ctp ファイルにあるボタンをクリックすると、ページが localhost/myApp/Login/doSomething にリダイレクトされ、関数が問題なくヒットします。ただし、要素がビュー (localhost/myApp/somePage/view) にあり、ユーザーがフォーム ボタンをクリックすると、ページはリロードされるだけで、アドレスの末尾に「Login/doSomething」が追加されますが、関数にはヒットしません。

誰でもこれを修正する方法を知っていますか?

4

2 に答える 2

2

1) 手動で記述する代わりに、FormHelper を使用するようにしてください。

2) 少なくとも、CakePHP Helper などで URL を作成する必要があります。

3)あなたのリンクは相対的です - その前に a を追加する/とおそらくうまくいくでしょう - それでもうまくいかない場合は、あなたのリンクは単に間違っています.

例:

<?php
echo $this->Form->create('User', array(
    'url' => array(
        'controller'=>'users',
        'action'=>'login'
    ),
    'id' => 'login-user'
));
//...
于 2013-11-14T17:45:11.347 に答える
1

コントローラ + アクションを含めるようにアクションを変更する必要があります

あなたが持っている例:

<form id="login-user" action="Login/doSomething" method="post">

ログインがコントローラーの場合、次のようになります。

<form id="login-user" action="/Login/doSomething" method="post">

ただし、次の MVC; User は Controller で、 Login はメソッドである必要があります。また、CakePHP を使用している場合は、規則に従い、それが提供する HTML ヘルパーを使用するのが最善です。上記のコード:

<form id="login-user" action="Login/doSomething" method="post">

  <input id="edit-submit-button" class="form-submit" type="submit" value="Log in" name="op">   </input>
</form>

する必要があります:

 <?php
   echo $this->Form->create('User', array('id'=>'login-user', 'url'=>'/user/login'));
   echo $this->Form->submit('Log In', array('class'=>'form-submit', 'id'=>'edit-submit-button'));
   echo $this->Form->end();
 ?>

コントローラーを作成するときは、自分で考えてください...これはメインエンティティであり、複数のメソッドが必要ですか...

など....CakePHPでログインするユーザーが必要です....ユーザーは、「ログイン」メソッドを持つコントローラーである必要があります

于 2013-11-14T17:48:24.567 に答える