0

私は Cakephp でドロップ リスト ボックスを使用するという概念に少し慣れていません。以下の私のコードでは:モジュール部分は正しいモジュール(リストボックスから選択)に送信(追加)する必要があります。誰かが構文を指摘してください。

コントローラーコード。

 $fields = array('id','moduleName');
   $modules = $this->Module->find('list',array('fields'=>$fields));
  $this->set(compact('modules'));

   if($this->request->is('post'))


{
    $mDetails = $this->Session->read('mDetails');
    $this->Modulepart->set('id', $mDetails['Modulepart']['id']);
    if($this->Modulepart->save($this->request->data)){
$this->Session->setFlash('Your new Module part has been successfully added!');
$this->redirect(array('controller' => 'modules','action'=>'modules_home'));

                }
4

1 に答える 1

0

ビュー (ModulePart/add.ctp) で次のように入力します。

$this->Form->create('ModulePart');
$this->Form->input('ModulePart.module_id');
$this->Form->end('Add');

auto-magic 関数は、「modules」変数を宣言するだけで作業を行います。list 関数 (「id」フィールドと「module_name」フィールドのみを取得するように設定) でフェッチされたコンテンツは、フォームの選択に入力されます。

CakePHP の規則に注意してください: データベース フィールドは、'moduleName' ではなく、'module_name' という名前にする必要があります。モデルに関しては、このシンタックスを使用する必要があります

$this->ModulePart->save($this->request->data);

それ以外の

$this->Modulepart->save($this->request->data);

注意: モデル名は Singular と Camel Cased です。コントローラーは複数形で、キャメル ケースです。

もう 1 つ <= とてもスティーブ スタイルに聞こえますが、LOL => コー​​ドについてです。

 $fields = array('id','moduleName');
 $modules = $this->Module->find('list',array('fields'=>$fields));
 $this->set(compact('modules'));

リダイレクトのため、request->is('post') チェックの後に移動する必要があります。ModulePart を追加する場合、そのデータを取得する必要はありません。結局、modules_homeへのリダイレクトがあります...

コーディングを楽しんで、CookBook を読んでください ;)

于 2013-09-20T16:14:41.660 に答える