• Как сделать value динамическим свойством?

    @vlog
    Вам нужно просто присвоить значения свойствам, которые указаны в v-model.

    export default {
    ...
      data(){
         return {
             item.check: 'Значение по умолчанию',
         }
      }
    }


    Если хотите, чтобы внешние данные стали значениями по умолчанию, можете через mounted присвоить вашей переменной item.check эти значения, либо, если первоначальные данные нигде больше не нужны, указать data.check в качестве v-model напрямую.
    Ответ написан
  • Как реализовать функционал подписи документа с помощью CryptoPro на Laravel?

    @vlog
    Недавно реализовывал этот функционал, подписывал файлы, которые уже загружены на сервер. Сама подпись может быть реализована только на фронте и по-сути это вопрос фронта, кроме CryptoPro Browser Plug-in ничего особо не нужно, но я для удобства использовал эту библиотеку.

    С помощью этих функций реализовал создание подписи:

    import {
        createAttachedSignature,
        createDetachedSignature,
        createHash,
        createXMLSignature,
        getSystemInfo,
        getUserCertificates
    } from "crypto-pro";
    
    // В this.cert.thumbprint лежит выбранный пользователем thumbprint
    
    sign(url){
    
                if(!this.cert.thumbprint){
                    alert('Подпись не выбрана. Выберите подпись.');
                    return;
                }
               
                this.signFile = section;
    
                let self = this;
    
                // В моём случае пользователь не загружал файлы для подписания, а подписывал уже имевшиеся на сервере, поэтому в эту функцию передаётся ссылка на файл, функция получает его, обрабатывает и подписывает
                fetch(url)
                    .then(res => res.blob()) // Gets the response and returns it as a blob
                    .then(blob => {
                        // Here's where you get access to the blob
                        // And you can use it for whatever you want
                        // Like calling ref().put(blob)
                  
                        var oFReader = new FileReader();
                        oFReader.readAsArrayBuffer(blob);
    
                        // javascript имеет событийную модель, когда процесс чтения завершиться продолжаем исполнять сценарий
                        oFReader.onload = function(oFREvent) {
                            let sBase64Data = this.result;
                            createHash(sBase64Data).then(self.createSignature.bind(null, sBase64Data), function (hashError) {
                                //
                            });
    
                        };
                    });
    
            },
              createSignature(message, hash){
                let self = this;
    
                var thumbprint = this.cert.thumbprint,
                    signatureType = 'detached',
                    signaturePromise;
    
                switch (signatureType) {
                    case 'attached':
                        signaturePromise = createAttachedSignature(thumbprint, message);
                        break;
                    case 'xml':
                        signaturePromise = createXMLSignature(thumbprint, message);
                        break;
                    case 'detached':
                        signaturePromise = createDetachedSignature(thumbprint, hash);
                        break;
                }
                
                signaturePromise.then(function (signature) {
                    axios.post(route('addSign'), {
                        fileSectionId: self.signFile,
                        signature: signature, // Тут отправлял текст подписи и уже на сервере сохранял её в файл .sign
                        certInfo: self.cert,
                    })
                        .then(function (data){
                            alert('Создание подписи завершилось успехом');
                        });
                }, function (error) {
                    alert('Создание подписи завершилось с ошибкой. Подпись не создана.');
                });
            },


    Когда всё сделаете, обязательно проверьте действительность подписи на госуслугах, чтобы понять, что всё работает корректно.
    Остальное по формированию PDF и сохранению на сервере найдёте сами.

    PS Не бойтесь пользоваться Интернетом :)
    Ответ написан
  • Можно ли как то оптимизировать запросы в контроллере?

    @vlog
    Я, конечно, не суперэксперт, но, мне кажется, у вас не особо громоздкий код в этом месте. Я бы сделал так:

    Цикл с суммой можно заменить этим:
    $sumBalance = $user->sum('balance');
    Подробнее о коллекциях и методах можно почитать тут. Но это если вам будет нужна $user в чистом виде в представлении, если они не будут Вам нужны, то можно вообще не запрашивать всех пользователей из бд, а использовать агрегатную функцию sum()

    $ordersWin и $ordersAllWinидентичны, не понимаю в чем разница. Если хотите оптимизировать запросы, то можно сначала получить записи со статусами 1 и 2 с помощью одного запроса, а затем группировать по статусам используя метод groupBy.

    Кроме того, возможно, Вы специально скрыли это, чтобы вопрос не был большим, но Ваши данные не передаются в приложение сейчас. Для того, чтобы они передавались Вы должны во втором аргументе render передать массив с данными:
    Inertia::render('Admin/Index', [
    'key' => $value,
    ]);


    Рекомендую почитать о коллекциях, там есть полезные вещи. Также, если хотите оптимизировать взаимодействие с бд, рекомендую использовать метод select и запрашивать только те столбцы, которые Вам нужны.
    Ответ написан
    Комментировать
  • Почему данные доходят до nginx, но не доходят до Laravel?

    @vlog Автор вопроса
    В конечном итоге, по совету Lynn «Кофеман», написал TCP сервер, через который принимал запрос с трекера и уже в форме HTTP POST запроса передавал его в Laravel.
    Проблема оказалась в том, что запрос - не HTTP.
    Ответ написан
    Комментировать
  • Оцените верстку HTML / CSS, стоит ли переходить на изучение JS?

    @vlog
    Ожидал увидеть что-то не очень красивое как это очень часто бывает. Однако, нет, у вас здорово получается, можно начинать js))
    Ответ написан
    1 комментарий
  • Как вытащить tv параметр с id в переменную?

    @vlog
    [[#id.tvname]], если я не ошибаюсь, то так. Но это в шаблонах и чанках.
    Если речь о сниппетах, то рекомендую почитать серию статей об xPDO, там довольно доступно и подробно этот процесс описан. В одной из статей приведён такой код:
    $res = $modx->getObject('modResource', 16);
    $tv = $res->getTVValue(4);
    return $tv;
    Ответ написан
    Комментировать
  • Есть ли бесплатной API по зарегестрированным случаям COVID-19 по региону?

    @vlog
    Это, конечно, не API, но такие данные для интеграций предоставляет Яндекс. Возможно вам подойдёт такой формат.
    Ответ написан
    Комментировать
  • Почему не работает кнопка VKPay в боте?

    @vlog Автор вопроса
    Кнопка не работала из-за ошибки на стороне VK. Написал в поддержку, через некоторое время поправили.
    Ответ написан
    Комментировать
  • Как сделать, чтобы не разъезжались блоки при изменении масштаба?

    @vlog
    EvgenyCherny, это происходит из-за абсолютного позиционирования элементов. Хотелось бы, конечно, код видеть, а не гадать, что у вас там...

    А вообще, вам нужно поместить слой над картинкой в контейнер (блок с заданными в относительных единицах полями и центрированием по центру) с height: 100%; и я бы сделал flex-разметку, внутри нее поместил бы меню и ваш контент.

    Значения position: relative; и height: 100vh; должен иметь один блок, в котором лежит вся шапка.
    Блоки внутри него (с картинкой и содержимым) должны иметь position:absolute; и height: 100%.
    Блок с контентом должен быть размечен, я бы сделал flex.
    Ответ написан
    Комментировать
  • Как сохраниить ответы пользователя в переменные php?

    @vlog
    Вам нужны не переменные, а база данных. Переменные они на то и переменные, они будут обновляться каждый раз, когда ваш код будет выполнятся и никакие данные вы в них не сохраните.
    Возможно, конечно, я вас неправильно понял и вам действительно нужны именно переменные, но мне что-то подсказывает, что вы хотите сохранить данные о пользователе, чтобы использовать их при следующих запросах.
    Изучите работу с бд или пишите в файл (чего я вам очень не рекомендую делать). В скрипте ничего сохранить не получится.
    Ответ написан
    Комментировать
  • Как правильно разбить php на колонки?

    @vlog
    Представленный код отображается как нужно. Вам следует поискать противоречия в уже существующих стилях.
    Ответ написан
    1 комментарий
  • Certbot: После установки ssl сайт перестал загружаться, браузер возвращает ERR_CONNECTION_TIMED_OUT. Как исправить?

    @vlog Автор вопроса
    Оказалось, что брандмауэр ограничивал доступ к 443 порту. Я почему-то думал, что он будет разрешён по умолчанию...
    Команда sudo ufw allow 'Nginx Full' мне помогла. Всем спасибо за помощь!
    Ответ написан
    Комментировать