2014-11-17 5 views
1

я не могу получить значение после от формы его вставки пустых значений в базе данныхне удается получить доступ к пустой недвижимости в CodeIgniter

контроллер пользователя

public function edit($id = NULL) { 
    if ($id) { 
     $this->data ['user'] = $this->user_login_model->get($id); 
     count ($this->data ['user']) or $this->data ['errors'] [] = "user could not be found"; 
    } else { 
     $this->data ['user'] = $this->user_login_model->new_user(); 
    } 

    $rules = $this->user_login_model->rules_admin; 
    $id || $rules ['password'] .= '|required'; 
    $this->form_validation->set_rules ($rules); 
    if ($this->form_validation->run() == TRUE) { 

      $data=$this->user_login_model->array_from_post(array('name','email','password')); 
     $this->data['password']=$this->user_login_model->$data['password']; 
     $this->user_login_model->save($data,$id); 
     redirect('admin/users'); 

     // do stuff 

    } 

, если это новый пользователь, то он будет создавать новые данные

public function new_user() { 
    $user=new stdClass(); 
    $user->name =''; 
    $user->email =''; 
    $user->password =''; 
    return $user; 

    var_dump($user); 
метод

модель, которая будет цикл через массив и вернуть его

public function array_from_post($fields) { 
    $data = array(); 
    foreach ($fields as $field) { 
     $data['feild']=$this->input->post($field); 
     return $data; 
    echo var_dump($data); 
    } 
} 

это var_dump

object(stdClass)[22] 
public 'id' => string '18' (length=2) 
public 'email' => string '' (length=0) 
public 'password' => string '' (length=0) 
public 'name' => string '12' (length=2) 

это пусто, вы можете сказать мне, что это проблема?

+1

Я предполагаю, что ваша строка неверна '$ data ['feild'] = $ this-> input-> post ($ field);' Это должно быть $ data [$ feild] = $ this-> input-> post ($ поле); –

+0

Я пробовал оба не работает –

+0

Вы пытались использовать '$ data [$ field] = $ this-> input-> post ($ field);' кроме '$ data [$ feild] = $ this-> input-> почта ($ поле); '? –

ответ

0

Попробуйте
Вашего контроллер функции редактирования

public function edit($id = NULL) { 
    if ($id) 
    { 
     $this->data ['user'] = $this->user_login_model->get($id); 
     count ($this->data ['user']) or $this->data ['errors'] [] = "user could not be found"; 
    } 
    else 
    { 
     $this->data ['user'] = $this->user_login_model->new_user(); 
    } 

    $rules = $this->user_login_model->rules_admin; 
    $id || $rules ['password'] .= '|required'; 
    $this->form_validation->set_rules ($rules); 
    if ($this->form_validation->run() == TRUE) 
    { 

     $this->data=$this->user_login_model->array_from_post(array('name','email','password')); 
     $this->data=$this->array_from_post(array('name','email','password')); 

     // I removed this line not sure what you did here 
     $this->user_login_model->save($this->data,$id); 
     // do stuff 
     redirect('admin/users'); 

    } 
} 

Вашей функция модель array_from_post

public function array_from_post($fields) 
{ 
    $data = array(); 
    foreach ($fields as $field) 
    { 
     $data[$field]=$this->input->post($field); 

    } 
    return $data; 

} 

Вашей новая функция пользователя

public function new_user() { 
    $user=new stdClass(); 
    $user->name =''; 
    $user->email =''; 
    $user->password =''; 
    return $user; 
} 

Надеется, что это поможет вам

+0

ЕГО СЕЙСИНГ НЕ МОЖЕТ ПРИВЕСТИ К ОСТРОВНОЙ СОБСТВЕННОСТИ И НЕ УКАЗАННЫЙ ПАРОЛЬ ИНДЕКСА? –

+0

скопируйте сообщение об ошибке. не набрав –

+0

PHP-ошибка была обнаружена Серьезность: Обратите внимание Сообщение: Undefined индекс: пароль Имя файла: админ/users.php Порядковый номер: 25 –

0

Ваша функция array_from_post в основном бесполезна. У вас есть return INSIDE цикл, означающий, что вы прерываете цикл/возврат из функции, ПЕРВЫЙ раз, когда вы пытаетесь выполнить итерацию цикла. Таким образом, вы только вернетесь к значениям ваших аргументов ОДИН.

например.

array_from_post(array('foo', 'bar')); 

foreach(array('foo', 'bar') as $field) { 
    return $field; 
} 

Вы начинаете цикл, foo получает назначение в $ поле, а затем вернуться. Петля НИКОГДА не достигнет bar.

Вы, вероятно, хотите

public function array_from_post($fields) { 
    $data = array(); 
    foreach ($fields as $field) { 
     $data[$field]=$this->input->post($field); 
    } 
    return $data; 
} 

Примечание $data[$field]. Использование $data['feild'] просто даст вам массив с одним значением в нем, последний, который обрабатывается циклом. И обратите внимание, как обратный вызов является ВНЕШНИМ циклом.

+0

. Я попытался использовать $ data [$ field], но проблема возникла. –

+0

выполнил любую базовую отладку, например, посмотрите на источник созданной страницы html и посмотрите, имена - это то, что вы ожидаете от них? 'var_dump ($ _ POST)', чтобы узнать, что php получает, бла-бла-бла? –

+0

объект (stdClass) [22] public 'id' => string '18' (length = 2) public 'email' => string '' (length = 0) public 'password' => string '' (length = 0) public 'name' => string '12' (length = 2) –

Смежные вопросы