Задать вопрос
  • Как в модулях Yii2 в лайоте подключить необходимые js и css файлы?

    @gsd
    лайоте штука сложная
    Ответ написан
    Комментировать
  • Drupal 8. Как исправить ошибку доступа к css после переустановки cms?

    @Vlad171 Автор вопроса
    Посмотрел логи, ошибку давал файл .htaccess в директории /sites/default/files/:
    .htaccess: Option ExecCGI not allowed here
    В данном файле закомментировал строку:
    Options -Indexes -ExecCGI -Includes -MultiViews
    Все заработало.
    Ответ написан
    Комментировать
  • Как в Yii2 можно сделать сортировку по вычисляемому рейтингу и по кол-ву связанных данных?

    @EVOSandru6 Автор вопроса
    В модели Departments добавил метод - примерно то, что мне надо:

    public static function  getProviderByTotalParams()
        {
            $mainTable = self::tableName();
    
            $sql = '
                 SELECT m_departments.id, m_departments.name, 
                 COUNT(m_news.id) + COUNT(m_posts.id) + COUNT(m_forums.id) + COUNT(m_questions.id) AS total_count
                FROM m_departments 
                LEFT JOIN m_news ON m_departments.id = m_news.department_id
                LEFT JOIN m_posts ON m_departments.id = m_posts.department_id
                
                GROUP BY m_departments.id
                ORDER BY total_count DESC
                LIMIT 5
            ';
    
            $dataProvider = new SqlDataProvider([
                'sql' => $sql, 
                'totalCount' => 5, 
                'pagination' => [
                    'pageSize' => 5, 
                ],
            ]);;
    
            return $dataProvider;
        }
    Ответ написан
    Комментировать
  • Ошибка при установке пакета composer?

    glaphire
    @glaphire
    PHP developer
    Не может разрулить требования по версиям для spatie/laravel-image-optimizer, swiftmailer и laravel - там же все написано)
    Надо апнуть swiftmailer (по packagist он уже давно ушел вперед), потом апнуть laravel до 5.7.0 и потом уже ставить laravel-image-optimizer.
    Ответ написан
    2 комментария
  • Актуален ли Yii2 Фреймворк в 2020?

    myks92
    @myks92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    Тут много нюансов и ответить однозначно сложно. Как уже написал Иван Шумов фреймворк - это инструмент. Каждый инструмент подбирается под конкретную задачу:

    • СMS - система управления сайтом (Wordpress, Joomla и т.д.). Создан для простого и удобного управления сайтом (контентом). Как правило, доступен для работы простому пользователю, без знания языков программирования. Подойдёт для: простых сайтов, блогов, там где не требуется нагрузка и безопасность.
    • RAD framework (Yii2) - фреймворк для быстрой разработки. RAD Фреймворк имеет, монолитную и связанную архитектуру. Он является антипаттенрном и позволяет вам делать всё что угодно, лишь бы вы быстро собрали свой проект. (Используется паттерн Table First - спроектировали базу и по схеме сгенерировали модели данных). При этом Вам никто не говорит, что он не может использоваться для серьёзных проектов. Например, DNS..
    • Компонентные фреймворки (Symfony, Laravel). Это фреймворки, которые разделены на независимые компоненты, которые вы можете подключать к своему проекту при необходимости. В самом фреймворке заложен только необходимый минимум, а всё остальное вынесено в компоненты. Эти компоненты могут использоваться (или не использоваться). Могут использоваться для другого фреймворка (сам Yii2 использует компоненты симфони). Doctirine, которая позволяет вам забыть о базе данных и сосредоточиться на коде. Фреймворк задаёт вам некий стиль, некую структуру и типизацию и требует более хорошего и обдуманного кодинга. Например, при использовании twig вы не сможете сделать запрос в view. Чего нельзя сказать про Yii. Вы там можете построить хорошую бизнес логику, что и встречается...
    • Микрофреймворки (Slim). В таких фреймворках заложен самый минимум, а всё остальное программист должен искать или писать самостоятельно, выстраивать свою архитектуру приложения. Он легкий и простой. Кто-то и Symfony относит к микрофреймворкам. Тут меня многие могут упрекнуть. Подойдет для очень простых, гибких, легких приложений, например, микросервисов. Фреймворк не задает вам никаких правил и архитектуры. Вы должны сами продумать все детали приложения. Где-то используете twig, где то Data Mapper, где-то ActiveRecord. Для работы с таким фреймворком требуется много знаний и опыта. Так как вам всё придется делать самому. Здесь за вас никто не подумал.

    Что же для чего выбрать?
    Решать вам исходя из конкретной задачи. Здесь нет понятия хуже/лучше. Чтобы что-то выбрать нужно на каждом попробовать собрать пару проектов. Тогда и будет понимание когда и что выбирать. Это как автомобиль. Какой лучше BMW или LADA? Оба автомобиля, но каждый для своей аудитории, по своим потребностям, для своих задач.

    Почему другие говорят что Yii2 плохой?
    • 2 версия морально устарела. Это не значит что ВЕСЬ фреймворк плохой, просто им давно никто не занимался. Сейчас идет разработка Yii3, которая многократно лучше 2 версии, но 3 версия доступна только в демо. Поэтому, если хочется писать НОВЫЙ проект на Yii, то я бы не стал выбирать 2 версию. Можете подождать Yii3, но никто не знает когда будет релиз. Можете начать писать используя Yii3-demo, но там может всё поменяться к моменту релиза.
    • Он монолитный. Если вам требуется сделать проект используя много приложений с разными компонентами, то пойдёте по пути Advanced шаблона, где каждое приложение будет папкой: backend, forntend, console. Однако при большой нагрузке вам потребуется разносить приложения. Тогда ваш core будет дублироваться во всех приложениях. Там будет то, что вам даже не требуется. Потому что Yii2 монолит.
    • В Yii2 используется Actvie Record. AR - это не плохо. Его многие любят, многие ценят и хвалят. Но для больших проектов он предоставляет неудобства. Например, при изменении поля в базе данных - приходится менять все свойства и надеяться что везде поменяли, так как в GrigView используется магия, при получение значений из модели 'value' => 'profile.last_name'. Так же нельзя сделать свойства модели (сущности), приватными. Из-за чего состояние модели можно изменить где угодно и вы никак не проконтролируете это.
    • Много абстракции, которую не распознает редактор. Например, вы можете вызвать в контроллере Yii::$app->user->id. Вам приходится делать докблок, что User это common/auth/Identity, а не yii/web/User


    Ну и так далее. С каждым из этих пунктов можно бороться, при правильном подходе. Как уже сказали в плохих руках любой код может пахнуть. Но это основное. Надеюсь, меня не раскритикуют другие за спорные моменты. В таких вопросах всегда есть разногласия) Думаю, что смог донести в сжатом виде отличия.
    Ответ написан
    4 комментария
  • Актуален ли Yii2 Фреймворк в 2020?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Хорошие или плохие - это программисты) Yii2 как Symfony, как и Laravel - инструмент. Выбирай то что тебе больше подходит. Я видел как прекрасные, так и жуткие уродства на всех 3х фреймворках
    Ответ написан
    1 комментарий
  • Как symfony загружает классы через входные данные?

    @Flying
    Этому посвящена добрая часть документации компонента Dependency Injection и Service Container'а, который является центральной частью этого компонента.

    Если совсем вкратце - то вы либо описываете сервисы вручную через конфигурацию (есть несколько поддерживаемых форматов, включая аннотации, хотя они вроде реализуются внешним пакетом) либо используете преимущества autowiring'а, предоставляя Symfony всё описать за вас (с помощью compiler pass'ов, если потребуется). Собственно основная "магия" преобразования всех источников данных в кучу компилированного PHP находится как раз в compiler pass'ах, их много и можно писать свои.

    Поскольку у вас в примере - controller's action - то здесь вся магия реализуется через обработку тега controller.service_arguments, который по-умолчанию добавляется ко всем контроллерам в конфиге сервисов.
    Ответ написан
    5 комментариев
  • Как symfony загружает классы через входные данные?

    @sadCake
    ValidatorInterface $validator
    Это имеется ввиду? Если да, то через dependency injection. Его можно включить/выключить в services
    Ответ написан
    2 комментария
  • Как разрабатывать еще быстрее?

    Эффективное распределение своего времени. Планирование задач перед ее выполнением, планирование экономит время, есть такая пословица: минута час бережет. Одна минута, потраченная на планирование, экономит от 10 до 12 минут при исполнении.
    Ни одна задача не бывает слишком трудной, если разделить ее на множество достаточно мелких частей. Чем больше вы учитесь/делаете тем лучше функционирует ваш мозг, в результате чего вы становитесь умнее, соответственно чтобы разрабатывать быстрее нужно разрабатывать больше.
    Ответ написан
    2 комментария
  • Как при вызове hasOne/hasMany вызывать функцию класса с которого мы берем данные?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый вечер.
    Не надо никаких своих методов, всё уже придумали за Вас.
    https://www.yiiframework.com/doc/guide/2.0/ru/db-a...
    Ответ написан
    Комментировать
  • Как валидировать поля в зависимости от выбора check box Yii2?

    SamDark
    @SamDark
    Yii2 core team
    $model = Payment::find()->where(['user_id' => $id])->one();
    $model->pre_auth_payment = "$28.25";
    
    if ($model->load(Yii::$app->request->post()) {
        $model->scenario = empty($model->type_pay) ? 'credit_card_form' : 'bank_account_form';
        if ($model->validate()) {
            // valid
        }
    }
    Ответ написан
    1 комментарий
  • Как вставить переменную JavaScript в тело html?

    @kacheleff
    fullstack developer
    Ответ написан
    Комментировать
  • Почему не работает javascript после ajax получения ответа?

    antonio1107
    @antonio1107
    Заместитель руководителя
    Решено! JQuery обработчики, такие как hover(), click(), bind(), on() и т.д. обрабатывают элементы только при загрузке.
    Чтобы они реагировали на подгруженный ajax'ом контент, есть несколько решений:
    1. Загрузить ajax'ом скрипт заново(не лучший вариант). Но работает.
    2. Использовать обработчик live(). Но с версии >= JQuery 1.9 его убрали и перенесли в обработчик on(), в котором объединили и bind(), и delegate().
    3. На мой взгляд, самый лучший. Для тега установить атрибут onClick, установить ему значение функции, например:
      а в скрипте переделать обработчики в функцию.
      Вместо:
      $("div").click(function(){
      //что-то делает
      });
      
      //переделать на:
      function function_name(){
      //что-то делает
      }

      Т.е. у тэга div при нажатии атрибут onClick вызывает эту функции. И тут без разницы, подгружен контент ajax'ом или нет.
      Если хотите в функции использовать значение $(this), то задайте в атрибуте у функции onClick="function_name(this);", а в скрипте в функции задайте событие для этого значения
      function function_name(i){
      $(i).вешаем обработчики
      //$(i) это тоже, что и $(this) у обработчика $("div").click()
      }



    Надеюсь, кому-то будет полезно :)
    Ответ написан
    3 комментария
  • Ошибка в yii2 - Unknown bootstrapping component ID: gii?

    @Adel1ne Автор вопроса
    Оказалось, что каким-то образом исчезла строчка из config/console.php
    'modules' => [
            'gii' => 'yii\gii\Module',
    ],
    Ответ написан
    Комментировать
  • Почему ошибка прав доступа выводится без стилей?

    slo_nik
    @slo_nik Куратор тега Yii
    У Вас проблема в настройках правил доступа к разным действиям контролера.
    Вы должны или исключить действие "error" из проверки, или явно указать его.
    Как-то так
    return [
            'access' => [
                'class' => \yii\filters\AccessControl::className(),
                'except' => ['error'], // или так
                'rules' => [
                  // или так
                    [
                            'actions' => ['index', 'error'],
                            'allow' => true,
                     ],
                ],
            ],
        ];
    Ответ написан
    Комментировать
  • React native expo или Cordova?

    RomReed
    @RomReed
    JavaScript, Flutter, ReactNative, Redux, Firebase
    У меня было пару проектов на cardova и приличное количество на реакте так вот у меня вспоминается куча плохих и матерных слов о cardova.
    То что далжно работать из каробки в кардова или тупит или вапще не работает. Дело ваше но за реакт нативом будующее.
    Ответ написан
    3 комментария
  • С чего начать изучать Dart?

    @BlachHugh Автор вопроса
    Начинающий программист
    книга на русском языке - "Dart в действии" - Крис Баккет, нашел!!!
    Ответ написан
    1 комментарий
  • Как в js через if задать проверку на число?

    drugoi
    @drugoi
    Front-end Developer
    var year = prompt('Write a number');
    if (year.replace(/\s/g, '').length === 0 || isNaN(year)) {
      alert('Нужно писать число!');
    } else {
      alert('Вы полностью правы!');
    }
    Ответ написан
    5 комментариев
  • Как завершить работу компонента React?

    @WizardW
    Заходите на App, делаете нужно работу и в конце хендлера или в любом другом месте делаете history.push('/somewhere')
    Ответ написан
    Комментировать