2015-02-21 23 views
5

Tôi muốn thực hiện thao tác CRUD bằng Công cụ GII, nhưng tôi nhận được thông báo lỗi Missing required parameters: id, khi tôi cố gắng lưu bài đăng của mình. điều khiểnYêu cầu không hợp lệ (# 400) - Thiếu tham số bắt buộc: id trong YII2

bài viết:

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

Tại sao tôi luôn nhận được lỗi này?

+0

Hiện mã của 'ActionView() '. – arogachev

+0

@arogachev đây là 'actionView': ' actionView công khai ($ id) { trả về $ this-> render ('view', [ 'model' => $ this-> findModel ($ id) , ]); } ' –

Trả lời

3

Hãy thử

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

Hãy chắc chắn rằng bạn làm $model->save(false) và xem liệu nếu nó hoạt động.

+0

cảm ơn bạn @Abhimanyu, nó hoạt động :) nhưng tôi không biết tại sao. bạn có thể giải thích tại sao '$ model-> save (false)'. tại sao 'sai'? –

+0

@Shinoda_ Khi bạn sử dụng '$ model-> save (false)', nó bỏ qua xác thực. Nếu điều này làm việc cho bạn, điều đó có nghĩa là 'quy tắc' mà bạn đã đề cập trong' mô hình' của bạn là không chính xác. Sửa 'quy tắc' của bạn và thử lưu mô hình của bạn mà không có' false'. Nếu mọi thứ đều đúng, nó sẽ hoạt động. –

+0

cảm ơn bạn, tôi biết bây giờ đâu là sai lầm của tôi. –

0

Một vài điều bạn có thể thử ở đây:

  • Kiểm tra xem $model->post_id là null trước khi sử dụng nó, một cái gì đó như thế này:

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

  • Kiểm tra xem save() đã thành công trước khi sử dụng:

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

Khác hơn thế, tôi muốn khuyên bạn nên gửi mã cho actionView và lớp Post cũng

+0

Tôi đã kiểm tra' save() 'và kết quả là' mảng (0) {} '. và sau đó những gì tiếp theo? tôi vẫn hiểu tôi nên làm gì sau khi tôi kiểm tra nó. Tôi là newbie với yii. code cho 'actionView':' public function actionView ($ id) {return $ this-> render ('view', ['model' => $ this-> findModel ($ id),]); } ' –

+0

Tôi đã chỉnh sửa mã: bạn cần phải gán thuộc tính' save() 'vào một biến (tôi đặt tên nó là' $ success') và sau đó kết xuất biến đó để xem liệu phép lưu có hoạt động hay không. –

+0

Tôi đã thử, và kết quả là 'bool (false) ' –

0

thử này

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

Nó rõ ràng là xảy ra trên $ this-> redirect. Kiểm tra các quy tắc url của bạn trong tệp main.php. Nên nằm đâu đó ở đây trong main.php

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'enableStrictParsing' => false, 
    'rules' => [ 
     ... 
    ] 
], 
Các vấn đề liên quan