我正在使用codeigniter,我想将值从视图传递给模型,但是当我插入表格时它总是给出0值。
在我的表单视图下面
<div class="content">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="firstname">Firstname</label>
<input type="text" class="form-control" id="firstname" name="firstname" >
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label for="lastname">Lastname</label>
<input type="text" class="form-control" id="lastname" name="lastname" value="<?= set_value('lastname') ?>">
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="street">Address</label>
<textarea class="form-control" id="address" cols="9" rows="4" name="address"><?= set_value('address') ?></textarea>
</div>
</div>
</div>
<!-- /.row -->
</div>
<?= anchor('welcome/clear_cart', 'Clear Cart', ['class' => 'btn btn-danger']) ?>
<?= anchor(base_url(), 'Continue Shopping', ['class' => 'btn btn-primary']) ?>
<?= anchor('order', 'Check Out', ['class' => 'btn btn-success']) ?>
从这个视图中我想将表单的值传递给&#34; order&#34;控制器。
Bellow my&#34; order&#34;控制器
public function index()
{
$is_processed = $this->model_orders->process();
if($is_processed){
$this->cart->destroy();
redirect('order/success');
} else {
$this->session->set_flashdata('error','Failed to processed your order, please try again!');
redirect('welcome/cart');
}
}
然后控制器将值传递给&#34; model_orders-&gt; process()&#34;
下面是model_order函数的代码process()
$data_delivery = array(
'first_name' => $this->input->post('firstname'),
'lastname_name' => $this->input->post('lastname'),
//more
);
$this->db->insert('deliveryorder', $data_delivery);
因此,当我执行insert时,视图中的值不会出现在模型中。 first_name变量有&#39; 0&#39;价值,也是另一个变量。
我怎么能让它有效?所以我可以从表单视图中获取值,而不是从我可以插入到我的表中的模型中获取值?
答案 0 :(得分:0)
为了让<input>
元素显示在$this->input->post()
中,您必须实际提交表单。
视图看起来应该更像这样。
<form method="post" accept-charset="utf-8" action="<?= base_url('order'); ?>">
<div class="content">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="firstname">Firstname</label>
<input type="text" class="form-control" id="firstname" name="firstname" >
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label for="lastname">Lastname</label>
<input type="text" class="form-control" id="lastname" name="lastname" value="<?= set_value('lastname') ?>">
</div>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="street">Address</label>
<textarea class="form-control" id="address" cols="9" rows="4" name="address"><?= set_value('address') ?></textarea>
</div>
</div>
</div>
</div>
<?php
echo form_submit('submit', 'Check Out', ['class' => 'btn btn-success']);
echo anchor('welcome/clear_cart', 'Clear Cart', ['class' => 'btn btn-danger']);
echo anchor(base_url(), 'Continue Shopping', ['class' => 'btn btn-primary']);
?>
</form>
答案 1 :(得分:0)
作为@DFriend已经说过的补充:
如果要将发布的值传递给模型,则必须将它们作为参数添加。
<强>模型强>
function process($data_delivery){
$this->db->insert('deliveryorder',$data_delivery);
}
<强>控制器强>
public function index()
{
$is_processed = $this->model_orders->process($this->input->post());
if($is_processed){
$this->cart->destroy();
redirect('order/success');
} else {
$this->session->set_flashdata('error','Failed to processed your order, please try again!');
redirect('welcome/cart');
}
}