• Как правильно реализовать "продвинутую" прокрутку страницы?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Kovalsky, точно, scrollTracking() - вызов функци, и насчет возможности не указывать конкретный обработчик, верно подметили. Спасибо за поправку!
  • Как правильно реализовать "продвинутую" прокрутку страницы?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Kovalsky, анимация толжна воспроизводиться в тот момент, когда блок находиться в области видимости. А сколько раз - велечина неизвестная (человек может один раз прокрутить страницу, а может и 10). Но решение нашел, воспользовался пространством имен.
  • Как правильно реализовать "продвинутую" прокрутку страницы?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Когда в области видимости появляется нужный блок, нужно реализовать анимацию при прокрутке этого блока вниз и вверх.

    Соответвенно, когда блок пропадает из области видимости, то анимацию воспроизводить нет никакого смысла.
  • Как правильно реализовать удаление категории и перемещение привязанных постов в основную?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Смутил тот факт, что привязанных постов может быть не один, а много. И как в таком случае реализовать процесс смены категории у постов...
  • Как составить регулярку и получить результат в отдельные именованные подгруппы?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    dodo512, появилось небольшое дополнение. Есть строки, где присутствует или min или max. Пример:
    unique:blog_posts,slug|max:100

    Можно ли как-то скорректировать имеющуюся регулярку, что бы она искала или min или max или и то и другое?
  • Как составить регулярку и получить результат в отдельные именованные подгруппы?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    dodo512, век живи, век учись :) раньше не слышал.
    Спасибо ещё раз!
  • Как составить регулярку и получить результат в отдельные именованные подгруппы?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Спасибо! Лучше чем получилось у меня. А не подскажите, что означает ?= в начале каждой группы?
  • Почему роутер выдает 500 ошибку?

    yaleksandr89
    @yaleksandr89
    Issue, немного дополню. Если на локальном серваке не много вирт.хостов в целом использовать один файл (error.log) для всех - не критично. Станет труднее, когда их количество вырастет. Рекомендовал бы для каждого отдельного хоста делать свой файл логов. Примерный конфиг вирт. хоста

    ### host.loc ###
    <VirtualHost *:80>
        ServerAdmin admin@admin.com
        DocumentRoot "/var/www/host.loc"
    	ServerName host.loc
            ServerAlias www.host.loc
    
    	<Directory "/var/www/host.loc">
    		Options All
    		AllowOverride All
    		Require all granted
    	</Directory>
    
        ErrorLog "/var/log/apache2/error/url-shortener.log"
        CustomLog "/var/log/apache2/custom/url-shortener.log" common
    
    </VirtualHost>


    За логи отвечает
    ErrorLog "/var/log/apache2/error/host.log"
    CustomLog "/var/log/apache2/custom/host.log" common


    *Предварительно в директории /var/log/apache2/ создайте доп.папки error, custom (если планируете использовать такую структуру)

    Местами такая штука здорово помогает :)
  • Spatie backup, как изменить папку для резервных копий и установить пароль на архив?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Александр Ковальчук, фак мой мозг! :)) я не увидел очевидное! Значение APP_NAME у меня была кириллица и так вот "интересно" сконвертировалась. Завел отдельную константу все хорошо.

    Кстати я попутно пытался настроить второе хранилище для хранения (ftp) и когда указывал все необходимые настройки, постоянно вылетала ошибка path not exist. уже хотел эту тему дополнить. Но дело оказалось в кириллице.

    С паролем тоже разобрался. Я неправильно указал в app.php 'backup.password' => env('BACKUP_PASSWORD') (тоже мой косяк). Необходимо было указать:
    'backup' => [
            'password' => env('BACKUP_PASSWORD'),
        ],

    Сейчас все работает на отлично. Спасибо за помощь! Примного благодарен :)
  • Spatie backup, как изменить папку для резервных копий и установить пароль на архив?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    EventServiceProvider скорректировал

    /**
         * The event listener mappings for the application.
         *
         * @var array
         */
        protected $listen = [
            Registered::class => [
                SendEmailVerificationNotification::class,
            ],
            BackupZipWasCreated::class => [
                EncryptBackupZip::class
            ],
        ];



    Теперь при создание бэкапа появляется "Sending notification failed"
    Starting backup...
    Dumping database laravel_blog...
    Determining files to backup...
    Zipping 1117 files and directories...
    Created zip containing 1117 files and directories. Size is 5.61 MB
    
    Sending notification failed
    
    Copying zip to disk named local...
    Successfully copied zip to disk named local.
    Backup completed!


    При этом уведомление на почту приходит и копия создается, все также без пароля. Но пароль второе дело, очень сильно напрягает название директории. Вы порекомендовали поменять директорию в настройках - не работает.

    Хотя в принципе config/backup.php не трогал (поменял только адрес получателя. Сейчас нашел место где указывается путь для бекапов
    путь для бекапов (насколько я понял :) )

    'destination' => [
    
                /*
                 * The filename prefix used for the backup zip file.
                 */
                'filename_prefix' => '',
    
                /*
                 * The disk names on which the backups will be stored.
                 */
                'disks' => [
                    'local',
                ],
            ],
    
            /*
             * The directory where the temporary files will be stored.
             */
            'temporary_directory' => storage_path('app/backup-temp'),



    'temporary_directory' => storage_path('app/backup-temp'),
    - директория создается и она пуста (исходя их названия ключа и описания для хранения временных и возможно после создания - она отчищается). Но вот где указать путь для хранения - не знаю. Доку по пакету смотрел - нужной инфы найти не могу.

    Не сталкивались?
  • Как установить xdebuger на php7.2 (Ubuntu 18.04)?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Не помогло, но проблему решил, нужно при выполнение ./configure, указать нужный php-config.

    У меня по умолчанию стоял 7.4 (хоть я и переключился на 7.2). Сосбтвенно я пересобрал xdebuger, только вместое ./configure указал
    ./configure --with-php-config=/usr/bin/php-config7.2
    и далее по инструкции.
  • Как изменить разметку пагинации?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Максим, я давеча почитал про хелперы и пришлось не просто скорректировать ArrayHelper::remove, а внести корректировки, при формирование. В целом добился чего хотел:
    protected function renderPageButton($label, $page, $class, $disabled, $active): string
        {
            $options = ['class' => 'page-numbers'];
            array_merge($options, $this->linkContainerOptions);
    
            Html::addCssClass($options, empty($class) ? $this->pageCssClass : $class);
    
            if ($active) {
                Html::addCssClass($options, $this->activePageCssClass);
            }
            if ($disabled) {
                Html::addCssClass($options, $this->disabledPageCssClass);
                $disabledItemOptions = $this->disabledListItemSubTagOptions;
                $tag = ArrayHelper::remove($disabledItemOptions, 'tag', 'span');
    
                $merge = array_merge($disabledItemOptions, $options);
                return Html::tag($tag, $label, $merge);
            }
            $linkOptions = $this->linkOptions;
            $linkOptions['data-page'] = $page;
    
            $merge = array_merge($linkOptions,$options);
            return Html::a($label, $this->pagination->createUrl($page), $merge);
        }


    Несколько вопрос возникло, не подскажите, корректно ли:
    array_merge($options, $this->linkContainerOptions);

    В if($disable):
    $merge = array_merge($disabledItemOptions, $options);

    И перед самым формированием:
    $merge = array_merge($disabledItemOptions, $options);


    Почитал доку, третьем параметром падается массив с аттрибутами, вроде логике следовал) Ошибок нет и надеюсь не будеь :)

    Ну и добавил чутка свойств в сам виджет, что бы при его вызове во вьюхе их не прописывать :)
    public $maxButtonCount = 5;
        public $activePageCssClass = 'current';
    
    
        public $prevPageCssClass = 'begin_el';
        public $nextPageCssClass = 'last_el';
  • Как изменить разметку пагинации?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Максим, не попытаешься не узнаешь :)
    Спасибо за помощь!
  • Как изменить разметку пагинации?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Максим, метод renderPageButtons() скопипастил, а повесить класс на оставшиеся <a> можно без копирования родительского тега? Есть какой-нибудь функционал, не знаете?
  • Как изменить разметку пагинации?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Максим, с учетом, что с yii познакомился вчера, я думал что ближайщий виджет создам точно не сегодня :)). Я думаю если сяду писать свой ЛинПеджер мое знакомство с фреймоврком затянеться :)

    Да я в качестве тренеровки переношу шаблон, а там разметка сделана таким видом:

    <div class="nav-links">
                        <span class="page-numbers current">1</span>
                        <a class="page-numbers" href="#">2</a>
                        <a class="page-numbers" href="#">3</a>
                        <a class="page-numbers" href="#">4</a>
                        <a class="page-numbers" href="#">5</a>
                        <a class="page-numbers" href="#"><i class="fa fa-angle-right" aria-hidden="true"></i></a>
                    </div>

    И выглядит:
    5e6251e0de21f658113625.png

    Пытаюсь повторить
  • Как изменить разметку пагинации?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    Сейчас поробовал, немогу понять, как сделать правильно

    Сделал класс
    <?php declare(strict_types=1);
    
    namespace app\widgets;
    
    use yii\helpers\ArrayHelper;
    use yii\helpers\Html;
    use \yii\widgets\LinkPager as DefaultLinkPager;
    
    class CustomLinkPager extends DefaultLinkPager
    {
    
    }


    Из родительского мне нужны два метода renderPageButton и renderPageButtons. В них по факту мне нужно поменять:
    $linkWrapTag = ArrayHelper::remove($options, 'tag', 'li');
    на
    $linkWrapTag = ArrayHelper::remove($options, 'tag');

    и с ul (в методе renderPageButtons) сделать тоже самое.

    С renderPageButton у меня получилось провернуть такую операцию:
    protected function renderPageButton($label, $page, $class, $disabled, $active): string
        {
            parent::renderPageButton($label, $page, $class, $disabled, $active);
    
            $options = $this->linkContainerOptions;
    
            $linkWrapTag = ArrayHelper::remove($options, 'tag');
            $linkOptions = $this->linkOptions;
            $linkOptions['data-page'] = $page;
    
            return Html::tag($linkWrapTag, Html::a($label, $this->pagination->createUrl($page), $linkOptions), $options);
        }


    Но с renderPageButtons у меня никак не выходит. Не пойму как оформить правильно.

    Можно конечно, тупо скопипастить эти методы в созданный класс, но этим я нарушу DRY (или нет?). Не подскажите правильный путь решения, а то вариант, который я сейчас описал смахивает на говнокод :))

    P.S. работаю в простом шаблоне. Может не вижу очевидных путей решения, просто с yii2 ранее не сталкивался. Но сейчас хоче решить данную задачу.
  • Что не так с регуляркой?

    yaleksandr89
    @yaleksandr89 Автор вопроса
    nokimaro, верно, ссылку которую скинул - напутал. Как оказалось косяк был не в регулярке, а в методе (хотя до конца не понял из-за чего. Сейчас скорректировал приведенный выше метод и все заработало.
    private function checkString(string $string): void
    {
        $this->incomingString = mb_strtolower(preg_replace('#[^\p{Cyrillic}\p{Latin}]#u', '', $string));
        $this->preparedString = $this->incomingString;
        $this->lengthString = mb_strlen($this->preparedString);
    }