Ответы пользователя по тегу Yii
  • Как в yii2 отправить фатальную ошибку?

    @Mylistryx
    throw new AwesomeException, только зачем?
    Ответ написан
    2 комментария
  • Как в yii2 валидировать язык в поле формы?

    @Mylistryx
    выше ответ правильный, ну как вариант scenarios - on language===... и погнали, но выше ответ универсальнее, хотя и его можно побить на сценарии.
    Ответ написан
    Комментировать
  • Нужно запустить проект yii2, но как?

    @Mylistryx
    Это advanced шаблон приложения и тут 2 точки входа. То, что в basic выглядело как projectFolder/web тут будет соответственно:
    projectFolder/frontend/web
    projectFolder/backend/web
    В сети полно примеров конфигов для apache/nginx, так что гугл в помошь!
    Ответ написан
    1 комментарий
  • Как устранить ошибку проверки ssl сертификата в терминале при выполнении команды composer update?

    @Mylistryx
    composer config disable-tls true
    но это такое себе решение проблемы.
    Ответ написан
    Комментировать
  • Как правильно реализовать FullRestApi на yii2?

    @Mylistryx
    Наверное правильней на уровне роутов.
    'GET some' => '/site/index',
    'PUT some' => '/site/create',
    'POST some' => '/site/update'
    ....
    Ответ написан
    Комментировать
  • Как решить ошибку в переходе в админку?

    @Mylistryx
    Google. Первая строка.
    Headers already sent in C:\OpenServer\domains\yii-application\backend\config\main.php on line 1 - что написано?
    Ответ написан
  • Yii2 PurifyBehavior правильно ли я понял логику?

    @Mylistryx
    array_diff, если я правильно понял вопрос
    $new = Yii:$app-post;...
    $delete = array_diff($old, $new); // Удалить теги
    $add = array_diff($new, $old); // Добавить теги
    Что дальше и как - писать не буду, FanatPHP все равно сольет мое решение, и скорее всего его решение будет лучше!
    Ответ написан
    Комментировать
  • Существует ли "чистая" установка Yii2?

    @Mylistryx
    composer require "yiisoft/yii2:*" - таким образом вы получите действительно чистую установку. По сути у вас будет только файлы composer.json, composer.lock и папка vendor в которой будет лежать сам фреймворк с зависимостями. Вы сможете строить структуру своего приложения самостоятельно, т.е. сами решать, где у вас будут лежать контроллеры, модели, view и прочее. Это можно изменить и в готовых шаблонах basic/advanced.
    Теперь по шаблонам:
    Basic - пример организации описанного выше. Используется обычно для небольших приложений с одной точкой входа (/web/index.php). Есть как свои преимущества, так и недостатки (если не менять структуру). Из преимуществ - реально проще, нет дублирования классов и т.д. Из недостатков - расширяемость только модулями, не очень удобный способ хранения конфигов (нельзя переопределять локальными значениями). Всё это конечно можно легко устранить.
    Advanced - типа расширенный вариант. Нужен далеко не всем. Позволяет организовать несколько точек входа (frontend и backend по умолчанию) и легко добавлять свои. К примеру копируем папку backend, правим в ней namespace`ы и вуаля, у нас есть API, который настраиваем на уровне конфигов и он нам отдает только JSON. Мне так удобней по крайней мере. При этом все приложения могут использовать общие компоненты\модели\сервисы и т.д. из папки common.
    Для лучшего понимания я рекомендую посмотреть\прочитать все, что есть в блоге у Elisdn (ссылку давали выше), мне в свое время это очень сильно помогло. Ну и рекомендую сначала ознакомиться с его же курсом по сервисному слою. Привыкнув к AR и т.д. тяжело потом будет перейти на что то другое. К примеру у меня сейчас как источники данных используется несколько сторонних сервисов, SOAP сервис и своя БД (и не одна!). Без сервисного слоя это было бы ооочень тяжело поддерживать и обслуживать в дальнейшем. А так - у меня есть сервисный слой, который представляет собой "черный ящик", и что и как у него там происходит внутри меня в принципе не интересует.
    В интернете сейчас несколько книг и обучающих курсов обучающих работе с Yii2, но из всего этого я рекомендую Elisdn! 99% курсов дают общее понимание о фреймворке, но загоняют в жесткие рамки, что помоему очень плохо. Отсюда и мнение, что Yii2 умирает и всё прочее.
    Ответ написан
    Комментировать
  • Как правильно пользоваться created_at и updated_at (дата создания и обновления поста)?

    @Mylistryx
    created_at и updated_at использую как логгер создания и обновления публикации, а вот сам статус того, что статья опубликована можно изменять либо через статус записи, либо поле published, которое по умолчанию null, но если мы передаем из формы флаг того, что данная статья опубликована, то делаем $model->touch('published'); В TimestampBehavior есть метод пушаший дату в нужное свойство класса.
    Ответ написан
  • Как из анонимной функции вернуть форму ActiveForm в YII2?

    @Mylistryx
    $this->render()
    Ответ написан
    Комментировать
  • Как из селекта взять массив и разложить по инпутам?

    @Mylistryx
    Ну ширину и высоту можно передать в data- атрибутах, но обработчик onChange придется свой написать видимо.
    Ответ написан
    Комментировать
  • Каким образом лучше будет сделать логику регистрации?

    @Mylistryx
    actionStep1() - тут логин\пароль, валидируем, если все ок, то сохраняем в БД, запоминаем id нового пользователя и редиректим на step2
    actionStep2() - Заполнение инфы о пользователе, валидируем, сохраняем в модель профиля или в модель пользователя, зависит от структуры бд и редиректим на step3
    actionStep3() - И еще какая-то линая информация, валидация, сохраняем и редирект куда требуется.

    P.S. Если такой набор для регистрации необходим для функционала, то ладно, но я бы скорее всего сбежал, если бы для какой то мелочи меня просили заполнять принудительно и на первом этапе.
    Ответ написан
    3 комментария
  • Почему не сработала транзакция при откате миграции в yii2?

    @Mylistryx
    Если БД MySQL, то там, если мне не изменяет память, не работают транзакции на создание\удаление таблиц. Столкнулся с подобной проблемой при создании таблиц, например:
    Создать таблицу А, добавить внешний ключ А к Б. Все это обернуто в safeUp. Если в описании создания ключа Б ошибка, то таблицу А миграция создаст, а на создание ключа вывалит эксепшен. Отредактировав эту миграцию при попытке ее применить повторно будет вылетать эксепшен, что таблица А уже существует.
    Ответ написан
    5 комментариев
  • Yii2 best practics. Как правильно организовать наследование моделей?

    @Mylistryx
    public function getOrder(){
    // было
    return $this->hasOne(app\common\models\Order::className(), ['user_id' => 'id']);
    // стало
    return $this->hasOne(Order::className(), ['user_id' => 'id']);
    }
    поскольку у них один неймспейс, то отработает и в common и в front/back. При этом будет брать рядомлежащий класс.
    Единственный ньюанс, что файл Order должен присутствовать во всех приложениях (common,front,back).
    Ответ написан
    1 комментарий
  • Как настроить lamp для отлова ошибок в Yii1?

    @Mylistryx
    defined('YII_DEBUG') or define('YII_DEBUG', true);
    defined('YII_ENV') or define('YII_ENV', 'dev'); // - вот это надо добавить!

    Пардон, не доглядел, что это Yii1, но в теории там тоже надо включить режим разработки.
    Ответ написан
    1 комментарий
  • Почему не работает роутинг на Yii2? на OpenServer?

    @Mylistryx
    Самое простое решение:
    1. В опен-сервере включаете управление доменами Ручное+Автопоиск (можно просто ручное)
    2. Добавляете домен (к примеру) test.local, папка для него \basic\web
    Перезапускаете сервер и все работает!

    Для advanced шаблона я создаю 2 домена, например test.local в папку \advanced\frontend\web и admin.test.local в папку \advanced\backend\web

    Такой конфиг позволяет не городить в .htaccess, а использовать дефолтный вариант.

    Ну и для проверки очистить массив rules в конфиге UrlManager, т.е. 'rules' => []
    Ответ написан
    Комментировать
  • Где хранить константы в yii2?

    @Mylistryx
    В Yii2 есть алиасы, www.yiiframework.com/doc-2.0/guide-concept-aliases.html читайте документацию, прежде чем писать велосипеды!
    И да, оформление вопроса подразумевает под собой положительный ответ на вопрос "Я искал, но не нашел...", человек, ты не просто плохо искал, ты даже не пытался искать!
    Ответ написан
    Комментировать
  • Динамическая генерация изображений в yii2 - какой экстеншн выбрать?

    @Mylistryx
    Может я не совсем правильно понял вопрос, но я бы создал правило для Apache/nginx, что если файл не существует на уровне FS, то запросить этот файл через скрипт с параметрами.
    Пример
    Запрошен файл '/assets/posts/thumb/345345223ab7f8c0eab.jpg'
    nginx проверяет, есть ли файл и если есть, то отдает его напрямую, если же нет, то:
    Проверяем, есть ли у нас в папке загрузок (я обычно делаю эту папку выше папки DOCUMENT_ROOT)
    Если есть, то ресайзим его под профиль thumb, при необходимости накладываем ватермарк, кладем в /assets/post/thumb, отдаем пользователю.
    В противном случае отдаем 404.
    Ответ написан
    1 комментарий
  • Как в Yii2 создать модель с динамическими атрибутами (EAV)?

    @Mylistryx
    В модели реализовать магические методы __get(), __set(), __isset() которые завернуть на функции работающие со связанными объектами. Не проверял в Yii2, но в Kohana в свое время делал именно так.
    Ответ написан
    Комментировать