2017-01-08 36 views
0

我想之前验证我的编辑形式发送数据的编辑形式,但我得到这个错误如何验证在笨

未定义抵消:0

现在看来似乎是无法取得ID。我怎么解决这个问题?
这是我的代码

public function update_Papers_view() 
{ 
    $id = $this->uri->segment('3'); 
    $query = $this->db->get_where("papers", array("id" => $id)); 
    $data['sucss'] = $query->result(); 
    $data['id'] = $id; 

    $this->load->view('Layout/menu'); 
    $this->load->view('Papers/edit_papers ', $data); 
    $this->load->view('Layout/footer'); 
} 

public function update_Papers() 
{ 
    $this->load->model('PapersModel'); 

    $this->form_validation->set_rules('name_person', 'name_person', 'required', array('required' => 'الرجاء ادخال الاسم')); 
    $this->form_validation->set_rules('name', 'name', 'required', array('required' => 'الرجاء ادخال اسم الورقه')); 

    if ($this->form_validation->run() === false) { 

     redirect('Paperscon/update_Papers_view'); 
    } else { 
     $data = array(
      'name_person' => $this->input->post('name_person'), 
      'name' => $this->input->post('name'), 
      'type' => $this->input->post('type'), 
      'date_paper' => $this->input->post('date_paper'), 
      'address' => $this->input->post('address'), 

     ); 
     $id = $this->input->post('id'); 
     $this->PapersModel->update($data, $id); 
     $query = $this->db->get("papers"); 
     $data['sucss'] = $query->result(); 
     $this->load->view('Layout/menu'); 
     $this->load->view('Papers/show_papers', $data); 
     $this->load->view('Layout/footer'); 
    } 
} 
+0

您确定您在POST中获得ID吗?尝试print_r($ this-> input-> post())来查看你在post数组0123中得到了什么 –

回答

0

这就是我要做的事。

public function edit_admin_menu() 
{ 
    if($this->isLoggedIn()) 
    { 
     $menuId=$this->uri->segment(3);// Menu Item that needs to be Edited 
     $data['menu']=$this->admin_model->getMenuItems(); 
     $data['menu_item']=$this->admin_model->getMenuItemDetail($menuId);// Get that Menu item 

     if($_POST) 
     { 
      $config=array(
       array(
        'field' => 'parent', 
        'label' => 'Parent', 
        'rules' => 'trim|required' 
       ), 
       array(
        'field' => 'name', 
        'label' => 'Name', 
        'rules' => 'trim|required' 
       ) 
      ); 
      $this->form_validation->set_rules($config); // Validation check 
      if($this->form_validation->run()==false) 
      { 
       $data['errors']=validation_errors();// Errors in an array 
       $data['parents']=$this->admin_model->getMenuParents(); 
       $data['menu_item']=$this->admin_model->getMenuItemDetail($menuId); 
       //Load Views 
      } 
      else 
      { 
       $this->admin_model->updateMenuItem($_POST,$menuId); 
       $data['success']='Congratulations! Menu Item Updated Successfully'; 
       $data['parents']=$this->admin_model->getMenuParents(); 
       $data['menu']=$this->admin_model->getMenuItems(); 
       $data['menu_item']=$this->admin_model->getMenuItemDetail($menuId); 
       //Load Views 
      } 
     } 
     else 
     { 
      $data['parents']=$this->admin_model->getMenuParents(); 
      //Load Views 
     } 
    } 
    else 
    { 
     redirect(base_url()); 
    } 

} 

功能在管理员模式更新的记录

public function updateMenuItem($data,$menuId) 
{ 
    $item=array(
     'parent'=>$data['parent'], 
     'name'=>$data['name'], 
     'class'=>$data['class'], 
     'url'=>$data['url'] 
    ); 

    $this->db->WHERE('id',$menuId)->update('admin_menu',$item); 
} 
0

设置你的模型规则。

class PapersModel extends CI_Model { 

    public $rules = array(
     'name_person' => array(
      'field' => 'name_person', 
      'label' => 'Person Name', 
      'rules' => 'trim|required' 
     ), 
     'name' => array(
      'field' => 'name', 
      'label' => 'Name', 
      'rules' => 'trim|required' 
     ), 
    ); 

    public function __construct() { 
     parent::__construct(); 
    } 

} 

然后在你的控制器中使用这个规则如下。还必须加载表单验证库中的控制器或auotload.php

$this->load->library('form_validation'); 

public function update_Papers(){ 
    $this->load->model('PapersModel'); 
    $rules = $this->PapersModel->rules; 
    $this->form_validation->set_rules($rules); 
    if($this->form_validation->run() == TRUE){ 
      // Your update query 
     } 
    $this->load->view('Layout/menu'); 
    $this->load->view('Papers/edit_papers ',$data); 
    $this->load->view('Layout/footer'); 
    } 

终于展现在您的视图验证错误。将以下代码添加到您的edit_papers.php文件中。

<?php echo validation_errors(); ?> 
+0

__construct()应该在类的下面而不是在底部http://www.codeigniter.com/user_guide/ general/controllers.html#class-constructors – user4419336

+0

当然。但$ rules变量是类属性。 __construct()是类方法。因此属性声明在类的顶部。 – Zamir10