2015-02-21 11 views
5

में मैं जीआईआई टूल का उपयोग करके एक सीआरयूडी ऑपरेशन बनाना चाहता हूं, लेकिन जब मैं अपनी पोस्ट को सहेजने का प्रयास करता हूं तो मुझे त्रुटि संदेश Missing required parameters: id मिलता है।खराब अनुरोध (# 400) - गुम आवश्यक पैरामीटर: आईडीआईआईआईआईआई

पोस्ट नियंत्रक:

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

दिखाएँ कोड()'। – arogachev

+0

इस @arogachev 'actionView' है: ' सार्वजनिक समारोह actionView ($ आईडी) { वापसी $ this-> प्रस्तुत करना ('दृश्य', [ 'मॉडल' => $ this-> findModel ($ आईडी) , ]); } ' –

उत्तर

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

धन्यवाद @ अहिमान्यु, यह काम है :) लेकिन मुझे नहीं पता क्यों। क्या आप समझा सकते हैं कि क्यों '$ model-> save (false) '। 'झूठा' क्यों होना चाहिए? –

+0

@Shinoda_ जब आप '$ model-> save (false) 'का उपयोग करते हैं, तो यह सत्यापन को छोड़ देता है। यदि यह आपके लिए काम कर रहा है जिसका अर्थ है कि आपके 'मॉडल' में वर्णित' नियम 'गलत हैं। अपने 'नियम' को ठीक करें और 'मॉडल' के बिना अपने मॉडल को सहेजने का प्रयास करें। अगर सबकुछ सही है, तो यह काम करेगा। –

+0

धन्यवाद, मुझे पता है कि मेरी गलती कहां है। –

0

चीजें आप यहाँ की कोशिश कर सकते के एक जोड़े: save() किया गया है

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

  • चेक या नहीं:

    • चेक $model->post_id चाहे वह इस तरह का उपयोग कर, कुछ करने से पहले रिक्त है इसका उपयोग करने से पहले सफल:

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

    उसके अलावा, मैं actionView और वर्ग Post रूप में अच्छी तरह

+0

मैंने' save() 'की जांच की है और परिणाम 'सरणी (0) {}' है। और फिर अगला क्या है? मैं अभी भी समझता हूं कि मैं इसे जांचने के बाद क्या करना चाहिए। मैं yii के साथ नौसिखिया हूँ। 'actionView' के लिए कोड: 'सार्वजनिक फ़ंक्शन एक्शन व्यू ($ आईडी) {$ $ को वापस करें-> प्रस्तुत करें (' देखें ', [' मॉडल '=> $ यह-> ढूंढें मॉडल ($ आईडी),]); } ' –

+0

मैंने कोड संपादित किया है: आपको' save() 'विधि को एक चर (" इसे 'सफलता' नाम दिया गया है) को विशेषता देने की आवश्यकता है और फिर उस चर को डंप करने के लिए यह देखने के लिए कि बचत सहेजी गई है या नहीं। –

+0

मैंने कोशिश की है, और नतीजा है 'बूल (झूठा) ' –

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-> अनुप्रेषित पर होता है। Main.php फ़ाइल में अपने यूआरएल नियमों की जांच करें। `actionView की यह यहीं कहीं main.php में स्थित होना चाहिए

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'enableStrictParsing' => false, 
    'rules' => [ 
     ... 
    ] 
], 
संबंधित मुद्दे