2015-02-21 28 views
5

GII Aracı'nı kullanarak bir CRUD işlemi yapmak istiyorum, ancak mesajımı kaydetmeye çalıştığımda Missing required parameters: id hata mesajını alıyorum.Hatalı İstek (# 400) - Gerekli parametreler eksik: YII2'de kimlik

Mesaj kontrolörü:

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

Neden hep bu hatayı alıyorum?

+0

göster kodu()'. Bu @arogachev – arogachev

+0

'actionView' geçerli: ' kamu fonksiyon actionView ($ id) { dönüş $ this-> ('görünümü' render [ 'model' => $ this-> findModel ($ id) , ]); } ' –

cevap

3

sınıfa Post için kod göndermek için tavsiye ve eğer görmek istiyorum işe yarıyor.

+0

teşekkür ederim @Abhimanyu, bu iş :) ama nedenini bilmiyorum. neden "$ model-> save (false)" ı açıklayabilir misiniz. neden yanlış yapılmalı? –

+0

@Shinoda_ '$ Model-> save (false)' kullandığınızda, doğrulama işlemini atlar. Bu sizin için çalışıyorsa, 'modelinizde' belirttiğiniz 'kurallar' yanlıştır. 'Kurallarınızı 'düzeltin ve modelinizi' yanlış 'olmadan kaydetmeyi deneyin. Her şey doğruysa işe yarayacaktır. –

+0

Teşekkürler, şimdi nerede olduğumu biliyorum. –

0

Burada deneyebilirsiniz birkaç şey: save() olmuştur

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

  • kontrol edin: Böyle bir şey kullanmadan önce boş

    • Kontrol $model->post_id olmadığını kullanmadan önce başarılı:
    Bunun dışında

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

    , ben

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

    emin $model->save(false) yapmak emin olun deneyin actionView ve yanı

+0

' save() 'seçeneğini kontrol ettik ve sonuç' array (0) {} 'dır. ve sonra ne olacak? hala kontrol ettikten sonra ne yapmam gerektiğini anlıyorum. Ben yii ile yeni biriyim. actionView kodu: public function actionView ($ id) {return $ this-> render ('view', ['model' => $ this-> findModel ($ id),]); } ' –

+0

Kodu düzenledim:' save() 'yöntemini bir değişkene (ben '$ success' olarak adlandırdım) atlatmalı ve ardından bu değişkenin kaydetmenin çalışıp çalışmadığını görmek için bu değişkene dökülmelisiniz. –

+0

Denedim, ve sonuç "bool (false)" –

0

bu

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

Açıkçası olduğunu $ this-> yönlendirme olur deneyin. Main.php dosyasında URL kurallarınızı kontrol edin. actionView `It Main.php bir yerde burada yer almalıdır

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