• Как управлять ролями и правами Laravel 5 и VUE.JS?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Реализуется легко:

    на беке юзаете баунсер + $this->authorize/Gate::allows и проверяете нужные права, вне зависимости от фронта.
    на фронт с бека передаете берете массив пермишенов (абилитис в баунсере), в том же месте, где передаете юзера (не важно, отдельным запросом или сразу при загрузке страницы). Пишите во vuex'е нужные геттеры, как пример из моего проекта:

    export const can = (state) => (perm) => this.loggedIn(state) && state.authUser.abilities.includes(perm);
    export const canAny = (state) => (perms) => perms.some(x => this.can(state)(x));


    И юзаете директивы где нужно, предварительно импортнув нужные геттеры:

    v-if="can('chat.mute')"

    PS: не стоит писать свои директивы "v-can", ибо:
    1) они не информативны (непонятно, что они делают, если прав нет)
    2) прийдется написать с десяток таких, на все случаи жизни, типа "can-show", "can-if" и прочая лабудень.

    PS2: про "переход по страницам" и любые запросы на бек - ларавель сам кинет forbidden 403, проверяете интерцептором в axios'е на этот статус и кидаете на страницу с ошибкой/показываете окошко/нотификацию/птичку/кошку.
    Ответ написан
    Комментировать
  • На сколько безопасно делать админ панель на vuejs?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Токен только для предотвращения перехода по роуту если не авторизован и роли нет.
    Но на сервере, вы должны проверять бык это или юпитер и позволять юпитеру делать то что недозволено быку :)
    Ответ написан
    3 комментария
  • Попросили проверить код, на что смотреть нужно?

    apavlyut
    @apavlyut
    www.pavlyut.ru
    Все комментаторы совершили одни и те же ошибки управления потому что, при всем уважении, скорее всего за эти ошибки (в стратегировании) они не платят из своего кармана.

    На пальцах отвечаю на ваш вопрос:

    1) По структуре - при проверки качества кода / решения / задачи / продукта / настройки сервера и так далее нужно проходить по списку (чеклист) критериев контроля качества - обычно они выглядят как списки определенных параметров которые может замерить третье лицо или сама система - формат проверяемого параметра прямо вот соответсвует / не соответсвует. На сколько процентов пройден чеклист - на столько процентов результат "качественный"
    2) Почему ребята ошиблись - потому что стали приводить конкретные списки. Дело в том что у каждого проекта / сиутации / команды / набора компетенций - свои наборы таких чеклистов на разные ситуации. В больших командах сущесвтует основной чеклист который регламентирует CodeReview - и за него отвечает как правило тим лид - он его обновляет, развивает, обосновывает внесенные правила и следит за тем чтобы ПЕРЕД началом разработки все разработчики были ЗАРАНЕЕ ОЗНАКОМЛЕНЫ с этим порятком проверки качества, а все потому что:
    3) Количество стайлгайдов и критериев в приципе существует огромное количество - и то как каждому в одной части света / компании удобно делать одно дело - не регламентирует ни разу что именно так же другому человеку в другой ситуации применять эти правила к своему контексту. В виде открытых стайлгайдов они существуют для накопления практик и навыков в первую очередь для их же развития (процесс формулировки наводит порядок в голове) а также дают возможность "на них конкретно" нанизать точечные ответы огромного сообщества людей, и получить те самые разные взгляды на ситуации, и по возможности опять же привести к общему знаменателю. Но это все мелочи жизни, а в вашем случае вы совершите серьезную ошибку если прямо сейчас возьметесь (примите на себя ответственность) проверять чужой код на предмет оценки, потому что:
    4) Вас явно используют как внешнего эксперта на которого можно сослаться, от которого можно получить якобы аргументацию для давления на свою позицию при решении какой-то возникшей ситуации во взаимоотношениях клиент-разработчик на проекте куда вас приглашают за экспертизой.
    Если вы, не предупредив, о том что "качество кода" начинается с декларации этого качества (в случае если речь идет о проверке этого внутреннего качества в рамках сотрудничества, а не самих задач которые поставлены перед создаваемой системой - фичесов) - любая ваша оценка будет недостоверна контексту ее применения (вы напишете про строки или еще что-то - а у человека будут либо взыскивать деньги / либо недоплатят за работу / или инкапсулируют в договоренности пост фактум за те же деньги работу над соотвествием определенным стилям - это все работа которая должна быть оплачена). Поэтому вот вам вилка ваших дейсвтий:

    1) Если у вас просто просят менторства молодые коллеги - дайте им ссылку на гугл и ключевое словосочетание php style guide github
    2) Если вас спрашивают (либо вы сами являетесь таким заказчиком который ищет за что зацепиться в коде чтобы продавить свою позицию) - нет критериев качества кода ДО начала работ подписанных на бумаге / пересланных по почте - никакие критерии не могут быть применены к текущим отношениям - только к следующей итерации за следующие деньги.
    3) Если вы все же разработчик и вас попросили оценить код - донесите данную ситуацию до стадии корректного закрытия текущего этапа работ - но дальше предложите уже введение стайл гайда если оно того требует. Я полагаю что на самом деле нет. Дав сейчас ответ на вопрос в виде оценки качества кода вы сделаете только одно - абсолюно необоснованно дадите агрумент в явно перекошенном споре, и просто возьмете на себя еще один мешок кармогрязи которую будуете еще сколько-то положенного времени отрабатывать.

    Подумайте хорошо на эту тему - придется выбрать свою сторону.
    Ответ написан
    Комментировать
  • Перенос Wordpress + Woocommerce, могут ли быть проблемы?

    creativeworm
    @creativeworm
    Я делаю так:
    - переношу файлы в нужную директорию
    - изменяю домен в БД на новый, закидываю *.sql на хост
    - прогоняю через Fix-Serialization
    чтобы сериализованные данные восстановились
    - заливаю *.sql в БД.

    Все операции выше легко выполняются через SSH.
    Ответ написан
    Комментировать
  • Какой pagebuilder для Wordpress лучше?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Не использую и всячески избегаю, как чумы. Проектов с page builder'ами не беру, независимо от бюджета.
    Для создания гибкого flow под клиента использую ACF Pro.
    В скором времени в процесс будет включен Gutenberg.
    Ответ написан
    4 комментария
  • Какой pagebuilder для Wordpress лучше?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    Не использую их.

    Пейдж билдеры, это как adobe dreamweaver в 2004-м году. Много мусора, медленные. Не предсказуемые и глючные в самый неподходящий момент. Сейчас форумы поддержки завалены вопросами "стоит пейдж билдер, плагин не работает..." - и такие темы содержат либо ответ в стиле - "отключайте пейджбилдер - конфликт с ним", либо просто темы без ответа. Техподдержки по билдерам вам не дадут.

    Если использовать - то только для того чтоб быстро прототип накидать. Но в продакшен делать верстку ручками. Хотя не искушеные юзеры и домохозяйки юзают. Но это не от большого ума. Зато играются "яж программист" и понтятся.

    Если вы слышите совет: их использовать - то это совет человека далекого от сайтостроения. Просто такой же домохозяйка.
    Ответ написан
    Комментировать
  • Как перевести проект на React (на проекте битрикс)?

    Но если мы будем переводить проект на реакт, то как мы будем писать php в нем?

    Что это вообще может значить? PHP у вас это server side, а React это клиентское приложение.... Блин, я даже не знаю что дальше спросить... вы PHP в браузере собрались исполнять или JS интерпритатором PHP?
    Это вот вопрос он лишен смысла чуть более чем полностью.

    Ведь синтаксис реакта ( jsx ) не предусматривает php.

    Да причем тут синтаксис? Среда исполнения не предусматривает php, а вы про синтаксис.

    И мне кажется, так просто взять за неделю и перевести проект на реакт не получится. Наверное будем частями переводить.

    Если это сайт среднего размера, то нужно заложить не неделю, а несколько месяцев.

    Т.е. получается одна часть проекта будет написана на реакте, а другая - нет? Это вообще как?

    А что здесь может быть не понятного? Ну реалазиуйте сначала на реакте одну страничку, самую простую в отдельном шаблоне сайта. Будет у вас для переделанных URL один шаблон использоваться, а для не переделанных другой - без реакта. Не вижу никакой проблемы.

    У кого то есть подобный или близкий к этому опыт? Что посоветуете? Как грамотно перевести проект на реакт в таком случае?

    Выше написал:
    1 Сначала разрабатываете шаблон для одного раздела сайта на React, так как буд-то других разделов просто не существует.
    2 Пишите соотвествующий бэкенд который будет отдавать данные для этого вашего шаблона.
    3 Переводите этот раздел сайта на React.
    4 Эксплуатируете неделю, подчищая косяки.
    5 Выбираете еще один раздел сайта поменьше и переводите его аналогичным образом.
    6 В этом месте у вас уже должно быть понимание где вы наложали с архитектурой, какие накопились костыли, и в чем фундаментальные изъяны того что вы сделал. Тут вы должны остановиться и выкинуть всё что сделали раньше. Я не шучу - просто выкинуть и начать перерабатывать эти разделы с нуля...
    7 Теперь вы знаете что делать дальше.
    Ответ написан
    6 комментариев
  • Можно ли настроить Composer так, чтобы все файлы пакетов складывались в общую папку?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Для написания подобных вещей существует такая вещь как "плагины". У Composer при установке зависимости есть API, которым можно пользоваться и творить что пожелается.

    По второй ссылке, что указал Дмитрий в комментариях пример такого "творчества". Там используются вот эти команды: https://github.com/zendframework/zend-expressive-s... документация по которым есть на сайте композера: https://getcomposer.org/doc/articles/scripts.md#co... где вызываются вот эти методы во время установки: https://github.com/zendframework/zend-expressive-s...

    А дальше дёргается API композера и творится всякое непотребство. Документации по нему нету, но методом тыка можно попытаться разобраться самостоятельно.
    Ответ написан
    Комментировать
  • ACF pro Gallery, получить ajaxом массив в JS перемене?

    Gori4ka
    @Gori4ka
    WordPress Developer
    можно конечно. Ajax должен отдать массив изображений.

    Создаёте событие которое выполняет ajax запрос которое будет отдавать в формате json.
    $.ajax({
      url: url,
      dataType: 'json',
      data: data,
      success: callback
    });

    И создаёте ответ для ajax
    function ajax_get_gallery(){
    $gallery = get_field('gallery',$_REQUEST['post_id']);
    wp_send_json( $gallery );
    
    }


    Как то так если на скорую руку. Всё легко
    Ответ написан
    Комментировать
  • Почему не подключаются стили woocommerce?

    Palych_tw
    @Palych_tw
    Типа веб-разработчик
    Скорее всего стили не применяются, потому что нет главного контейнера .woocommerce. Все стили от него написаны. Сделайте в вашей теме тег body вот так
    <body <?php body_class(); ?>>
    Ответ написан
    3 комментария
  • Как разделить строку на символы с учётом ударений?

    sankooo
    @sankooo
    Software Engineer
    Можно пройтись по массиву и объединить символ ударения с предыдущим символом.
    $arrayLetters = preg_split('//u', "оди́н", NULL, PREG_SPLIT_NO_EMPTY);
    $arrayLettersResult = [];
    $stressSym = "́";
    
    foreach ($arrayLetters as $i => $letter) {
        if ($letter == $stressSym) continue;
        if (!empty($arrayLetters[$i + 1]) && $arrayLetters[$i + 1] == $stressSym) {
            $arrayLettersResult[] = $letter . $stressSym;
        } else {
            $arrayLettersResult[] = $letter;
        }
    }
    
    var_dump($arrayLettersResult);
    
    /*
    array(4) {
      [0]=>
      string(2) "о"
      [1]=>
      string(2) "д"
      [2]=>
      string(4) "и́"
      [3]=>
      string(2) "н"
    }
    */
    Ответ написан
    1 комментарий
  • В чем отличия между .onclick() и .on('click', .....) в jQuery?

    leni_m
    @leni_m
    ЧупаКобрус
    .click(...) = .on('click', ...) просто укороченный вариант записи,
    только при последнем варианте больше возможностей.
    в .on() помимо клика можно использовать кучу других событий.
    И еще уточнять элементы т.е.
    $("#parent").on("click", "#child", ...) // клик вешается на id="child"

    Например, если у вас нету элемента с id="el" при загрузке страницы, а появляется он потом, например через ajax, то такая конструкция не сработает $("#el").click(...).
    А вот такая сработает $('body').on('click', '#el', ...) т.к. <body>почти всегда есть.
    Ответ написан
    5 комментариев
  • Как сделать шаблон архива произвольной таксономии?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    WordPress не генерирует "родительскую" страницу архива, как вы ее себе представили. Ни для кастомных таксономий, ни для стандартных меток или рубрик. Попробуйте http://адрес_сайта/category или http://адрес_сайта/tag чтобы убедиться в этом. Ваш запрос для WP выглядит следующим образом:

    Request            catalog
    Matched Rule       ([^/]+)(/[0-9]+)?/?$
    Matched Query      name=taxonomy&page=
    Query String	       name=taxonomy


    То есть, для WP подобный запрос - это статическая страница. А ее такой у него, очевидно, нет. Если вам нужна такая страница, да с каким-то функционалом, есть 2 пути. Но сначала определитесь, что вы там хотите? Список терминов вашей таксономии? Все посты в этой таксономии?

    Решение:

    1. Создать страницу с таким же slug (в вашем случае - catalog), для страницы создать кастомный шаблон page-catalog.php и в нем написать нужный вам код.

    2. Через хуки. Отлавливаете на этапе parse_query что запрос на страницу с названием catalog, и на этапе template_include подключаете нужный шаблон. Сам шаблон, естественно, нужно создать. Это может быть php-файл с любым удобным вам названием. В него вписываете весь нужный функционал.

    Куда копать:

    get_terms() - получить все термины в таксономии
    WP_Query - кастомный луп для получения постов. Читать секцию по Taxonomy Query.
    Ответ написан
  • Почему Yii/Yii2 не подходит для крупных проектов?

    @karminski
    Senior React.JS Developer
    У нас в компании 4 энтерпрайзных проекта на Yii2. В том числе CRM. В том числе и связь с телефонией, 1С, баг-трекером. Всё работает отлично, без нареканий. О каких "слабых" местах вы говорите? Прекратите читать - начните делать!
    Ответ написан
    7 комментариев
  • Объясните как работает php-fpm?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для начала почитайте что такое SAPI. Затем представьте что apache + mod_php разделили на web-сервер, который проксирует запросы на php-fpm и отдает статику, и собственно отдельный web-сервер который имплементит SAPI и выполняет запросы связанные только с php. То есть статику отдавать мы можем только через php. Суть примерно та же что и у apache2 + prefork + mod_php но оптимизированный только для работы с php. Так же можно поставить на фронт более быстрый и легковесный сервер который умеет проксировать запросы.

    То есть php-fpm это эдакий fast-cgi сервер который постоянно держит готовые для работы пул-процессов (сколько в пуле процессов настраивается, так же как и от какого пользователя их запускать и все такое прочее). Каждый новый запрос уходит в какой-либо процесс из пула, запрос отрабатывает, возвращаем результат тому кто попросил (web-серверу обычно). Если процесс падает (fatal допустим) - поднимаем новый.

    Принципиальной разницы между apache2+mod_php нету, просто упрощается инфраструктура. Наш web-сервер должен только уметь проксировать запросы и отдавать статику, а php-frpm вообще может быть на разных машинах (балансировщиком можно раскидывать запросы). Ну и сами понимаете, nginx + php-fpm будет быстрее обрабатывать запросы чем apache2+mod_php какой бы мы менеджер процессов не использовали в апаче. Минусов по сравнению с apache+mod_php я даже не могу предложить.

    А php-runtime не зависит от этого. Он один на всех, CLI, FPM, mod_php...
    Ответ написан
    7 комментариев
  • Как подключить стили и скрипты к плагину WordPress?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    add_action('init', 'register_script');
    function register_script() {
        wp_register_script( 'custom_jquery', plugins_url('/js/custom-jquery.js', __FILE__), array('jquery'), '2.5.1' );
        wp_register_style( 'new_style', plugins_url('/css/new-style.css', __FILE__), false, '1.0.0', 'all');
        wp_enqueue_script('custom_jquery');
        wp_enqueue_style('new_style' );
    }
    Ответ написан
    Комментировать