Php CodeIgniter-视图中的2个表单
我有一个视图,它有两种形式:Php CodeIgniter-视图中的2个表单,php,forms,codeigniter,Php,Forms,Codeigniter,我有一个视图,它有两种形式: <table> <th>Write a comment.</th> <tr> <td> <?php echo form_open($this->uri->uri_string(),$form1); echo form_textarea($comment); echo form_submit('submit',
<table>
<th>Write a comment.</th>
<tr>
<td>
<?php echo form_open($this->uri->uri_string(),$form1);
echo form_textarea($comment);
echo form_submit('submit','submit');
echo form_close();
?>
</td>
</tr>
</table>
<table>
<tr>
<td>
<?php echo form_open($this->uri->uri_string());
echo form_dropdown('portion', $portion_options);
echo form_submit('book','book');
echo form_close();
?>
</td>
</tr>
</table>
但是,单击“书本”按钮时,不会执行任何操作。这就像按钮从未被点击过一样。而当我点击“提交”按钮时,每一个动作都被正确地完成了
在过去,我在普通php上使用了相同的技术(我的意思是没有框架,只有php),对我来说效果很好。codeigniter是否需要进一步配置?我做错了什么吗?
为什么不在两个表单中分别添加一个名为form\u id
的隐藏字段,其值分别为1和2?易于捕捉在您的控制器后;e、 g:
<?php echo form_open($this->uri->uri_string(),$form1);
if($this->input->post()){
switch($this->input->post('form_id')){
case 1:
// do stuff
break;
case 2:
// do stuff
break;
}
}
为什么不在两个名为form\u id
的表单中分别添加一个值为1和2的隐藏字段?易于捕捉在您的控制器后;e、 g:
if($this->input->post()){
switch($this->input->post('form_id')){
case 1:
// do stuff
break;
case 2:
// do stuff
break;
}
}
在花了一整天的时间之后,我终于设法以某种方式解决了这个问题(尽管我相信这不是一个解决这个问题的好办法)
嗯:
$comment=array(
'名称'=>'注释',
'id'=>'comment',
'值'=>'写评论',
“行”=>“5”,
'cols'=>'100'
);
写评论。
写评论。
可能表单字段(textarea和dropdown)需要有相同的名称(我已经设置为“comment”)。虽然我不明白为什么:/
谢谢大家帮助我:)在花了一整天的时间之后,我终于设法解决了这个问题(尽管我相信这不是解决这个问题的好办法)
嗯:
$comment=array(
'名称'=>'注释',
'id'=>'comment',
'值'=>'写评论',
“行”=>“5”,
'cols'=>'100'
);
写评论。
写评论。
可能表单字段(textarea和dropdown)需要有相同的名称(我已经设置为“comment”)。虽然我不明白为什么:/
谢谢大家帮助我:)否,或者当我将表单合并为1时,单击的按钮会被识别并正常工作。但是,如果可能的话,我需要将它们放在单独的表单上。在任何情况下,都不要在CodeIgniter中使用if(isset($\u POST['book'))
。使用内置的$this->input->post('book')
并在firebug/chrome developer tools中查看发送到控制器的数据,可以在网络选项卡中看到。尽管我不知道如何使用firebug,但在网络选项卡的标题选项卡中,我看到我从下拉列表中选择的是sentno,当我将表单合并为1时,然后可以识别单击的按钮并正常工作。但是,如果可能的话,我需要将它们放在单独的表单上。在任何情况下,都不要在CodeIgniter中使用if(isset($\u POST['book'))
。使用内置的$this->input->post('book')
并在firebug/chrome developer tools中查看发送到控制器的数据,可以在网络选项卡中看到。尽管我不知道如何使用firebug,但在网络选项卡的标题选项卡中,我看到我从下拉列表中选择的内容已发送。感谢您的回复。我只是用你的方式尝试过,但是,仍然只是“提交”按钮被识别。你是否可以使用if($this->input->post('book')){
或原始if(isset($\u post['book']){
?实际上,我使用了$this->input->post(),因为我认为从swich可以理解发布的表单。我现在尝试了$this->input->post('book')还是没有。我只是在本地测试,在两个窗体上分别使用echo form_hidden('form_id',1)
和echo form_hidden('form_id',2)
。在控制器中,我使用if($this->input->post()){echo$this->input->post('form id')}
我得到了正确的输出-所以它应该可以工作。我想我已经解决了。您正在检查if(isset($\u POST['submit']))
由于两个按钮都是submit
按钮,您的第二个if
将始终计算为true。因此您需要检查的不是submit
是否存在,而是是否存在另一个元素,即我建议的隐藏字段。或者,您可以执行以下操作:if($\u POST['submit']='submit'){/code>和if($\u POST['submit']='book'){
谢谢你的回复。我只是用你的方式尝试了一下,但是,仍然只有'submit'按钮可以识别你是否可以使用if($this->input->POST('book')){
或原始if(isset($\u POST['book']){
?实际上我使用了$this->input->POST()因为我认为从swich可以理解哪个表单被发布了。我现在尝试使用$this->input->post('book'),但仍然没有任何结果。我只是在本地测试,在两个表单上分别使用echo form_hidden('form_id',1);
和echo form_hidden('form_id',2)
。在控制器中,如果($this->input->post()){echo$this->input->post('form_id');}
我得到了正确的输出,所以它应该可以工作。我想我找到了。你正在检查if(isset($\u post['submit']))
由于两个按钮都是submit
按钮,您的第二个if
将始终计算为true。因此您需要检查的不是submit
是否存在,而是是否存在另一个元素,即我建议的隐藏字段。或者,您可以执行以下操作:if($\u POST['submit']='submit'){/code>和if($_POST['submit']=='book'){
哦,告诉我$form1中的数组。它在哪里?你应该可以在一个页面上有两个表单。你可以在浏览器中发布你点击的uri\u字符串,然后发布你的整个方法吗?你也可以发布生成的表单html吗?我的视图顶部有它。这是数组:$form1=array('name'=>'form1','id'=>'form1');很抱歉我耽搁了。我正在查看问题是否在
<?php echo form_open($this->uri->uri_string(),$form2);
if($this->input->post()){
switch($this->input->post('form_id')){
case 1:
// do stuff
break;
case 2:
// do stuff
break;
}
}
$comment = array(
'name' => 'comment',
'id' => 'comment',
'value' => 'write you comment',
'row' => '5',
'cols' => '100'
);
<table>
<th>Write a comment.</th>
<tr>
<td>
<?php echo form_open($this->uri->uri_string());
echo form_hidden('form_id', 1);
echo form_textarea($comment);
echo form_submit('submit','submit');
echo form_close();
?>
</td>
</tr>
</table>
<table>
<th>Write a comment.</th>
<tr>
<td>
<?php echo form_open($this->uri->uri_string());
echo form_hidden('form_id', 2);
echo form_dropdown('comment', $portion_options);
echo form_submit('book','book');
echo form_close();
?>
</td>
</tr>
</table>