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

    @AlikDex
    Нет такого расширения. Потому как оно бессмысленно. Подобный функционал создается буквально добавлением файлинпута в форму с последующей отправкой его содержимого вместе с остальными данными. Вам нужно, это найти библиотеку, которая сможет отразить на клинете содержимое этого файлинпута. Либо самому такую написать, это не сложно. В качестве небольшого но исчерпывающего мануала по работе с этим элементом формы на клиенте: https://developer.mozilla.org/ru/docs/Web/API/File...
    Ответ написан
    Комментировать
  • Как реализуется регистрация/авторизация на Yii2?

    @AlikDex
    в Yii2 данные по авторизации пишутся в сессию. Запросы в базу будут только если нужны будут данные по пользователю (отобразить никнейм например).
    Ответ написан
    Комментировать
  • Как устранить утечку памяти моделей yii2?

    @AlikDex
    отключить дебаг и логирование для консольного приложения. Все запросы пишутся сначала в массив, а потом сбрасываются в файлы(если включен лог). Отсюда и так называемая утечка.
    Ответ написан
    2 комментария
  • Как выбрать с помощью DISTINCT в yii2 (AR)?

    @AlikDex
    при такой выборе я получаю только уникальные строки в БД с полями sender_id и recipient_id, но там ведь есть еще другие поля. Как мне их получить таким образом, чтобы они не попали под DISTINCT?

    Это противоречие. Вам или уникальные, или другие фильтры использовать.

    И вообще таких парных строк может быть неограниченное количество. Так вот, можно ли как то задать distinct таким образом, чтобы такие парные строки считались за одну?

    Это как? Как две разные строки считать одинаковыми?! Головой подумайте!

    По второму вопросу что-то вроде:
    SELECT `sender_id`, `recipient_id`
    FROM `table`
    GROUP BY (`sender_id`, `recipient_id`)
    Ответ написан
  • Создание миниатюр в Yii2?

    @AlikDex
    1) по разному, от задачи. Иногда 1 хватает, иногда 4 нужно(на главной список новостей, для виджета, миниатюры в самой новости и для мобил)
    2) Исходя из макета. но в основном от 180 в ширину до 320. бывает и меньше.
    3) не знаю, обычно сам
    4) обычно храню ссылку на оригинал, а из нее уже миниатюры подставляю.

    По 4 пукнту:
    В базе что-то типа /short/path/image1.jpg это короткая ссылка на оригинал.
    на сервере лежит в папке /var/www/blabla/site.com/uploads/images/src/short/path/image1.jpg
    а миниатюры соответственно:
    на сервере лежит в папке /var/www/blabla/site.com/uploads/images/240x180/short/path/image1.jpg
    Ответ написан
    Комментировать
  • Как правильно сделать запрос, что бы подсчитать рейтинг?

    @AlikDex
    Как-то так
    $sql = 'SELECT SUM(`rateNum`) as `sum` FROM `' . OrdersHasReviewsRating::tableName() . '` WHERE `performer_id`=:performer_id';
    $ratingSummary = Yii::$app->db->createCommand($sql)
        ->bindValue(':performer_id', Yii::$app->user->id)
        ->queryScalar(); // или ->queryOne();
    Ответ написан
  • Yii2 AutoCompleate дубляж ввода текста?

    @AlikDex
    $query->select('title')
                ->from('profile_has_category')
                ->where('title LIKE "%' . $q . '%"')
                ->groupBy('title')
                ->orderBy('title');


    Или
    $query->select('DISTINCT title')
                ->from('profile_has_category')
                ->where('title LIKE "%' . $q . '%"')
                ->orderBy('title');
    Ответ написан
    2 комментария
  • Как в Yii2 в get запросе убрать название формы?

    @AlikDex
    Если понимаете о чем речь, то ответ тут:
    stackoverflow.com/questions/21779085/yii2-how-does...

    А если развернуто нужно, то получится довольно объемно =)
    Могу позже расписать. Либо вечером, либо завтра, если нужно.
    Ответ написан
    Комментировать
  • Как перевести mysql запрос в Active Record Yii2?

    @AlikDex
    Ideas::find()
        ->select(['i.id', 'i.src_small as src']) // Возможно просто одной сторокой select('i.id, i.src_small as src'). Проверить под рукой правильность нет.
        ->from(['i' => Ideas::tableName()])
        ->join('JOIN', ['f' => IdeasFilters::tableName()], 'f.id=i.id') // USING в yii2 нету поэтому так
        ->where(['f.filter' => $array]) // $array чистый массив в 1 колонку с числовыми индексами 0,1,2 etc. В общем обычный массив вида [23,43,52]
        ->groupBy('i.id')
        ->having(['COUNT(DISTINCT f.filter)' => count($array)])
        ->orderBy(['i.id' => SORT_DESC])
        ->all(); // или one() смотря что нужно.

    Классы названы стандартно при создании моделей через gii. Если у вас другие модели, то измените название. В целом должно работать.

    P.S.
    Забыл. У модели Ideas нужно будет добавить свойство
    public $src;
    Т.к. дефолтно его нет, но для объекта AR оно будет использоваться(в запросе есть i.src_small as src). Однако Yii не позволит создать "на лету" это свойство, и поэтому надо его прописать.
    Ответ написан
    3 комментария
  • Как перенести проект с Codeigniter на Yii2?

    @AlikDex
    Приходилось делать такое =)
    Как я делал. Сначала переработал бд, затем переписал CI под эту бд. Поставил все на рабочий сайт. Потихоньку начал переделывать морду сайта ипользуя Yii2 (на зеркале) не добавляя ничего нового. Просто повторяя тот старый функционал(благо его немного). Когда морда была закончена и протестирована - поставил ее. Админка уехала на домен 3 уровня и осталась на CI. Чуть позже также была переделана с минимальным необходимым и установлена как рабочая.

    Самым трудным было переписать код игнайтер под новую бд, т.к. бесил до состояния "аж трисет!". Но если базу не надо переделывать, то тут вообще нет проблем. Просто брать и пилить все по новой. А старое пусть работает пока так.

    Совмещать 2 фреймворка, как написал index0h: это по моему черезчур усложнено. Тут главное не торопится =) Хотя, наверное, смотря какой проект...
    Ответ написан
    Комментировать
  • Как в yii2 указать путь для картинки с backend на frontend?

    @AlikDex
    Ответ вроде на поверхности лежит. Задайте жесткие алиасы путей до фронтенда в каком-нибудь bootstrap.php в конфиге common. Там же можно задать алиас для урла с привязкой к домену.
    Ответ написан
    Комментировать
  • Как в Yii2 строить запросы в конструкторе с JOIN?

    @AlikDex
    Comments::find()
        ->select('с.text, с.date_create, с.firstname, с.lastname')
        ->from([Comments::tableName() . ' с'])
        ->innerJoin('{{%users}} as u', 'с.user_id  = u.id')
        ->where(['с.status' => Comments::STATUS_PUBLIC])
    Ответ написан
    Комментировать
  • Yii 2 не видит эшен?

    @AlikDex
    для экшенов контроллеров модуля надо правило несколько другое:
    '<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',

    Это разумеется првило для всех.
    кастомно будет несколько иначе. Например убрать из урла myshop:
    '<controller:\w+>/<action:\w+>' => 'myshop/<controller>/<action>',
    Ответ написан
    Комментировать
  • Как переопределить стили виджета?

    @AlikDex
    Можно в кофиге компонент переопределить, делается это так:
    'assetManager' => [
            'bundles' => [
                'some\namespace\SomeAsset' => [
                    'sourcePath' => '@web/myassets/folder',   // redeclare default folder
                    'css' => [
                        'my_widget_style.css',
                        'other_style.css',
                    ],
                    'js' => [
                    ],
                    'depends' => [
                    ],
                ],
            ],
        ],
    Ответ написан
    Комментировать
  • Как предотвратить xss уязвимость на yii2?

    @AlikDex
    причем тут xss?
    Вашем случае будет достаточно:
    public function actionPage($target = '') {
        $get = News::find()->where(['link' => $target])->one();
    
        if (null === $get) // В случае неудачного поиска  метод one() возвращает null всегда
            throw new NotFoundHttpException('Page not found');
    
        return $this->render('page', ['target' => $target, 'get' => $get,]); 
    }
    Ответ написан
    3 комментария
  • Для чего нужны модули?

    @AlikDex
    Мо́дульное программи́рование — это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам.[1] Использование модульного программирования позволяет упростить тестирование программы и обнаружение ошибок. Аппаратно-зависимые подзадачи могут быть строго отделены от других подзадач, что улучшает мобильность создаваемых программ.

    Мо́дуль — функционально законченный фрагмент программы. Во многих языках (но далеко не обязательно) оформляется в виде отдельного файла с исходным кодом или поименованной непрерывной её части. Некоторые языки предусматривают объединение модулей в пакеты.

    ссыль

    А значит так и следует использовать. Например блок комментариев вполне заслуживает стать модулем. Поскольку ему нужно знать только идентификаторы сущностей, в которых он вызывается. Такой модуль можно использовать для чего угодно. Например комментировать статьи, фотографии, видео и все такое прочее. Которые в свою очередь тоже могут являться отдельными модулями =)
    Ответ написан
    Комментировать
  • Как вывести переменную в degugger Yii2?

    @AlikDex
    можно вывести в лог www.yiiframework.com/doc-2.0/yii-baseyii.html#info...
    Ответ написан
    Комментировать
  • Как интегрировать webix в Yii2?

    @AlikDex
    очевидно декодить жсон, валидировать данные и записать в таблицу как обычно.
    Поможет в этом:
    https://github.com/yiisoft/yii2/blob/master/docs/g...
    Ответ написан
  • Yii 2 запрет к модулю?

    @AlikDex
    Точно не помню щас вот. Но что-то типа:
    'rules' => [
                        [
                            'actions' => ['login', 'error'], // тут список разрешенных экшенов
                            'allow' => true,
                            'roles' => ['@'],
                        ],
                        [
                            'actions' => ['*'],
                            'allow' => true,
                            'roles' => ['admin'],
                        ],
                    ],

    Указываешь роль, и что ей разрешено делать перечисляя список методов.
    Ответ написан
  • Yii использование ООП?

    @AlikDex
    Наследование
    По моему все отлично с наследованием. Непонятно причем тут Yii.
    Ответ написан