2011-05-05 38 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。 你需要注意,最终已经输入的值与表单一起发送时,添加另一个步骤,以便这些不会丢失。

希望这有助于找到正确的方法。