Ответы пользователя по тегу Yii
  • Как в Yii2 организовать scope?

    MrLoki
    @MrLoki
    I will.
    Начните уже читать доки, это же основа фреймворка вообще.
    www.yiiframework.com/doc-2.0/guide-db-active-recor...

    class Model extends ActiveRecord {
        public static function find() {
            return new MyQuery(get_called_class());
        }
    }
    
    class MyQuery extends ActiveQuery {
        public function withFullUrl($url) {
            $this->andWhere(['full_url' => $url]);
            return $this;
        }
    }


    Теперь модель и query разделены, поэтому всё что относится к запросам и формированию этого самого запроса — в отдельном классе.
    Ответ написан
    1 комментарий
  • Yii2. Как организовать обмен данными БД между разработчиками?

    MrLoki
    @MrLoki
    I will.
    Как вариант: www.yiiframework.com/doc-2.0/guide-db-migrations.html правда для больших справочников всё равно придётся делать дампы и накатывать их из миграции.

    Либо шареный коннект к одной удаленной БД для всех разработчиков. Но этот вариант может привести к другим неожиданным побочным эффектам.
    Ответ написан
    7 комментариев
  • Зачем в yii2 классы и объекты для генерации html?

    MrLoki
    @MrLoki
    I will.
    Ну вы даёте, одну из толковых частей фреймворка обзываете.
    В большом и сложном проекте, как правило, есть большая и сложная логика, а большая и сложная логика — предполагает большие и сложные условия. Городить условия во view — дело неблагодарное, потому что view — только представление и ничего больше, и чем оно проще тем лучше.

    Далее по списку.
    Вы в своем примере в HTML совершили ошибку, которая будет стоить вам гибкости.
    href="/index.php?r=/client/create"
    Тут должен быть использован генератор url, но тогда код становится уже сложнее и козырнуть «простотой и понятностью» не выйдет, не так ли? Это позволяет, например на начальном этапе не париться о «красивых» URL, ссылаясь на action/controller, а ближе к концу за 1 раз настроить роутинг по всему проекту, ничего не меняя во вью.

    Попробуйте нарисовать checkbox в html. Не простой, а выбранность которого будет зависеть, от параметра модели. Я подскажу:
    <input type="checkbox" value="1" name="name" <?php if($model->selected) ?>checked <?php endif ?>>

    Уже не так красиво?
    Ещё можете нарисовать select чтоб уж совсем убедиться в необходимости Html-хелпера.

    Сейчас вы можете сказать, про вынесение генерации HTML в файлы, но я вас заверю. Во-первых это породит либо множество файлов и кучу условий (одна форма с кастомным select другая со стоковым, но с label, у третьей ещё что-то), и подключение этой кучи файлов будет выполняться дольше, а без компиляции шаблонов — постоянно дольше. Во-вторых, вы снова теряете в гибкости.

    В Yii есть проблемы, но хелпер Html — не одна из них.
    Ответ написан
    Комментировать
  • Насколько хороша либо плоха сильная связанность в Yii, и возможно ли сделать подобие Service Locator для Yii?

    MrLoki
    @MrLoki
    I will.
    SL или DiC, для Yii не подходит, об этом говорили создатели фреймворка, в том числе на хабре. Для внешней логики можно накрутить что-то свое.
    Но внутри
    wbP2PVdFiMqkfBqjE0RyS8E6m.png

    Если смотрите на DiC или SL, попробуйте Symfony2, Zend 2, Laravel 4 или что-то еще. У Yii свой путь, привыкайте к глобальному доступу.

    Отвечая на вопрос разруливания компонентов.
    Конфигурируем в секции components и, получаем доступ через Yii::app(). Где угодно.

    Модули, есть. Но работают странно, и мы с ними друг-друга не поняли. Попробуйте вы.
    Ответ написан
    4 комментария