Задать вопрос
  • Зачем в 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 — не одна из них.
    Ответ написан
    Комментировать
  • Зачем в yii2 классы и объекты для генерации html?

    Zhandos
    @Zhandos
    Классы-хелперы нужны для динамической генерации html. Допустим если тот или иной атрибут имеет параметры зависимые от ситуации. Не будешь же ты лапшу строить из php и html... хотя кто знает :-) .
    Так же как бонус, это стабильность и тестируемость виджетов. Т.к. в виджетах юзаются эти хелперы, и разработчики 100% знают как они себя ведут, т.к. для них уже написаны юнит тесты
    Ответ написан
    Комментировать