2011-05-05 45 views
0

控制器:添加數據庫排按鈕CakePHP的

function add(){ 
    if (!empty($this->data)) { 
     $qnote = $this->Qnote->save($this->data); 
     if (!empty($qnote)) { 
      $this->data['Step']['qnote_id'] = $this->Qnote->id; 
      $this->Qnote->Step->save($this->data); 
     } 
     $this->Session->setFlash('Your note has been saved.'); 
     $this->redirect(array('action' => 'index')); 
    } 
} 

的形式。

<?php 
$userID = Authsome::get('id'); 
echo $form->create('Qnote', array('action'=>'add')); 
echo $form->input('Qnote.id', array('type' => 'hidden')); 
echo $form->input('Qnote.user_id', array('value' => $userID, 'type' => 'hidden')); 
echo $form->input('Qnote.subject'); 
echo $form->input('Qnote.body', array('rows' => '3')); 
echo $form->input('Step.id', array('type' => 'hidden')); 
echo $form->input('Step.user_id', array('value' => $userID, 'type' => 'hidden')); 
echo $form->input('Step.body', array('rows' => '3')); 
echo $form->end('Save Notes'); 
?> 

此窗體在2個模型中添加數據。 模型1 = Qnote; 模型2 =步驟; 我可以將數據添加到模型。

我在想我可以添加一個按鈕到表格 按鈕可以讓用戶添加多個Step.data到Step模型。 有些人喜歡+1按鈕。

基本上我想爲每個Qnote添加多個步驟。

有人可以指出我在正確的方向我如何實現這一目標。

+1

查看saveAll方法:http://book.cakephp.org/view/1031/Saving-Your-Data儘管您需要格式化數據 – JohnP 2011-05-05 11:56:40

回答

0

這是我會用jQuery做的事情。基本上所有你需要做的就是使用jQuery在CakePHP約定中動態添加更多輸入:Step.0.user_id例如。 你現在需要在+1上做什麼:你需要計數零,所以你會得到Step.1.user_id等等。

第一種選擇:使用一個jQuery腳本這樣做

var count = 1; 
$('#add_step').click(function() { 
    var new_form = $('.Step').eq(0).clone(); 

    $('input, textarea, select, radio', new_form).filter('[name^="data"]').each(function() { 
     var name = $(this).attr('name'); 
     var new_name = name.replace(/\[\d*\]/, '['+count+']'); 
     $(this).attr('name', new_name).attr('value', ''); 
    }); 
    $('#YourForm').after(new_form); 
    count+; 
    return false; 
}); 

在這種情況下,你要克隆一個div持有你輸入的模式Stepstep。然後替換name-attribute以通過變量count的新值替換零。 count++使您可以根據需要添加儘可能多的步驟。

這是一個jQuery唯一的解決方案,可能需要爲您的環境額外的工作。

第二個選項:使用AJAX與元素

你也可以寫在你的StepsController一個函數,它使持有的形式,並採取櫃檯照顧的元素。

第三種選擇:使用URL參數來決定你有多少選擇要

如果你有一個網址像/qnote/add/3你可以在一個for循環使用3作爲參數,通過這些形式,進行迭代-inputs。 你需要注意,最終已經輸入的值與表單一起發送時,添加另一個步驟,以便這些不會丟失。

希望這有助於找到正確的方法。