• DetailView и GridView. Вывод названия сточки в связанных таблицах. Yii2?

    @MaikMain Автор вопроса
    slo_nik, И вот еще один:
    <?php
    
    namespace common\models;
    
    use Yii;
    use yii\base\Model;
    use yii\data\ActiveDataProvider;
    use common\models\Author;
    
    /**
     * AuthorSearch represents the model behind the search form about `common\models\Author`.
     */
    class AuthorSearch extends Author
    {
        /**
         * @inheritdoc
         */
        public function rules()
        {
            return [
                [['id', 'status'], 'integer'],
                [['name'], 'safe'],
            ];
        }
    
        /**
         * @inheritdoc
         */
        public function scenarios()
        {
            // bypass scenarios() implementation in the parent class
            return Model::scenarios();
        }
    
        /**
         * Creates data provider instance with search query applied
         *
         * @param array $params
         *
         * @return ActiveDataProvider
         */
        public function search($params)
        {
            $query = Author::find();
    
            // add conditions that should always apply here
    
            $dataProvider = new ActiveDataProvider([
                'query' => $query,
            ]);
    
            $this->load($params);
    
            if (!$this->validate()) {
                // uncomment the following line if you do not want to return any records when validation fails
                // $query->where('0=1');
                return $dataProvider;
            }
    
            // grid filtering conditions
            $query->andFilterWhere([
                'id' => $this->id,
                'status' => $this->status,
            ]);
    
            $query->andFilterWhere(['like', 'name', $this->name]);
    
            return $dataProvider;
        }
    }
  • DetailView и GridView. Вывод названия сточки в связанных таблицах. Yii2?

    @MaikMain Автор вопроса
    slo_nik, Я в него никаких изменений не вносил. Он в таком виде, в котором CRUD генерировал
    <?php
    
    namespace common\models;
    
    use Yii;
    use yii\base\Model;
    use yii\data\ActiveDataProvider;
    use common\models\Course;
    
    /**
     * CourseSearch represents the model behind the search form about `common\models\Course`.
     */
    class CourseSearch extends Course
    {
        /**
         * @inheritdoc
         */
        public function rules()
        {
            return [
                [['id', 'category_id', 'status_id', 'author', 'price'], 'integer'],
                [['name', 'title', 'url', 'content', 'keywords', 'description', 'link', 'partlink'], 'safe'],
            ];
        }
    
        /**
         * @inheritdoc
         */
        public function scenarios()
        {
            // bypass scenarios() implementation in the parent class
            return Model::scenarios();
        }
    
        /**
         * Creates data provider instance with search query applied
         *
         * @param array $params
         *
         * @return ActiveDataProvider
         */
        public function search($params)
        {
            $query = Course::find();
    
            // add conditions that should always apply here
    
            $dataProvider = new ActiveDataProvider([
                'query' => $query,
            ]);
    
            $this->load($params);
    
            if (!$this->validate()) {
                // uncomment the following line if you do not want to return any records when validation fails
                // $query->where('0=1');
                return $dataProvider;
            }
    
            // grid filtering conditions
            $query->andFilterWhere([
                'id' => $this->id,
                'category_id' => $this->category_id,
                'status_id' => $this->status_id,
                'author' => $this->author,
            ]);
    
            $query->andFilterWhere(['like', 'name', $this->name])
                ->andFilterWhere(['like', 'title', $this->title])
                ->andFilterWhere(['like', 'url', $this->url])
                ->andFilterWhere(['like', 'content', $this->content])
                ->andFilterWhere(['like', 'keywords', $this->keywords])
                ->andFilterWhere(['like', 'description', $this->description])
                ->andFilterWhere(['like', 'description', $this->description])
                ->andFilterWhere(['like', 'link', $this->link])
                ->andFilterWhere(['like', 'partlink', $this->partlink]);
    
            return $dataProvider;
        }
    }
  • DetailView и GridView. Вывод названия сточки в связанных таблицах. Yii2?

    @MaikMain Автор вопроса
    Спасибо за Ваш ответ. В CourseController:
    public function actionIndex()
        {
            $searchModel = new CourseSearch();
            $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    		$dataProvider->setSort([
                    'defaultOrder' => [
                        'id' => SORT_DESC
                    ]
              ]);
          	$dataProvider->setPagination([
                    'pageSize' => 10,
                    'forcePageParam' => false,
                    'pageSizeParam' => false
            ]);
            return $this->render('index', [
                'searchModel' => $searchModel,
                'dataProvider' => $dataProvider,
            ]);
        }

    Я кое-что изменил и теперь это выглядит вот так (в views/course/_form.php):
    <?= $form->field($model, 'author',['options' => ['class' => 'col-xs-2']])->dropDownList(\common\models\Author::getList());?>

    В моделе (Author):
    public static function getList()
        {
            return ArrayHelper::map(self::find()->all(), 'id', 'name');
        }

    И в views/course/index.php вот так:
    [
      'attribute' => 'author',
      'value' => 'authorName',
       'filter' => \common\models\Author::getList(),
       'options' => ['width' => '200']
    ],

    В моделе Course:
    public function getAuthor()
        {
            return $this->hasOne(Author::className(), ['id' => 'author']);
        }
    
        public function getAuthorName()
        {
            return (isset($this->author)) ? $this->author->name : 'не задано';
        }

    Я вот только не пойму, как и где нужно сделать : $query = Author::find()->with('course');
    И я заметил, что фильтрация работает как нужно, но просто не отображается название автора в курсах. Но в форме он выпадающим списком нормально выводится
  • Какую оперативку поставить в комп?

    @MaikMain Автор вопроса
    Спасибо за ответ. Но мне легче будет самому купить и установить. Вот только встал вопрос какую именно стоит покупать
  • Сложение всех значений массива?

    @MaikMain Автор вопроса
    Спасибо большое))
  • Проблема с выбранными элементами через checkbox?

    @MaikMain Автор вопроса
    Максим Тимофеев: Вот я записал видео, где рассказал о своей проблеме https://youtu.be/31WkfMYmKYc
  • Проблема с выбранными элементами через checkbox?

    @MaikMain Автор вопроса
    Максим Тимофеев: Таким образом у меня добавляются товары в корзину, корзина работает на сессии.
    Вот код для добавления товара в корзину.
    Контроллер:
    public function actionNewadd()
    	{
    	    $id = Yii::$app->request->get('id');
    	    $offer = Yii::$app->request->get('offer');
    	    $qty = Yii::$app->request->get('qty');
    	    $qty = !$qty ? 1 : $qty;
    	    $tovar = Tovar::find()->where(['id'=>$id])->asArray()->one();
    	    $offer = OfferPrise::find()->where(['id'=>$offer])->asArray()->one();
    	    $offer_size = OfferSize::find()->where(['id_offer_prise'=>$offer['id']])->asArray()->one();
    	    if(empty($tovar)) return false;
    	    
    	    $session = Yii::$app->session;
    	    $session->open();
    	    $cart = new Cart();
    	    $cart->addCart($tovar, $qty, $offer, $offer_size);
    	    if(!Yii::$app->request->isAjax) {
                return $this->redirect(Yii::$app->request->referrer);
            }
    	    $this->layout = false;
    	    return $this->render('cart-modal', compact('session'));
    	}

    Модель:
    public function addCart($tovar, $qty = 1, $offer, $offer_size)
        {
    
            if (isset($_SESSION['cart'][$offer['id']])) {
                $_SESSION['cart'][$offer['id']]['qty'] += $qty;
            } else {
                $_SESSION['cart'][$offer['id']] = [
                    'qty' => $qty,
                    'name' => $tovar['name'],
                    'tovar' => $tovar['id'],
                    'size' => $offer_size['value'],
                    'prise' => $offer['value'],
                ];
            }
            $_SESSION['cart.qty'] = isset($_SESSION['cart.qty']) ? $_SESSION['cart.qty'] + $qty : $qty;
            $_SESSION['cart.sum'] = isset($_SESSION['cart.sum']) ? $_SESSION['cart.sum'] + $qty * $offer['value'] : $qty * $offer['value'];
        }
  • Проблема с выбранными элементами через checkbox?

    @MaikMain Автор вопроса
    Максим Тимофеев: К примеру, пользователь заходит на сайт и видит несколько размеров. Он выбирает несколько размеров (от 2-х и более). Но в корзину добавляется только 1 размер. На данный момент мы имеем 1 добавленный размер, а пользователь выбирал несколько. Он снова нажимает на кнопку добавления в корзину, и в этот раз уже добавляются все выбранные размеры.
    Так происходит только когда человек впервые заходит на сайт, а потом работает нормально.
  • Почему не работает searchModel.Yii2?

    @MaikMain Автор вопроса
    Спасибо большое) Это то, что нужно))
  • Почему не работает searchModel.Yii2?

    @MaikMain Автор вопроса
    Сергей Цветошенко: Мне нужно сделать вывод данных по заданной сортировке. А как другим способом это реализовать?
  • Почему не работает searchModel.Yii2?

    @MaikMain Автор вопроса
    Сергей Цветошенко: Я его передаю, просто если из выше приведенного кода убрать:
    $dataProvider = new ActiveDataProvider([
                'query' => Orders::find(),
                'pagination' => [
                    'pageSize' => 10,
                    'forcePageParam' => false,
                    'pageSizeParam' => false
                ],
                'sort' => [
                    'defaultOrder' => [
                        'statys' => SORT_ASC
                    ]
                ]
            ]);

    То все прекрасно работает
  • Как сделать выборку сразу по нескольким категориям.Yii2?

    @MaikMain Автор вопроса
    Максим Федоров: На сайте у меня в принципе двухуровневое меню, но функционально может быть до бесконечности
  • Как сделать выборку сразу по нескольким категориям.Yii2?

    @MaikMain Автор вопроса
    padlyuck: Спасибо, конечно я никогда о таком не слышал. Но буду что-то колдовать
  • Как сделать выборку сразу по нескольким категориям.Yii2?

    @MaikMain Автор вопроса
    У меня может быть бесконечное число вложений
  • Как сделать выборку сразу по нескольким категориям.Yii2?

    @MaikMain Автор вопроса
    AlikDex: Один товар может быть только в одной категории. В одной категории может быть много товаров