我想请一些帮助。我有这个表单组: 这是观点:
<?php echo form_open('admin/posts/post/'.$post->id); ?>
// other fields here...
<div class="form-group">
<label for="" class="col-sm-2">Visible</label>
<div class="col-sm-10">
<div class="onoffswitch">
<?php
$visible = ($post->visible) ? $post->visible : $this->input->post('visible');
$visible_data = array(
'class' => 'onoffswitch-checkbox',
'id' => 'visible',
'checked' => ($visible == '1') ? true : false,
'name' => 'visible',
'value' => ($post->visible) ? $post->visible : $this->input->post('visible'),
);
?>
<?php echo form_checkbox($visible_data); ?>
<label class="onoffswitch-label" for="visible">
<div class="onoffswitch-inner"></div>
<div class="onoffswitch-switch"></div>
</label>
</div>
</div>
</div>
// more fields ...
<?php echo form_close(); ?>
这是控制器
public function post($id){
$this->data['post'] = $this->post_model->get($id);
$this->form_validation->set_rules($this->post_model->rules);
if ($this->form_validation->run() === true) {
var_dump($this->input->post('visible')); //not getting anything from the visible field
// store data in database and redirect
$this->post_model->save($id);
}
// load the view
$this->load->view('admin/post/edit');
}
基本上这可以作为on/off switch button使用。问题是,当我单击提交按钮时,它不会发送字段的$ _POST数据($this->input->post('visible')
)
到我的模型,以便将其存储在数据库中。
任何想法有什么不对,应该如何解决?
答案 0 :(得分:1)
这与Codeigniter无关,它只是浏览器的工作方式,如果未选中复选框,则不会向服务器发送POST数据。
因此,您可以在控制器中检查$this->input->post('visible')
(如果取消选中该复选框,则会返回false,以及value
中的任何内容。
或者你可以做一个小的黑客,并在复选框之前输入一个名为false
的隐藏输入。
在您的示例中,您应该将value="1"
放在复选框上,并在复选框前加<?=form_hidden('visible', 0)?>
。