【问题标题】:POST data becomes NULL after form submit (CodeIgniter)表单提交后 POST 数据变为 NULL (CodeIgniter)
【发布时间】:2018-02-12 15:40:43
【问题描述】:

我在提交表单后获取帖子数据时遇到问题。我要做的是,当用户单击提交按钮时,存储在隐藏字段中的输入值将被分配给另一个控制器类的变量。但是,当我尝试打印表单值时,它总是给我NULL

这是我的代码:

控制器

public function updateOrder(){
    $this->form_validation->set_rules('delivery_status_id', 'Delivery Status', 'xss_clean');
    $this->form_validation->set_rules('remarks', 'Remarks', 'xss_clean');
    $this->form_validation->set_rules('total_amt', 'Total Amount', 'xss_clean');

    $data = array('remarks' => $this->input->post('remarks'),
                  'delivery_status_id' => $this->input->post('delivery_status_id'),
                  'total_amt' => $this->input->post('total_amt'));

    if ($data['delivery_status_id'] == $getDeliveryStatusIdDelivered->row('id'))
    {
        $this->db->select('*');
        $this->db->from('user_has_penalty');
        $this->db->where("user_id =" . $this->session->userdata['id']);

        $query = $this->db->get();

        foreach ($query->result() as $row) 
        {
            $this->db->delete('user_has_penalty', array('user_id' => $this->session->userdata['id']));
            $this->db->delete('penalty', array('id' => $row->penalty_id));
        }
    }else if($data['delivery_status_id'] == $getDeliveryStatusIdCancelled->row('id'))
    {
        $penalty_amt = $data['total_amt'] / 2;
        $data = array('amount' => $penalty_amt);
        $this->penalty->insert($data);
        $penalty_id = $this->db->insert_id();

        //var_dump($penalty_id);
    }

    var_dump($this->input->post); // Outputs NULL
}

查看

...

<?php
    $name_c = 'Cancelled';
    $query = $this->DeliveryStatus->getDeliveryStatusByName($name_c);

    echo form_open('Order_Controller/updateOrder');
?>
    <input type="hidden" name="delivery_status_id" value="<?php echo $query->row('id'); ?>"/>
    <button type="submit" class="btn btn-danger">YES</button>
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<?php echo form_close(); ?>

代码有问题吗?任何帮助将不胜感激

【问题讨论】:

  • 首先要检查的是正在生成的 HTML 代码。您是否看到在您的隐藏字段中生成了哪些值?
  • Print_r($_POST) 并检查您发布的内容
  • @TimBrownlaw 我已经尝试检查该元素,是的,我得到了我期望的值
  • 看来您已将帖子值设置为 $data... 所以您可以对其执行 var_dump... 您也可以 var_dump($this->input->post()) [并且不,您没有]并且您正在对输入设置规则但未执行验证测试 - 请参阅codeigniter.com/userguide3/libraries/…

标签: php forms codeigniter


【解决方案1】:

在你的表单标签中,如果你没有指定方法,它将是get方法。

<form action="Order_Controller/updateOrder" method="post">

...

</form>

【讨论】:

    【解决方案2】:

    您的表单标签中缺少method

     form_open('order_Controller/updateOrder', array('method'=>'post')); 
    

    注意:

    1. 请使用模型进行数据库相关查询。
    2. 将查询结果传递给控制器​​,然后传递给视图。
    3. 您可以在配置中添加验证。在一处处理所有验证。

    【讨论】:

      猜你喜欢
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多