cakephp形式的多个提交按钮

ind*_*ago 0 php forms jquery cakephp cakephp-2.3

我在cakephp视图中有一个表单,只需一个按钮即可保存,这里是视图book_form.ctp中的代码

echo $this->Form->create
(
    'Book',
    array
    (
        'url' => array
        (
            'controller' => 'Books',
            'action'     => 'save_record'
        ),
        'class'         => 'span12 the_ajaxform',
        'inputDefaults' => array
        (
            'label' => false,
            'error' => false
        )
    )
); 
.
.
// form fields
.
.
$options =array(
    'label' => __('Save'),
    'class' => 'btn btn-primary',
     'id'=>'saveform'   
 );
echo $this->Form->end($options);
.
.
Run Code Online (Sandbox Code Playgroud)

这完美!现在我想在该表单上添加两个按钮,这就是我所做的

$options =array(array(
        'label' => __('Save & Close'),
        'class' => 'btn btn-primary',
         'id'=>'saveform'   
     ),
     array(
        'label' => __('Save & Create New'),
        'class' => 'btn btn-primary',
         'id'=>'saveformnew'    
     )
     array(
        'label' => __('Cancel'),
        'class' => 'btn btn-primary',
         'id'=>'formcancel' 
     ));
    echo $this->Form->end($options);
Run Code Online (Sandbox Code Playgroud)

但这只带一个按钮甚至不提交表格,我哪里错了?并且每个按钮可以在控制器中调用不同的方法吗?提前致谢

bro*_*n-e 8

如果您设置提交按钮的名称,则会将其作为发布数据中的关键字,因此您可以在操作开始时使用该信息进行重定向.例如

<?php echo $this->Form->submit('btn1value', array('name'=>'btn1'))?>
<?php echo $this->Form->submit('btn2balue', array('name'=>'btn2'))?>
Run Code Online (Sandbox Code Playgroud)

点击第一个按钮将给出如下数据:

array(
    [btn1] => btn1value
    [YourModel] => array(...)
)
Run Code Online (Sandbox Code Playgroud)

这样可以轻松完成以下操作:

if (isset($this->request->data['btn1'])) {
    // btn1 was clicked
} else if (isset($this->request->data['btn2'])) {
    // btn2 was clicked
}
Run Code Online (Sandbox Code Playgroud)


Arv*_* K. 5

我不确定它是"技术上正确",HTML4,5兼容与否等等但是我总是这样做,到目前为止没有任何问题:

<?php echo $this->Form->submit('Delete it', array('name'=>'User[formaction]')); ?>
<?php echo $this->Form->submit('Undelete Selected', array('name'=>'User[formaction]')); ?>
<?php echo $this->Form->submit('Purge Selected', array('name'=>'User[formaction]')); ?>
Run Code Online (Sandbox Code Playgroud)

其中"User"是型号名称.