2015-05-08 6 views
0

Как добавить значение по умолчанию к модели для сохранения?YII2 представить форму с заданным значением модели

+--------------+--------------+- 
| Field  | Type   | 
+--------------+--------------+- 
| id   | int(11)  | ->auto increment 
| grant  | double(12,2) | 
| lcc   | double(12,2) | 
| encoded_by | int(11)  | ->foreign key from tbl_user 
+--------------+--------------+- 

вот код формы html.

<?= $form->field($model, 'grant')->textInput() ?> 

<?= $form->field($model, 'lcc')->textInput() ?> 

ошибка лажу представить ..

SQLSTATE [23000]: Integrity нарушение ограничения: 1452 Невозможно добавить или обновление ребенок ряд:. Ограничение внешнего ключа не удается (ncddptbl_sp_bub , скованность tbl_sp_bub_ibfk_2 FOREIGN KEY (encoded_by) СПРАВОЧНЫЙ user (id)) SQL выполняется было: INSERT INTO tbl_sp_bub (grant, lcc) ЗНАЧЕНИЯ (2, 2)

Я понимаю, что должно быть значение для закодированного, являющегося идентификатором текущего пользователя.

Я пробовал это.

<?= $form->field($model, 'grant')->textInput() ?> 

<?= $form->field($model, 'lcc')->textInput() ?> 
<? $model->encoded_by=yii::$app->user->identity->id ?> 

, а также это в контроллере ...

public function actionCreate() 
    { 
     $model = new TblSpBub(); 
     $model->encoded_by=yii::$app->user->identity->id;//MY CODE 
     if ($model->load(Yii::$app->request->post()) && $model->save()) { 
      return $this->redirect(['index']); 
     } else { 
      return $this->renderAjax('create', [ 
       'model' => $model, 
      ]); 
     } 
    } 

, но безрезультатно ...

ответ

1

Там встроено поведение, чтобы решить этот называется BlameableBehavior. Здесь используется ваше дело. Добавьте это в свою модель:

public function behaviors() 
{ 
    return [ 
     [ 
      'class' => BlameableBehavior::className(), 
      'createdByAttribute' => 'encoded_by', 
      'updatedByAttribute' => false, // Set it to false if you need automatically update it on create only 
     ], 
    ]; 
} 

И не нужно обращаться с ним вручную.

+1

привет @arogachev. Это сработало. Огромное спасибо. – beginner

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