0

users_controller というコントローラーがあり、getdata().getdata.ctp というアクションがそのアクションに対応するビューです。そのビューで、from data.my 問題を含む route.ctp という elemet を追加しました。getdata() メソッドでフォーム要素からすべての vaues を取得し、別のモデル Route.How we can do this? このために、要素 route.ctp にフォーム アクションを記述します。

    <?php echo $this->Form->create('User', array('url' => array('action' => 'getdata'))); ?>

そして、users_controllers getdata() アクションで、私は書きます

    function getdata()
          {
     $this->commuter(); // it call a function commuter() in this same controller for displaying some data in the view.
   $this->layout='custm';
   $this->loadModel('Defineroute');
   if (!empty($this->data) )
   {
       $this->Defineroute->create(); //Defineroute is a model. in this model i want save the form date. for that i created one table "defineroutes"


       $this->Defineroute->save($this->data);

   }
     }
4

1 に答える 1

1

いくつかの観察:

観察 1

フォームがデータを関連付けるモデルは であり、 ではUserありませんDefineroute。フィールドが両方のモデルで同じである場合はUser、プロパティでモデルを逆参照する必要があり$this->dataます。

だから代わりに:

$this->Defineroute->save($this->data);

行う:

$this->Defineroute->save($this->data['User']);

アップデート

を実行して投稿データをデバッグするとpr($this->data)、次のように表示されます。

array('User' => array(/*Your User fields*/))

その$this->data['User']ため、そうすると、モデルのフィールドだけが取得されますDefineroute

観察 2

$this->Defineroute->create();リクエストごとに 1 つのレコードしか作成しないため、呼び出す必要はありません。モデル内のアクティブなレコードをリセットする必要はありません。

観察 3

のような別のコントローラー関数の呼び出し$this->commuter();は、アクションではなくユーティリティ関数である限り問題ありません。これは、コントローラーのアクション間に依存関係を作成し、将来いずれかを変更すると、もう一方が壊れる可能性があるためです。関数が 1 つのモデルからビュー変数を設定する場合は、コードをモデル自体にシフトすることを検討してください。

于 2013-05-18T08:34:25.353 に答える