• Где правильнее проверять пользовательские данные? В контроллере или модели?

    IvanCher
    @IvanCher
    Александр Талалаев: если такой подход использовать, то где-то обязательно раздуется. А если использовать в некоторых экшенах один подход, в некоторых другой, то это пипец какой-то :) Это и называется, что зависит не от проекта, а от квалификации программиста.
    Хорошо, пример.
    Вы должны свалидировать данные о файле и сохранить его. Вы это сделали в 3 строчки в контролере(по факту в нескольких контролерах и еще наверняка в нескольких экшенах), и вроде всё окей. Проект развивается и нам уже нужно писать не себе на диск, а по АПИ. Поздравляю, вы встряли.
    В случае следования сразу правильной парадигме, мы просто меняем описание сущности(а может даже и его не придется менять) и меняем процесс валидации/записи в моделе.
    Патерны, парадигмы и "бест практикс" созданны именно для предотвращения "казусов", с которыми уже вдоволь навстречались профессионалы.

    По поводу того, что иногда производительнее делать это в контролере - и да, и нет. Вообще производительнее писать на Си или асемблере, будет пользы в несколько раз точно больше, чем экономить на одном вызове и создании доп. объекта.
  • Где правильнее проверять пользовательские данные? В контроллере или модели?

    IvanCher
    @IvanCher
    Автор, срочно принимай чью-то сторону и принимай сам для себя решения из уже сказанного, т.к. сказано много. Ссылку на "классику" я скинул. А то разгорается ХОЛЛИИИВАААР! :)
  • Где правильнее проверять пользовательские данные? В контроллере или модели?

    IvanCher
    @IvanCher
    Распухают контролеры из-за не правильного понимания программистами их. Практически во всех крупных фреймворках(симфони2, yii2, зенды) реализовано всё правильно, но то, как их используют ...
    Ларавель не видел, но валидировать прямо в роуте - это что-то новенькое :)
  • Где правильнее проверять пользовательские данные? В контроллере или модели?

    IvanCher
    @IvanCher
    Александр Талалаев: Да не зависит это от проекта, это зависит от квалификации программиста, который пишет. Валидацию на клиенте так же без труда можно прописывать в правилах валидации модели и она будет отрабатывать первично на клиенте, и так же на сервере.
    Алексей Уколов: Модель не описывать ТОЛЬКО сущность, но включает в себя её описание и знание о ней. Но помимо самой сущности модель так же знает, как с этой сущностью работать.
    HaruAtari: Я этого не говорил.
  • Где правильнее проверять пользовательские данные? В контроллере или модели?

    IvanCher
    @IvanCher
    Первый пример, который Вы привели из yii2 правильнее и удобнее второго. А правильные оба с точки зрения MVC. В первом случае больше гибкости. Контролер спросил у модели правильные ли данные пришли от пользователя, модель ответила, контролер принял решение, как на это реагировать и что ответить клиенту. Во втором случае нам придется для каждого экшена все частные случаи тащить в модель, это жесть :) НО оба примера правильные
  • Где правильнее проверять пользовательские данные? В контроллере или модели?

    IvanCher
    @IvanCher
    HaruAtari: Создается базовая модель, она получает исходные данные. Если какую-то форму нужно как-то по особому валидировать, то мы наследуемся от базовой модели и в ней делаем проверки, либо просто при передачи данных в модель сообщаем, что она пришла с "такой-то" формы. Модель ОБЯЗАНА сама уже решать, что с этим делать дальше . Проверки из модели мы можем делать сервисами, компонентами, хелперами, валидаторами ... хоть чем, НО в рамках конкретной модели. Все модели в рамках одного проекта должны иметь конкретный интерфейс. Контролер должен просто получить ответ от модели, типа "Всё хорошо", или "Телефон должен быть цифрами, и формат емайла некоректный". Контролеру всё ровно, КАК модель это делает, его задача что-то ответить на запрос пользователя.
  • Где правильнее проверять пользовательские данные? В контроллере или модели?

    IvanCher
    @IvanCher
    Алексей Уколов: Это никак не противоречит. Укажи сценарий для модели и она будет проверять частные правила для формы, или еще что-то придумай. Факт в том, что это уже в компетентности модели, а не контролера.
  • Какой фрэймворк выбрать Yii 2 или Symfony 2?

    IvanCher
    @IvanCher
    а потом уже отчаянно дебагаешь исходные файлы, и ничего не дебагается, даже exit() не срабатывает, оказывается, что нужно дебагать файлы кеша и никак это не избежать :)))
  • Какой фрэймворк выбрать Yii 2 или Symfony 2?

    IvanCher
    @IvanCher
    Ой, наконец это начало происходить :) Вообще, если влить такие же деньги в разработку ядра yii2, то результат будет в разы лучше. Сама философия фреймворка у yii просто супер - простота в использовании и понимании при максимальной мощи. Я сам всё хочу в руки себя взять и начать уже вкладывать свои силы в развитие yii...
  • Какой фрэймворк выбрать Yii 2 или Symfony 2?

    IvanCher
    @IvanCher
    Про плохо читаемый код - полностью согласен. Конечно симфонисты говорят, что в yii еще хуже код видели... Но если честно, то хорошие программисты, которые следуют стандартам, пишут ОЧЕНЬ понятный с первого взгляда код, а вот на симфони такое при желании иногда не получается сделать.
    Про плохую документацию тоже соглашусь. Что-то в ней не то ... Какая-то подача более сложная и нудная, текста читаешь много, а по факту сути мало. К сторонним бандлам вообще почти никакой документации. В yii с этим намного лучше. Даже к не очень красиво написаному коду расширения/модуля имеется хорошая и понятня документация.
    Но всё же учить лучше симфони2, т.к. на нем и зп повыше и перейти на yii2 - никакого труда :)
  • Какой фрэймворк выбрать Yii 2 или Symfony 2?

    IvanCher
    @IvanCher
    Kir ---: холивар - это когда один говорит субъективное мнение, другой по непонятным причинам начинает противопоставлять своё субъективное мнение, и случается holly war(священная война).

    "В Symfony 2 нет ничего что можно назвать "уровень корпорации" - вот что я назвал холиваром. Разработчики OAuth2+ тоже твердят, что ничего это не уровень корпораций, но это он самый, т.к. OAuth1 полностью прозрачен, понятен и не требует сложной инфраструктуры, чего не скажешь про OAuth2.0(имеется ввиду со стороны поставщика, а не клиента). Симфони2 аналогично имеет очень "высокие" требования: квалификация кадров, выше расходы и т.п. Но при этом реально имеет некоторые приятные "фишки", вроде более слабой связанности и консольных команд. Но в целом, надеюсь скоро yii2 сделают подобное, и тогда я даже не буду смотреть в сторону симфони2 :) И еще - в среднем по рынку зарплаты у симфонистов выше.

    "Symfony 2 - это здоровый DI-контейнер с кучей сторонних и родных модулей, с огромной проблемой в документации и с очень кривым способом адаптации под нужный вам проект.
    К тому же, в Symfony 2 тоже нужно запускать приложение, что бы запустить модуль."
    Абсолютно верно! Поспорю с последним - там только инициализируем AppKernel, остальное по желанию, а вот в yii2 приходит всё запускать. Хотя это более чем нормально, ведь единичные случаи, когда требуется построить на веб-фреймворке какую-то консольную утилиту :)
  • Какой фрэймворк выбрать Yii 2 или Symfony 2?

    IvanCher
    @IvanCher
    Вы сводите разговор в холивар.
    Я еще раз подчеркну, что в плане удобства выигрывает симфони2. Но нужно знать и обратную сторону медали.
    Вопрос был - "Какой фреймворк выбрать?". Ответ - "Выбрать симфони2, на yii2 всегда можно перейти, т.к. в yii всё прозрачнее и проще.".
  • Yii2 Обмен сообщениями на сайте и система отображения онлайн-оффлайн?

    IvanCher
    @IvanCher
    Не в ближайший месяц, пока есть личные проблемы, которые забирают всё время. Потом напишу, хорошая идея :)
  • Какой выбрать абузоустойчивый сервер для игрового сервиса?

    IvanCher
    @IvanCher
    да ну бросьте. У вас от силы будет запросов 100 в секунду. Поставьте тот же клаудфлэр на перёд и держите сервер хоть где. Вам в любом случае для азартных игр придется ставить что-то на фронтенд, иначе будут досить сам сервер, а это сразу "выстрел в десяточку" для атакующего. А ДДосить вас будут так, что мало не покажется, особенно, если игра имеет аналоги раскрученные.
  • Ленивая загрузка данных из базы?

    IvanCher
    @IvanCher
    а что у вас в enabledScope и какие именно при этом 2 запроса выполняются, выложите их.
  • Yii2. Как удалить классы генерируемые Yii в виджетах?

    IvanCher
    @IvanCher
    Напишите мне в скайп ivan.cherkasov91. Он не может найти, по нескольким причинам: либо у Вас неймспейс и каталог не совпадают, либо Вы указываете в шаблоне в use без начального обратного слэша \ и он пытается найти класс относительно текущего неймспейса, либо еще чего.
  • Как в yii задать правильно валидатор для простой радиокнопки?

    IvanCher
    @IvanCher
    Проверьте массив $_POST или $_GET, в зависимости от того, каким методом отправляете форму. Убедитесь, что там есть значение для ключа sex, и что оно находится в массиве с именем модели. Затем в контроллере проверьте точно ли оно присваивается модельке, то есть после присваивания посмотреть свойство attributes у модели.
  • Yii2. Как удалить классы генерируемые Yii в виджетах?

    IvanCher
    @IvanCher
    Почитайте про ООП.
    Я Вам написал код, который уже переопределяет базовый класс навбара бутстрапа. Но давайте попробуем по пунктам:
    1. Не знаю, какое Вы используете приложение: basic или advanced, но предположим, что basic. Тогда создаете папку components, в ней создаете файл NavBar.php
    2. В файле пишите
    namespace components;
    class NavBar extends \yii\bootstrap\NavBar
    {
        public function init()
        {
            parent::init();
            Html::removeCssClass($this->options, 'navbar');
        }
    }

    3. В шаблоне, где нужно подключать навбар, пишите
    <?php
    use components\NavBar;
    NavBar::begin([
                 'renderInnerContainer' => false,
                 'options' => [
                          'renderInnerContainer' => false,
                          'tag' => 'div',
                          'class' => 'row',
                 ],
     ]); ?>
    ...
    <?php NavBar::end(); ?>