Изучаю Yii2, и думаю проблема очевидная, но не для меня.
При сохранении данных через форму, в бд заноситься пустая строка.
Использовал как QueryBuilder так и ActiveRecord. Удалял валидацию из модели, не помогло.
Информации, как ни странно вообще ноль на просторах снг.
Кроме оф. документации,и ее переводов, вообще ничего. Кучу видео пересмотрел, но кроме повторения одного и того же, ничего нового не узнал.
Костыли городить не хочу, и абы как туда всунуть инфу не тот путь.
Использовал стандартный виджет у видах:
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'name')->label('Имя') ?>
<?= $form->field($model, 'category')->label('Категория') ?>
<?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>
Модель
namespace app\models;
use yii\db\ActiveRecord;
class Products extends ActiveRecord
{
public $name;
public $category;
public static function tableName()
{
return 'products';
}
}
Контролер в нужном методе:
$model = new Products();
if ($model->load(Yii::$app->request->post()))
$model->save();
Без валидации, без проверок, просто сохранение в случае отправки формы постом.
P.S. Уже ненавижу этот фреймворк, через его документацию, хоть она и огромна, но детали не разъясняются. Потратил около недели на эту проблему...Помогите хоть идеями, возможно проблема напрямую не состоит во фреймворке.
Массовое присвоение применяется только к так называемым безопасным атрибутам, которые являются атрибутами, перечисленными в scenarios()->По умолчанию scenarios() будет возвращать все сценарии и атрибуты найденные в rules()-> автор говорит, что затёрrules()-> следовательно -> безопасных атрибутов нет, так как нетrules()-> следовательно -> по дефолту атрибуты будутnull, при том, чтоload()будет срабатывать (но в холостую) -> следовательно -> именно поэтому сохраняется модель с путыми атрибутами (так как они все равныnull). – Roman Grinyov Jun 29 '16 at 07:33An active attribute is one that is subject to validation in the current scenario.Сценария у нас нет, то есть он есть (default), но это пустой массив, так как нетrules()— то есть атрибутов нет, поэтому и не работает массовое присвоение. Аnullы назначает сам PHP, так как по умолчанию значение свойства равноnull. – Roman Grinyov Jun 29 '16 at 09:02return $this->render('index', ['model'=> $model]);Тоесть, есть возможность того что проблема кроется в валидации? Можете подсказать способ отключения ее, задав параметрами, ибо по другому вижу не получиться).
И еще одно, когда напрямую задаю например
$model->name = 'Dima';$model->save();, то это значение вставляется в поле инпута...Если генерировать CRUD через Gii, все равно не получается обновлять, или вставлять. Взять могу з базы - обратное нет.. Но все равно вам благодарен, спасибо за мысли
– dima buhayov Jun 29 '16 at 19:03