За последние 24 часа нас посетили 21977 программистов и 1104 робота. Сейчас ищут 728 программистов ...

Остался ли какой-то смысл в Yii после выхода Laravel?

Тема в разделе "Yii", создана пользователем Roman __construct, 27 сен 2019.

  1. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    сабж)

    У меня вопрос к знатокам, которые делали проекты и в том и в другом.

    Я в свое время пытался на Yii2 делать что-то, но как-то оно вообще не зашло.

    Например, вот код, который создает простейшую форму:

    PHP:
    1. <?php
    2. use yii\helpers\Html;
    3. use yii\widgets\ActiveForm;
    4. ?>
    5. <?php $form = ActiveForm::begin() ?>
    6. <?= $form->field($form_model, 'name') ?>
    7. <?= $form->field($form_model, 'email') ?>
    8. <?= Html::submitButton('Send', ['class' => 'btn btn-success']) ?>
    9. <?php ActiveForm::end() ?>
    это какое-то безобразие я считаю )))

    И это пока без валидаторов и прочего :)

    Помню чуть не свихнулся, пока каким-то основным вещам научался.

    Но может я как-то предвзят, а?
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    вид:
    PHP:
    1. <?php
    2. use yii\helpers\Html;
    3. use yii\bootstrap\ActiveForm;
    4. ?>
    5. <div class="ident-form">
    6.     <?php $form = ActiveForm::begin(); ?>
    7.     <?= $form->field($model, 'username')->label('Пользователь:') ?>
    8.     <?= $form->field($model, 'password')->passwordInput()->label('Пароль:') ?>
    9.     <?= $form->field($model, 'label')->hiddenInput(['value' => $value])->label(false) ?>
    10.     <?= Html::submitButton('Войти', ['class' => 'btn btn-info', 'name' => 'login-button']) ?>
    11.     <?php ActiveForm::end(); ?>
    12. </div>    
    контроллер:
    PHP:
    1.  $model = new ModelFormCard();
    2. if ($model->load(Yii::$app->request->post()) && $model->login()) {
    3.     return ModelRout::routForm($page);
    4. }
    5. return $this->render('identForCard', compact('model', 'label', 'value', 'error'));
    модель:
    PHP:
    1. class ModelFormCard extends ActiveRecord{
    2.     public $username;
    3.     public $password;
    4.     public $label;
    5.  
    6.     public function rules(){
    7.         return [
    8.             [['username', 'password', 'label'], 'required', 'message'=>'не заполнено поле!']
    9.         ];
    10.     }
    11.  
    12.     public function login(){
    13.         if ($this->validate()) {
    14.             if(!preg_match("/^[a-zA-Z0-9]+$/",$this->username)){
    15.                 return false;
    16.             }
    17.             if(strlen($this->username) < 3 or strlen($this->username) > 30){
    18.                 return false;
    19.             }
    20.             return ModelFormCard::getUser();
    21.         }
    22.         return false;
    23.     }
    24. }
    тут много чего нет, но как то так примерно
     
    Roman __construct нравится это.
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    призываю мастера @villiwalla
    [​IMG]
     
    #3 TeslaFeo, 27 сен 2019
    Последнее редактирование: 27 сен 2019
  4. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    @Artur_hopf ну, вьюха тут явно не вся)))

    То есть смотри что мне например понравилось в Laravel по сравнению со всем этим издевательством над здравым смыслом :D

    В Laravel вьюха - это нормальная вьюха :)

    Ее можно верстать прям "наглазок" ))

    А это что?

    PHP:
    1. <?php
    2. use yii\helpers\Html;
    3. use yii\bootstrap\ActiveForm;
    4. ?>
    5. <div class="ident-form">
    6.     <?php $form = ActiveForm::begin(); ?>
    7.     <?= $form->field($model, 'username')->label('Пользователь:') ?>
    8.     <?= $form->field($model, 'password')->passwordInput()->label('Пароль:') ?>
    9.     <?= $form->field($model, 'label')->hiddenInput(['value' => $value])->label(false) ?>
    10.     <?= Html::submitButton('Войти', ['class' => 'btn btn-info', 'name' => 'login-button']) ?>
    11.     <?php ActiveForm::end(); ?>
    12. </div>
    Это и не вьюха, и не контроллер, это вообще непойми что))

    Смысл данной сущности совершенно неочевиден.

    Ну, лично мне.
     
  5. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
  6. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Да без разницы))

    Суть в том что выглядит как какой-то шаблонизатор в который забыли добавить шаблон)))

    В одном проекте помню некий участник настаивал чтобы использовать Pug в шаблонах VUE-CLI - но мы сказали свое решительное нет))) Ну просто представьте себе во что это превратилось бы визуально.

    Тут ситуация примерно такая же. Налицо избыточный слой абстракции, который откровенно мешает целостному восприятию проекта.
     
  7. ElisDN

    ElisDN Активный пользователь

    С нами с:
    13 фев 2018
    Сообщения:
    605
    Симпатии:
    130
    Это построитель формы, генерирующий инпуты с метками и уже JS валидацией, чтобы вручную кучу кода не верстать.

    Аналогично Yii в комплекте имеет GridView для вывода таблиц с сортировкой и поиском в админке.

    И в Laravel есть такой же хелпер https://laravel.com/docs/4.2/html, только теперь его вынесли из ядра в отдельный пакет.

    Yii из коробки для скорости не использует шаблонизатор, поэтому там вьюхи на нативном <?php ... ?>. Но можно подключить yii2-twig.

    Yii2 позиционируется как быстрый фреймворк для быстрой разработки и прототипирования. Ввиду отсутствия шаблонизаторов и многих абстракций он работает в два раза быстрее Laravel. И ввиду наличия генератора Gii, виджетов GridView, ListView и ActiveForm и автороутинга позволяет по таблицам в БД автоматически генерировать CRUD-админки на Bootstrap за минуту.

    Такое упрощение всего в Yii выглядит привлекательным в начале, но мешает при росте проекта. Там уже выигрывают более гибкие, строгие и мощные Laravel и Symfony.
     
    Roman __construct и runcore нравится это.
  8. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    дада, что-то такое припоминаю)) действительно, мне тогда это показалось весьма удобным.
     
  9. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Ничего безобразного нету, это как минимум можно спокойно прогнать через брейкпоинт если такое необходимо.

    Если конечно шаблоны ревращаются во что-то громозкое и не поворотливое то альт.синтаксис пыхи становится не удобным и лучше взять шаблонизатор, а можно и не брать грамотно разбить на переиспользуемые чанки :)

    Валидаторы же автоматом создаются в модели после её генерации (на бэке), плюс js тоже на выхлопе есть (что и плюс и минус, в yii3 выхлоп уберут). Если же форма из себя представляет > 1 модели, то склпать новую модельку с рулесами не так сложно и к ним же припиздячить валидаторы 'with' => func($model) $model->isWhat ?? false если встройки не хватает.

    Ну блет, yii простой как два пальца

    Явно не так он в них утанул как ларка или симфони

    :rolleyes:
     
    Roman __construct нравится это.
  10. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    я немного поработал с Yii2 и сейчас работаю с Laravel... а еще был проект на slim3 + twig))

    так вот из всего с чем работал выводы у меня такие)
    1. Таблички я теперь делаю с помощью datatables https://datatables.net/
    2. Twig нравится больше чем Blade
    3. С шаблонизатором (хоть blade хоть twig) нравится больше работать чем просто с нативным php в шаблоне.. не могу сказать почему - но нравится больше..
    4. Laravel мне понравился больше чем Yii2... хотя это тоже неоднозначно..
    5. Eloquent нравится больше чем ActiveRecords в Yii2... хоть по сути то и там и там AR)) но как называется ОРМ в Yii2 не знаю))
    6. Yii2 мне больше показался похожим на CMS или CMF)))
     
  11. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    @villiwalla, спасибо!))))))))))))

    ну, я их тоже не идеализирую))
    --- Добавлено ---
    lol)))) //инструмент конечно годный, тока он явно не из этого топика -) любой мало-мальски известный UI-фреймворк имеет в своем составе нечто подобное.
     
  12. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    я просто написал тезисно что мне нравится)) в целом))
     
    Roman __construct нравится это.
  13. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    https://quasar.dev/vue-components/table от нашего стола вашему)))

    Это в Квазаре такие таблицы

    сам ими ни разу не пользовался, но квазаровский UI мне оч нра, их реализация Material Design имхо зебест)))
     
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    @Roman __construct, у Yii2 тоже есть поклонники. Последнее время новые проекты правда начинаю на Laravel, но веду несколько и на Yii2
     
  15. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    я до vue никак не доберусь.. то некогда.. теперь вообще только на бэк проект взяли..
     
  16. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Ну это да, я часто вижу объявления о потребности в доработках на Yii-проектах, но это как я понял - легаси, то есть сделали много лет назад, а теперь тащат как чемодан без ручки ))

    Хотя, если человек смог в этом досконально разобраться - наверное без разницы уже
    --- Добавлено ---
    Ну и правильно - на React вакансий больше :D
     
  17. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Нет, не только легаси. У йишки свои плюсы, скорость, простота и т.п. Потом сейчас тройку может выпустят, там что-то интересное может
     
    Roman __construct нравится это.
  18. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Не всегда легаси при разработке на фреймворка и потом чемодан. В случаях когда не чемодан то все по пастулату.
     
    Roman __construct нравится это.
  19. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Совершенно очевидно :) После прочтения одной из лучших документаций по фреймворкам, которые я читал.
     
  20. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Просто кто-то упаролся с предвзятостью и желанием там увидеть js(vue) :)
     
    Roman __construct нравится это.
  21. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Каюсь, грешен, чутка упоролся))

    Никто не идеален)))
     
  22. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Лара рулит! ;)
     
    Roman __construct нравится это.
  23. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Ыыыыы
    Замбс ап!)))