Как установить безопасные атрибуты yii 2?

366
20 апреля 2017, 18:18

Работаю с базовой версией. Собираю данные с формы и хочу записать их в базу массово, через атрибуты. Вот мои правила валидации:

public function rules()
{
    return [
        [['name', 'date', 'parking_place', 'parking_time','spent_fuel', 'remain_fuel', 'distance'],
            'required', 'message' => 'Поле не может быть пустым'],
        [['parking_time','spent_fuel', 'remain_fuel', 'distance'],
            'integer', 'message' => 'Значение должно быть целым числом'],
        [['name', 'date', 'parking_place', 'parking_time','spent_fuel', 'remain_fuel', 'distance'],
            'safe'],
    ];
}

Вот так я пытаюсь записать данные в базу:

$model->attributes = Yii::$app->request->post();
$fleet = new Fleet();
$fleet->attributes = $model->attributes;
$fleet->save();

В массиве $model->attributes есть все значения, а вот в $fleet->attributes есть только названия полей, без значений.

Answer 1

Как я писал в коде, но забыл упомянуть, я использовал две модели Report и Fleet. Решением оказалось скопировать правила валидации в Fleet. Код пришёл к виду:

$model = new Fleet();
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {

        $model->save();
        Yii::$app->session->setFlash('reportFormSubmitted');
        return $this->refresh();
    }
READ ALSO
Шаблон стратегия

Шаблон стратегия

Есть такое задание:

327
Добавление товара в корзину и удаление

Добавление товара в корзину и удаление

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

254