2015-02-21 2 views
5

Я хочу сделать операцию CRUD с помощью GII Tool, но я получаю сообщение об ошибке Missing required parameters: id, когда я пытаюсь сохранить свое сообщение.Бад-запрос (# 400) - Отсутствует требуемые параметры: id в YII2

Сообщение Контроллер:

public function actionCreate() 
{ 
    $model = new Post(); 

    if ($model->load(Yii::$app->request->post())) { 
     $model->post_create_time=date('Y-m-d h:m:s'); 
     $model->save(); 
     return $this->redirect(['view', 'id' => $model->id_post]); 
    } else { 
     return $this->render('create', [ 
      'model' => $model, 
     ]); 
    } 
} 

Почему я всегда получаю эту ошибку?

+0

Показать код 'ActionView()'. – arogachev

+0

@arogachev это 'actionView': ' общественная функция ActionView ($ ID) { возвращение $ this-> Render ('вид', [ 'модель' => $ this-> findModel ($ ID) , ]); } ' –

ответ

3

Попробуйте

public function actionCreate() 
{ 
    $model = new Post(); 

    if ($model->load(Yii::$app->request->post())) { 
     $model->post_create_time=date('Y-m-d h:m:s'); 
     $model->save(false); 

     return $this->redirect(['view', 'id' => $model->id_post]); 
    } else { 
     return $this->render('create', [ 
      'model' => $model, 
     ]); 
    } 
} 

Убедитесь, что вы делаете $model->save(false) и посмотреть, если ли оно работает.

+0

спасибо @Abhimanyu, это работа :), но я не знаю почему. вы можете объяснить, почему '$ model-> save (false)'. почему «ложь»? –

+0

@Shinoda_ Когда вы используете '$ model-> save (false)', он пропускает проверку. Если это работает для вас, это означает, что «правила», которые вы упоминали в вашей «модели», неверны. Исправьте свои «правила» и попробуйте сохранить свою модель без «false». Если все будет правильно, это сработает. –

+0

спасибо, я знаю, где моя ошибка. –

0

Несколько вещей, которые вы могли бы попробовать здесь:

  • Проверьте $model->post_id является недействительным, прежде чем использовать его, что-то вроде этого: имеет

// ... $success=$model->save(); // if it's false, it means there was an error var_dump($success); exit;

  • Проверьте save() был успешно до его использования:

if($model->save()){ return $this->redirect(['view', 'id' => $model->id_post]); }else{ // show errors var_dump($model->getErrors(); exit; }

Кроме того, я бы посоветовал вам разместить код для actionView и класса Post, а

+0

Я проверил' save() ', и результатом будет' array (0) {} '. а потом что дальше? Я все еще понимаю, что мне делать после проверки. Я новичок с yii. код для 'actionView':' public function actionView ($ id) {return $ this-> render ('view', ['model' => $ this-> findModel ($ id),]); } ' –

+0

Я отредактировал код: вам нужно присвоить метод' save() 'переменной (я назвал его' $ success'), а затем сбросить эту переменную, чтобы увидеть, было ли сохранение выполнено или нет. –

+0

Я попробовал, и результат: 'bool (false)' –

0

попробовать это

public function actionCreate() 
{ 
    $model = new Post(); 

    if ($model->load(Yii::$app->request->post())) { 
     $model->post_create_time=date('Y-m-d h:m:s'); 
     if($model->save()) 
      return $this->redirect(['view', 'id' => $model->id_post]); 
     else 
      { 
      return $this->render('create', [ 
      'model' => $mod`enter code here`el, 
      ]); 
     } 
    } else { 
     return $this->render('create', [ 
      'model' => $model, 
     ]); 
    } 
} 
0

Это, очевидно, происходит на $ this-> перенаправления. Проверьте правила URL в файле main.php. Он должен находиться где-то здесь, в main.php

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'enableStrictParsing' => false, 
    'rules' => [ 
     ... 
    ] 
], 

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

  • Нет связанных вопросов^_^