我在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);
.
.
这很完美!现在我想在该表单上添加两个按钮,这就是我所做的
$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);
但这只会带一个按钮甚至不提交表格,我哪里错了? 并且每个按钮可以在控制器中调用不同的方法吗? 提前致谢
答案 0 :(得分:8)
如果您设置提交按钮的名称,则会将其作为发布数据中的关键字,因此您可以在操作开始时使用该信息重定向。 e.g。
<?php echo $this->Form->submit('btn1value', array('name'=>'btn1'))?>
<?php echo $this->Form->submit('btn2balue', array('name'=>'btn2'))?>
点击第一个按钮会给出如下数据的帖子数据:
array(
[btn1] => btn1value
[YourModel] => array(...)
)
这样可以很容易地执行以下操作:
if (isset($this->request->data['btn1'])) {
// btn1 was clicked
} else if (isset($this->request->data['btn2'])) {
// btn2 was clicked
}
答案 1 :(得分: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]')); ?>
其中“User”是型号名称。
答案 2 :(得分:1)
通常一个表单只能有一个操作
这个lmnitation在HTML5中不再适用,您可以在其中为每个按钮设置表单操作
所以:以下代码仅适用于HTML5浏览器
echo $this->Form->button(
'Your Action Description Here',
array(
'type' => 'submit',
'formaction' => 'yourActionHere' //
)
);
答案 3 :(得分:0)
试试这个,这很容易做到。
<div class="submit">
<?php echo $this->Form->submit(__('Submit', true), array('name' => 'ok', 'div' => false)); ?>
<a href="link_to_go"><?php echo $this->Form->button('Cancel', array('type' => 'button'));?></a>
答案 4 :(得分:-1)
尝试使用FormHelper的按钮功能创建提交按钮和其他按钮,然后在没有任何选项的情况下调用end。这将输出按钮并为您结束表单。
e.g:
echo $this->Form->button('Save & Close', array('type' => 'submit'));
echo $this->Form->button('Save & Create New', array('type' => 'button'));
echo $this->Form->button('Cancel', array('type' => 'reset'));