15
Сен
2017

Фильтрация yii2 выдает ошибку Call to a member function isAttributeRequired() on null

Пытаюсь сделать фильтрацию на yii2. Есть поле формы в ней 3 input(type="radio"), каждый инпут должен искать товары с ценой в данном диапазоне.

Код контроллера где выполняется поиск:

public function actionFilter()
        {
            $filter = trim(Yii::$app->request->get('filter'));
            $this->setMeta('MAC-SHOPPER | ' . $filter);
            if (!$filter) {
                return $this->render('filter');
            }
/*
            if ($filter <= 15) {

            $query = Product::find()->where(['<=', 'price', 15]);
            }*/

            $model = new Product();

            if($Button1) {
                $query = Product::find()->where(['between', 'price', "0", "50" ])->all();
            }
            //Создаем объект класса Pagination
            //Передаем тотал каунт - общее количество записей, которыe мы вытащим
            $pages = new Pagination(['totalCount' => $query->count(), 'pageSize' => 2, 'forcePageParam' => false, 'pageSizeParam' => false]);
            //Выполняем сам запрос
            //offset - с какой записи начинать
            //limit - количество записей
            $products = $query->offset($pages->offset)->limit($pages->limit)->all();
            return $this->render('filter', compact('products', 'pages', 'filter', 'model'));
        }

Модель товара:

<?php
    namespace app\models;
    use yii\db\ActiveRecord;
    //класс для таблицы категории
    class Product extends ActiveRecord
    {
        public $Button1;
        public $Button2;
        public $Button3;
        public $radioButtonList;


        //Поведение для картинок
             public function behaviors()
        {
            return [
                'image' => [
                    'class' => 'rico\yii2images\behaviors\ImageBehave',
                ]
            ];
        }




        public static function tableName()
        {
            return 'product';
        }

        public function getCategory()
        {
            //Связь таблиц, один продукт может иметь одну категорию (hasOne()) 
            return $this->hasOne(Category::className(), ['id' => 'category_id']);
        }



    }
?>

Сама форма:

<?php $form = ActiveForm::begin([
                                'id' => 'task-form',
                                'action' => \yii\helpers\Url::to(['category/filter']),
                                ]  
                                )?>





                         <?= $form->field($model, 'radioButtonList')
                                ->radioList([
                                    'Button1' => 'от 0-1500',     
                                    'Button2' => 'от 3000-5000',
                                    'Button3' => 'от 5000-20000'
                                ],[
                                    'id' => 'radio_button',

                                ]); ?>
                            <?= Html::submitButton('Найти', ['class' => 'btn btn-success']);?>
                        <?php $form = ActiveForm::end() ?>

Как мне поместить в свойства $Button1, $Button2, $Button3 price из таблицы товаров, чтобы при клике на определенный инпут он выводил товары как сделано в условии контроллера(то есть по диапазону цены)

Источник: https://ru.stackoverflow.com/questions/718789/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F-yii2-%D0%B2%D1%8B%D0%B4%D0%B0%D0%B5%D1%82-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D1%83-call-to-a-member-function-isattributerequired-on

Share

Тебе может это понравится...