Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

Роман Сарваров

PHP погроммист | Vue авантюрист | ru.sarvarov.dev
  • 63
    вклад
  • 30
    вопросов
  • 77
    ответов
  • 53%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как сделать перенаправление в laravel если страницы не существует?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Два способа:
    1. в routes/web.php (в конец)
    Route::fallback(function ()
    {
        return redirect()->to('/');
    });


    2. Или в /app/Exceptions/Handler.php
    /**
     * Render an exception into a response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $e
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $e)
    {
        if ($e instanceof NotFoundHttpException) {
            return redirect()->to('/');
        }
    
        return parent::render($request, $e);
    }
    Ответ написан 04 мар.
    1 комментарий
    Нравится 1 1 комментарий
  • Почему composer устанавливает лишние пакеты?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    composer.json содержит зависимости вашего проекта от данных библиотек.
    Но эти самые библиотеки могут содержать в себе другие зависимости, которые будут отражены в composer.lock (в composer.json, при этом, отражено не будет).
    Т.е. то что скачиваются у вас пакеты, которых нет в composer.json - это нормально и от этого никак не уйти, потому что это необходимость.
    Ответ написан 02 мар.
    Комментировать
    Нравится 7 Комментировать
  • Где лучше запускать фильтрацию переданного текста комментария, для последующего сохранения?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Много способов как это сделать, но точно не в контроллере.
    Я бы сделал CommentObserver:
    php artisan make:observer CommentObserver --model=Comment

    и там в методе saving(Comment $comment) проверял бы - есть ли право у пользователя (с помощью политики, а не гейта, кстати) и фильтровал бы как надо.
    Ответ написан 01 мар.
    14 комментариев
    Нравится 1 14 комментариев
  • Почему не работает Vue.js devtools в Google Chrome?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Потому что у вас версия Vue 3, на которую еще расширение не перевели (оно поддерживает версию Vue 2).
    Чтобы заработало - поставьте расширение с меткой beta.
    Оно немного урезанное (нельзя редактировать свойства), но хоть что-то...
    Ответ написан 01 мар.
    1 комментарий
    Нравится 1 комментарий
  • Как внедрить Простую Электронную Подпись?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Варианта два - либо искать готовые варианты (Kontur Crypto Pro), они предоставляют API для подписания через приложение или еще как-то (но это уже вроде квалифицированая ЭЦП).
    Либо делать самому - в банке, где я работаю, после согласования по цепочке лиц мы накладываем на PDF штампик с хешем и внутренний приказ наделяет этот документ силой.
    Ответ написан 11 февр.
    Комментировать
    Нравится Комментировать
  • Как увеличить значение в базе на 1?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    $model->increment();
    Ответ написан 11 февр.
    Комментировать
    Нравится Комментировать
  • Как исправить Циклическое перенаправление на странице?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Вы опишите задачу, которая стоит перед вами.
    В данный момент у вас действительно бесконечный редирект.
    Попробуйте так, отредактировав логику перенаправления:

    public function handle($request, Closure $next)
    {
        if(! in_array($request->route()->getName(), ['home', 'pages'])) {
            return redirect()->route('home');
        }
    
        return $next($request);    
    }
    Ответ написан 11 февр.
    Комментировать
    Нравится 1 Комментировать
  • Как прибавлять единицу каждую секунду или каждую перезагрузку страницы?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Можно заложиться на time().
    Она прибавляет каждую секунду 1.
    Ответ написан 09 февр.
    1 комментарий
    Нравится 1 комментарий
  • Чем заменить jQuery: Alpine.js или Stimulus?

    Роман Сарваров @megakor Автор вопроса
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    В общем ответы на тостере как всегда...
    Для себя выбрал Alpine.js - все-таки его синтаксис сильно похож для Vue - такой же лаконичный и приятный.
    Однако, хранить всю логику прямо в HTML аттрибутах я считаю крайне некрасиво, поэтому я строю аля компоненты.
    Посмотрите на этот мой пример: https://jsfiddle.net/rom4i/b10ukdfx/
    Очень удобно!

    Stimulus, наверное, более правильный способ разработки, но под каждое действие придется создавать отдельный файл, что занимает время, да и синтаксис для меня менее очевидный.
    Ответ написан 05 февр.
    Комментировать
    Нравится Комментировать
  • Как сделать счётчик времени?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    https://www.php.net/manual/ru/function.date-diff.php
    Ответ написан 02 февр.
    Комментировать
    Нравится Комментировать
  • Как отправить файл через API JSON?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Если нужно через json то перевести содержимое файла в base64 (через base64_encode) и отправить как строку.
    Ответ написан 28 янв.
    Комментировать
    Нравится 2 Комментировать
  • Парсинг логотипа компании?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Искать элемент, в котором id или класс содержит "logo".
    Большинство сайтов, я думаю, будут удовлетворять этому условию.
    Если такого нет, искать <link rel="apple-touch-icon" /> или <link rel="icon" />.
    p.s. нужно учитывать, что очень много сайтов (например этот) оформляют лого в виде svg объекта, а не просто img src.
    Ответ написан 26 янв.
    Комментировать
    Нравится 1 Комментировать
  • Как на jquery в тексте найти ники соцсетей @name и обернуть их ссылкой?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Через регулярные выражения.
    Дам подсказку: /^@\w+/
    Ответ написан 25 янв.
    Комментировать
    Нравится 1 Комментировать
  • Как и где правильно делать проверку залогинен ли юзер и хранение и его данных?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    1.Сделать во Vuex в модуле auth свойство состояния loading.
    После загрузки события ставить в false.
    Меню не выводить пока $store.state.loading === true.
    2. Еще можно сделать, что если в куках есть какой-то токен то выводить меню авторизованного юзера.
    Если вывелось такое меню и токен окажется недействительным то сбрасывает меню или делает редирект на страницу авторизации.
    Ответ написан 22 янв.
    Комментировать
    Нравится Комментировать
  • Laravel ошибка?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Такая проблема возникает при отсутствии прав на директорию storage.
    Выполните из корневой папки:
    chmod 775 storage/framework/sessions -R
    rm -r storage/framework/sessions/*
    Ответ написан 16 янв.
    Комментировать
    Нравится 1 Комментировать
  • Почему делаются отступы от текста?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Нужно задать у body параметр line-height
    Ответ написан 12 янв.
    3 комментария
    Нравится 3 комментария
  • Что означают 3 точки впереди функции во vue шаблоне?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    mapActions и mapGetters (а ещё часто бывает mapState и mapMutations) - это методы Vuex, которые позволяют обращаться к функционалу хранилища vuex в контексте текущего компонента. По сути только делает код более красивым.

    Например, в вашем примере есть loadData в mapActions. В таком случае можно обратиться просто this.loadData();

    Если без этого, то пришлось бы писать такой длинный и некрасивый код: this.$store.dispatch('loadData');

    Читайте документацию по Vuex.
    Ответ написан 12 янв.
    2 комментария
    Нравится 2 комментария
  • Как избежать повтора инклюдов в ООП PHP?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Самый простой вариант.

    class Config {
        private static $configData;
    
        public static function get($parameter = null, $default = null)
        {
            if (is_null(self::$configData)) {
                self::$configData = include '../config.php';
            }
    
            if ($parameter) {
                return self::$configData[$parameter] ?? $default;
            }
    
            return self::$configData;
        }
    }


    // в клиентском методе
    public function someMethod() {
        $config = Config::get();
    }


    <?php 
    // в config.php
    return [
        'param' => 'value',
    ];
    ?>
    Ответ написан 10 янв.
    6 комментариев
    Нравится 2 6 комментариев
  • С какой версии лучше начинать изучать Laravel?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    Учим, установив последнюю версию.
    Читаем всю документацию на официальном сайте (да, на английском).
    От себя посоветую канал на YouTube Laravel Business и плейлист Дмитрия Афанасьева.
    Ответ написан 09 янв.
    Комментировать
    Нравится 2 Комментировать
  • Php, как вытащить ссылку к картинке?

    Роман Сарваров @megakor
    PHP погроммист | Vue авантюрист | ru.sarvarov.dev
    $str = '<div class="stove-preview__main-img" style="background-image: url(\'/upload/resize_cache/iblock/114/245_600_2.jpg\')>';
    
    preg_match('/background-image:\s*url\([\'"]?(?<image_url>[^\'")]+)[\'"]?\s*\)/', $str, $matches);
    
    $imageUrl = $matches['image_url'] ?? null; 
    // /upload/resize_cache/iblock/114/245_600_2.jpg
    Ответ написан 08 дек. 2020
    Комментировать
    Нравится Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • Следующие →
Самые активные сегодня
  • rPman
    • 8 ответов
    • 0 вопросов
  • sergey-gornostaev
    Сергей Горностаев
    • 6 ответов
    • 0 вопросов
  • wppanda5
    WP Panda
    • 6 ответов
    • 0 вопросов
  • yupiter7575
    • 5 ответов
    • 1 вопрос
  • yarkov
    Алексей Ярков
    • 5 ответов
    • 0 вопросов
  • SoreMix
    SoreMix
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации