• Как подружиться c SMTP от Яндекса?

    Prosto
    @Prosto
    Сгенерировал одноразовый пароль - не помогло.
    Потом включил в настройках яндекса
    Разрешить доступ к почтовому ящику с помощью почтовых клиентов
    С сервера imap.yandex.ru по протоколу IMAP

    Хотя казалось бы при чем тут smtp
    И всё заработало
    Ответ написан
    7 комментариев
  • Как в Yii2 настроить вывод формы аутентификации без редиректа на /site/login?

    arutyunov
    @arutyunov
    Mooza.ru — Делаем сайты
    В компонентах настройте user. loginUrl отвечает за адрес, куда редирект будет осуществляться.
    Можете также другие опции посмотреть в компоненте yii\web\User.

    'user' => [
        ...
        'loginUrl' => ['/account/login']
    ],
    Ответ написан
    Комментировать
  • Почему возникает ошибка при отпралени почта для домена?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Подсказываю -- смени мейл в конфигах param-local.php (если advanced -- смени в обоих приложениях)
    <?php
    return [
        'adminEmail' => 'admin@example.com',
    ];

    заменить на:
    <?php
    return [
        'adminEmail' => 'test@prioriticlub.ru',
    ];


    тк он подставляется в отправители, а нужно чтобы test@prioriticlub.ru был, это требования Яндекса
    тоже напоролся с неделю назад, потом сделалал генерацию писем в файлы и увидел там отправителя не того :)
    Ответ написан
  • Yii2 и bootstrap 4, как обновить компоненты yiisoft/yii2-bootstrap до bootstrap4?

    @grozzzny
    Люблю кодить
    Подключите расширение через композер:
    composer require grozzzny/depends "dev-master"

    Затем в assets добавьте

    class AppAsset extends AssetBundle
    {
        public $depends = [
            'yii\web\YiiAsset',
            'grozzzny\depends\bootstrap4\Bootstrap4Asset',
            'grozzzny\depends\bootstrap4\Bootstrap4PluginAsset',
        ];
    }


    Класс Bootstrap4Asset при инициализации подписывается на события View и при возможности удаляет bootsrap 3
    class Bootstrap4Asset extends AssetBundle
    {
        public $sourcePath = '@vendor/twbs/bootstrap/dist';
        public $css = [
            'css/bootstrap.css',
        ];
    
        public function init()
        {
            parent::init(); // TODO: Change the autogenerated stub
            Yii::$app->view->on(View::EVENT_AFTER_RENDER, function (){
                unset(Yii::$app->view->assetBundles['yii\bootstrap\BootstrapAsset']);
            });
            Yii::$app->view->on(View::EVENT_BEGIN_BODY, function (){
                unset(Yii::$app->view->assetBundles['yii\bootstrap\BootstrapAsset']);
            });
        }
    }


    Таким образом можно играться с layouts.. Например админка может спокойно работать на bootstrap 3, а фронтенд на bootstrap 4.

    Но это еще не все.. Есть нюансы..
    С модальным окном пришлось унаследоваться от модального класса bootstrap 3
    С валидацией инпутов, перенаследовал миксины bootstrapa 4 и дописал в миксин реализацию от bootsrapa 3. (SCSS)
    Виджет меню стал примерно таким:
    <?= Nav::widget([
        'options' => ['class' => 'navbar-nav d-flex justify-content-between w-100'],
        'items' => [
            [
                'label' => ''Услуги,
                'options' => ['class' => 'nav-item'],
                'linkOptions' => ['class' => 'nav-link'],
                'url' => ['services'],
                'active' => Yii::$app->controller->id == 'services'
            ],
     ....
            [
                'label' => 'Контакты',
                'options' => ['class' => 'nav-item'],
                'linkOptions' => ['class' => 'nav-link'],
                'active' => Yii::$app->controller->id == 'contacts',
                'url' => ['/contacts']
            ]
        ]
    ]);?>

    Хлебные крошки:
    <nav aria-label="breadcrumb" class="mb-3">
        <?= Breadcrumbs::widget([
            'links' => $this->params['breadcrumbs'],
            'options' => ['class' => 'breadcrumb'],
            'tag' => 'ol',
            'itemTemplate' => "<li class='breadcrumb-item'>{link}</li>\n",
            'activeItemTemplate' => "<li class=\"breadcrumb-item active\" aria-current=\"page\">{link}</li>\n",
        ])?>
    </nav>

    Пагинация:
    <nav aria-label="Page navigation">
                <?= LinkPager::widget([
                    'pagination' => $provider->pagination,
                    'linkContainerOptions' => ['class' => 'page-item'],
                    'linkOptions' => ['class' => 'page-link'],
                    'disabledListItemSubTagOptions' => ['tag' => 'a', 'class' => 'page-link']
                ]) ?>
            </nav>


    Alerts:
    <?= Alert::widget([
                'options' => ['class' => 'alert alert-danger show', 'role' => 'alert'],
                'body' => $message,
            ]) ?>


    В общем в этой сборке cms от easyiicms, с которой можно спокойно работать с bootstrap 4. Там смеси от less и scss. CMS чисто шаблонная и измененная.. для себя писал, но решать вам
    composer create-project --prefer-dist --stability=dev grozzzny/yiicms www dev-master


    Вот еще надстройка Material Design for Bootstrap 4 с модулями от https://mdbootstrap.com:

    class AppAsset extends AssetBundle
    {
        public $depends = [
            ..
            //Material Design for Bootstrap 4
            'grozzzny\depends\mdbootstrap\MDBootstrapAsset',
            'grozzzny\depends\mdbootstrap\MDBootstrapPluginAsset',
            ..
       ];
    }


    В assetManager в главной конфигурации можно указать надстройки:
    'assetManager' => [
                'bundles' => [
                    // Если решили переопределить scss:
                    'grozzzny\depends\mdbootstrap\MDBootstrapAsset' => [
                        'basePath' => '@webroot',
                        'baseUrl' => '@web',
                        'css' => ['css/mdbootstrap/mdb.css'], 
                    ],
                    // Если решили подключить доступные модули в коллекции MDB:
                    'grozzzny\depends\mdbootstrap\MDBootstrapPluginAsset' => [
                        'chart' => true,
                        'enhancedModals' => true,
                        'formsFree' => true,
                        'jqueryEasing' => true,
                        'scrollingNavbar' => true,
                        'velocity' => true,
                        'waves' => true,
                        'wow' => true,
                    ],
                ],
            ],


    Создам нормальный лаяулт под Bootstrap 4 со всеми примерами и объяснениями, если данный ответ наберет лайки
    Ответ написан
    Комментировать
  • Как починить скрипт?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    $(window).load(function(){...}); - так не делаем
    $(window).on('load', function(){ ...}); - так делаем
    При чем начиная с jquery 1.8, то есть с незапамятных времен
    Ответ написан
    Комментировать
  • Зачем Redux Saga если есть Redux Thunk?

    Serhiy_Koziuk
    @Serhiy_Koziuk
    Redux-saga — это альтернативный подход к организации сайд-эффектов. Вместо того, чтобы диспатчить функции, которые обрабатываются redux-thunk-ом, вы создаёте сагу, которая собирает всю логику обработки внутрь себя. В отличие от thunk-ов, которые выполняются, когда вы их диспатчите, саги запускаются при старте приложения и как бы «работают в фоне». Саги слушают все экшены, которые диспатчит стор, и решают, что делать с ними.

    И у саг в редаксе два преимущества по сравнению с thunk-ами:
    — Они позволяют организовывать сложные последовательности сайд-эффектов
    — И они очень легко тестируются
    Ответ написан
    1 комментарий
  • Как используя redux saga сохранять данные редьюсера в localstorage?

    search
    @search
    мама говорит что я особенный
    То что вас интересует, в народе называется rehydration и saga не совсем об этом. Будет как гвоздь, микроскопом забитый. Вот подходящая библиотека https://github.com/rt2zz/redux-persist

    Или вот этот комментарий от одного из авторов редакса о том как достичь желаемого без библиотеки https://stackoverflow.com/a/35675304/379949
    Ответ написан
    Комментировать
  • Как правильно запускать nodemon из docker без нагрузки на CPU?

    Некоторое время помучавшись с nodemon мы взяли pm2-dev и стало гораздо лучше pm2.keymetrics.io/docs/usage/pm2-development
    Ответ написан
    Комментировать
  • Как правильно сделать слияние чужих и своих изменений?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Please, commit your changes or stash them before you can merge.


    Что в этой фразе не понятного?

    Вариант 1. - Делаете коммит, а котом git pull и оно вам предложит смержить.
    Вариант 2. - Делаете git stash (прячет все незакомиченые локальные изменения); затем git pull; затем git stash pop, а дальше мержите.

    Вообще есть третий вариант (на будущее) - создаете локально еще одну ветку, в ней работаете, а потом делаете git pull в основной ветке (точнее в той, от которой вы отпочковались) и мержите с ней свою ветку. (опять же, можете сделать stash, затем "отпочковаться", затем слить изменения с репозитория и потом stash pop в свою ветку, а затем мержитесь, когда надо, с той веткой, откуда отпочковались).
    Ответ написан
    3 комментария