2015-02-21 14 views
5

Ich möchte eine CRUD-Operation mit GII-Tool, aber ich bekomme die Fehlermeldung Missing required parameters: id, wenn ich versuche, meine Post zu speichern.Schlechte Anforderung (# 400) - Fehlende erforderliche Parameter: ID in YII2

Beitrag Controller:

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, 
     ]); 
    } 
} 

Warum bekomme ich immer diese Fehlermeldung?

+0

anzeigen Code von 'actionView()' irgendwo hier in main.php befinden. – arogachev

+0

@arogachev dies ist die 'actionView': ' public function actionView ($ id) { return $ this-> render ('view', [ 'Modell' => $ this-> findModel ($ id) , ]); } ' –

Antwort

3

Versuchen

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, 
     ]); 
    } 
} 

Stellen Sie sicher, dass Sie das tun $model->save(false) und sehen, ob, wenn Es klappt.

+0

danke @Abhimanyu, es ist Arbeit :), aber ich weiß nicht warum. Kannst du erklären warum '$ model-> save (false)'. Warum sollte "falsch" sein? –

+0

@Shinoda_ Wenn Sie '$ model-> save (false)' verwenden, wird die Validierung übersprungen. Wenn dies für Sie funktioniert, sind die Regeln, die Sie in Ihrem Modell erwähnt haben, falsch. Korrigieren Sie Ihre 'Regeln' und versuchen Sie, Ihr Modell ohne' false' zu ​​speichern. Wenn alles in Ordnung ist, wird es funktionieren. –

+0

danke, ich weiß jetzt, wo ist mein Fehler. –

0

Ein paar Dinge, die man hier versuchen:

  • Überprüfen Sie, ob $model->post_id null ist es vor der Verwendung, etwa wie folgt:

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

  • prüfen, ob save() gewesen erfolgreich vor der Verwendung:

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

Other than that, würde ich Ihnen raten, den Code für actionView und Klasse zu schreiben Post auch

+0

Ich habe' save() 'checken und das Ergebnis ist' array (0) {} '. und dann was ist das nächste? Ich verstehe immer noch, was ich tun soll, nachdem ich es überprüft habe. Ich bin ein Neuling mit yii. Code für 'actionView':' öffentliche Funktion actionView ($ id) {return $ this-> render ('Ansicht', ['model' => $ this-> findModel ($ id),]); } ' –

+0

Ich habe den Code bearbeitet: Sie müssen die' save() 'Methode zu einer Variablen (Ich nannte es $ Erfolg) und dann dump diese Variable, um zu sehen, ob das Speichern funktioniert oder nicht funktioniert. –

+0

Ich habe es versucht, und das Ergebnis ist 'Bool (falsch)' –

0

versuchen diese

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

Es ist passiert, offensichtlich auf $ this-> umleiten. Überprüfen Sie Ihre URL-Regeln in der Datei main.php. Es sollte

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