• Yii2 Как множественному инпуту одного атрибута задать разные правила валидации?

    @dimoff66
    Кратко о себе: Я есть
    У вас этот атрибут какого типа? Из кода видно, что модель получит массив. Массив и проверяйте функцией на сервере, либо валидируйте на клиенте.
    Ответ написан
  • Как перейти с VS Code на PhpStorm?

    @dimoff66
    Кратко о себе: Я есть
    Настройки в PHPStorm очень простые и очевидные, я сделал свою тему полностью под себя, поменяв и шрифт и цвета всех составляющих кода под то, что мне удобно и привычно.
    Ответ написан
    Комментировать
  • Как сделать операции с данными полученными с БД?

    @dimoff66
    Кратко о себе: Я есть
    Получить их из БД в готовом виде, используя левое соединение в SQL запросе
    Ответ написан
  • Как можно сократить данное выражение в JS?

    @dimoff66
    Кратко о себе: Я есть
    Сокращал так, не работает
    const hasSalePrice = isSingleReady && product.sale_price


    Так должно работать
    const hasSalePrice = !isSingleReady || product.sale_price
    Ответ написан
    Комментировать
  • Стоит ли учить JS или Java если поступаешь на Software Engineering?

    @dimoff66
    Кратко о себе: Я есть
    Университет для овладения профессией бессмысленен с моей точки зрения. Я почти 20 лет работаю профессиональным программистом без знания всех тех алгоритмов, что дают в университете. Для работы программистом нужен просто живой ум, а для овладения инструментами онлайн пособия, на худой конец онлайн курсы полугодовые. Дальше только практика практика практика...

    Университет нужен чтобы на старости лет вспоминать о лихой универститетской жизни и попойках в общаге, и чтобы легче эмигрировать в страны, где иностранцев принимают на работу только с корочкой о профильном высшем. Для профессии он не нужен и даже вреден, поскольку взращивает в неокрепшей психике совершенно бессмысленные понты и апломб.

    Отвечая конкретно на вопрос - JS будет полегче и перспективнее. Вся разработка движется к упрощению, скоро js будет номер один не только на фронтенде, но и на бэкенде. Но и на Java спрос будет, поэтому лучше думать не о том, что перспективнее, а о том, что больше приносит вам удовольствие, потому что веяния меняются, и постоянно думая что перспективнее вы будете похожи на человека, мечущегося между очередями в кассы супермаркета и каждый раз наблюдающего, как очередь из которой он ушел вдруг начала двигаться быстрее. Расслабьтесь, получайте удовольствие. Лучшие программисты - те, кто умеет получать от профессии удовольствие. И это очень перспективно, пока искусственный интеллект еще не научился писать программы за нас.
    Ответ написан
    Комментировать
  • Как вывести имя пользователя вместо id?

    @dimoff66
    Кратко о себе: Я есть
    $value->user->name
    Ответ написан
    Комментировать
  • Как отправить на сервер значение button?

    @dimoff66
    Кратко о себе: Я есть
    Каким образом оно заполнено? Если программно, то имеет смысл сделать инпут с типом hidden и заполнять это значение у него.
    Ответ написан
    2 комментария
  • Как сделать скрипт на JS?

    @dimoff66
    Кратко о себе: Я есть
    Почитайте про технологию AJAX, она делается на клиенте, ничего на PHP делать специально не надо.

    С использованием xmlHttpRequest
    https://learn.javascript.ru/ajax-xmlhttprequest
    Ответ написан
    Комментировать
  • Как сделать горизонтальный скрол с управляющими элементами?

    @dimoff66
    Кратко о себе: Я есть
    Ширину родительского блока получаем складывая ширину дочерних элементов


    Получать ее в тот, момент, когда она вам нужна. И складывать ничего не нужно, у элементов есть свойство clientWidth
    Ответ написан
  • О изучении PHP и Фреймворках?

    @dimoff66
    Кратко о себе: Я есть
    но тут же сталкиваюсь с проблемой, что они (фреймворки) для новичка очень перегружены возможным функционалом, библиотеками и я никак не могу понять как подступиться т.к сразу после установки слабо понимаю что делать далее


    Ларавел, быстрый старт
    https://laravel.ru/docs/v5/quickstart

    Читаете и делаете по шагам. Для меня супермаркеты тоже перегружены продуктами, это никогда не мешало мне зайти, купить хлеб и молоко и выйти. Когда будет потребность в большем, куплю что-то еще. То есть если что-то не понимаете - не парьтесь, никакой необходимости понимать сразу весь функционал нет, когда вы столкнетесь с какими-то вещами в разработке, вы вспомните и поймете зачем это было нужно.
    Ответ написан
  • Как получить все возможные перестановки?

    @dimoff66
    Кратко о себе: Я есть
    Переводите изначальный массив в плоский, содержащий все одиночные значения с добавленным флагом check

    $paramsFlat = [
      ['value' => ['option1' => 1], 'check' => 0],
      ['value' => ['option1' => 2], 'check' => 0],
      ...
      ['value' => ['option3' => 2], 'check' => 0],
    ];


    Теперь все что вам нужно - в цикле получить все варианты с check, алгоритмически проще всего это сделать, представив двоичное число с количеством разрядов равное количеству элементов:
    в вашем примере таковых 9, то есть:
    000000001
    000000010
    000000011
    000000100
    ..
    111111111

    Соответственно алгоритм на каждом шаге такой - ищем в $paramsFlat первый элемент с check === 0, меняем его на единицу, а свойство check всех элементов до него обнуляем

    После каждого шага включаете в очередной элемент итогового массива $result только элементы $paramsFlat с check === 1

    Функция получения следующего элемента может выглядеть примерно так (не тестировал и не оптимизировал, но смысл полагаю ясен)

    function getNext($paramsFlat) {
        foreach($paramsFlat as &$elem) {
            // Инвертируем значения до первого найденного нуля
            if($elem['checked'] = !$elem['checked']) break;    
        }
        
        // Получаем массив, содержащий отмеченные элементы
        $retVal = array_filter($paramsFlat, function($v) {return $v['checked'];});
        if(!count($retVal)) return false;
        
        // Возвращаем массив из значений отмеченных элементов
        return array_map(function($v) {return $v['value'];}, $paramsFlat);
    }
    Ответ написан
  • Желательно, чтобы state был в одном компоненте?

    @dimoff66
    Кратко о себе: Я есть
    Это один из подходов. На мой взгляд в плане расширяемости такой подход неверный, потому что если подчиненный компонент захочется использовать где-то еще со всей его логикой, то просто так подключить его не получится, придется как-то увязывать с состоянием главного компонента.
    Ответ написан
    Комментировать
  • Почему не перерисовывается компонент?

    @dimoff66
    Кратко о себе: Я есть
    Потому что конструктор вызывается только при создании компонента, а не при его перерисовке. Вам не нужно в message переводить props в state, какой в этом смысл, если он все равно приходит от родителя и меняется в другом компоненте?

    При рендеринге просто пишите
    <p className="message__text">{this.props.text}</p>
    Ответ написан
    Комментировать
  • Как наиболее правильно реализовать каталог с фильтрами и сравнением?

    @dimoff66
    Кратко о себе: Я есть
    В будущем хочу добавить фильтры по характеристикам, и сравнение товаров. Поэтому характеристики не хочу загонять в отдельную таблицу со связью many-to-many


    А как одно связано с другим? Каким образом хранение характеристик и их значений в отдельной таблице может помешать добавлению фильтров по характеристикам? Никак. Хранение характеристик в отдельной таблице с полями product_id property_id value (возможно value_string, value_number, value_date) никак не помешает фильтрации, сравнению и т.п.

    Способ с 30 полями немасштабируем, кривоват и либо приведет к распуханию таблицы индексов, а значит тормозам при записи, если все 30 полей будут проиндексированы, либо будут тормоза при чтении.
    Ответ написан
    3 комментария
  • Вернуть клиенту деньги, за проделанную работу?

    @dimoff66
    Кратко о себе: Я есть
    Отдайте деньги и ждите. Не далее чем через 3 месяца клиент попросится обратно - берите двойную сумму.
    Ответ написан
    22 комментария
  • Как научиться создавать сайты, если в программировании полный 0?

    @dimoff66
    Кратко о себе: Я есть
    Как научиться создавать сайты, если в программировании полный 0?


    Воспользоваться конструкторами сайтов.
    Ответ написан
    8 комментариев
  • Проверка e-mail адреса через js, как дозволить регистрацию через определённые ящики?

    @dimoff66
    Кратко о себе: Я есть
    var mail = 'love@mail.ru';
    var boxes = ['mail.ru', 'gmail.com'];
    var expr = new RegExp('^[.a-z0-9_-]+@(' + boxes.join('|').replace(/\./g, '\\.') + ')$', 'i');
    var isValid = expr.test(mail);
    Ответ написан
    Комментировать
  • Как в базе правильно хранить промежутки дат?

    @dimoff66
    Кратко о себе: Я есть
    Поле с типом set с возможными значениями Регулярно, Пн, Вт, Ср и т.д.

    Либо без регулярно, просто в случае регулярно писать в set все значения, все равно сумма значений хранится в виде числа, базе все равно.
    Ответ написан
    Комментировать
  • Кто может подсказать правильный путь к программированию?

    @dimoff66
    Кратко о себе: Я есть
    То, что больше нравится - востребовано все. Существуют 2 подхода:
    1) Самостоятельное обучение - читаете материалы и туториалы в интернете, делаете что-то что вам интересно, выкладываете на гитхаб, устраиваетесь на позицию джуниора.
    2) Идете на онлайн курсы, все то же самое, что 1, только вам дают готовую программу, ведут вас и за вас придумывают задания и проекты. Можно расслабиться и просто получать удовольствие. Минусы помимо денег в том, что вы не контролируете процесс и слепо доверяетесь составителям программы. Плюсы что психологически так конечно проще.
    Ответ написан
    Комментировать
  • Какой верный подход при создании многостраничного react приложения?

    @dimoff66
    Кратко о себе: Я есть
    1. Если header и footer не имеют кнопок или других элементов, меняющих состояние компонентов, то можно обычной версткой, а внутрь поместить блок, в котором будет работать главный компонент приложения
    2. Да, так и есть.
    3. Почитайте про React Router, вкратце: страницы помещаются внутрь компонента Switch и у каждого в пропсах прописывается путь, при котором оно будет отбражено. И есть компоненты Link, которые меняют location компонента.
    4. В интернете много материалов, как подружить React Router с SEO
    Ответ написан
    2 комментария