Задать вопрос
  • Как сохранить другую сущность при авторизации?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    В дополнении к тому что написал ThunderCat если не подходит разделение по ролям, вместо связи один-к-одному я бы предложил рассмотреть варианты по поисковому запросу: multiple authentication laravel что бы могла аутентифицироваться сущность User или Doctor.
    Т.к. используя вариант со связью один-к-одному предполагаю что могут быть затруднения с проверками прав в будущем в контроллерах, к примеру маршруты которые доступны только для модели Doctor
    Ответ написан
    Комментировать
  • Как пройти по двум массивам с проверкой на одинаковые ключи (PHP)?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Если я верно понял задачу то один из вариантов такой.
    Если в $arr1 есть ID-шники которых нет в $arr2 то на некоторых элементах HINT не заполним.
    Если в $arr2 есть все ID-шники которые есть в $arr1 и даже больше, то все элементы $arr1 должны будем заполнить;

    Но есть и другой вариант, можно из $arr2 сделать массив где индексы это ID, и тогда можно легко брать значения просто по индексу, типа такого $arr2[$id]
    $arr1 = [
        [
            "ID" => 11,
            "HINT" => "",
        ],
        [
            "ID" => 45,
            "HINT" => "",
        ],
        [
            "ID" => 1,
            "HINT" => "",
        ],
        [
            "ID" => 2,
            "HINT" => "",
        ],
        [
            "ID" => 3,
            "HINT" => "",
        ],
    ];
    
    $arr2 = [
        [
            "PROPERTY_ID" => 11,
            "FILTER_HINT" => "ПОДСКАЗКА-11",
        ],
        [
            "PROPERTY_ID" => 45,
            "FILTER_HINT" => "ПОДСКАЗКА-45",
        ],
        [
            "PROPERTY_ID" => 53,
            "FILTER_HINT" => "",
        ],
    ];
    
    foreach ($arr1 as &$item1) {
        // Берём ID обрабатываемого элемента массива
        $id = $item1["ID"];
        // Проходимся по массиву с ответами и ищем элмент по ID
        foreach ($arr2 as $item2) {
            // Если ID равны запишем данные из FILTER_HINT в HINT элемента
            if ($id == $item2["PROPERTY_ID"]) {
                $item1["HINT"] = $item2["FILTER_HINT"];
                // Завершим цикл по $arr2
                break;
            }
        }
    }
    // Ссылка $item1 на последний элемент массива останется после окончания цикла foreach.
    // Рекомендуется уничтожать её с помощью unset().
    // Подробнее про это и foreach в документации по PHP https://www.php.net/manual/ru/control-structures.foreach.php
    unset($item1);
    
    // Выводим результат
    echo '<pre>';
    var_dump($arr1);
    echo '</pre>';
    Ответ написан
    1 комментарий
  • Иногда форма отправляет данные множество раз. Где ошибка, можете объяснить?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Могу предположить из-за того что пользователь может быстро несколько раз нажать на кнопку "Отправить" в результате будет отправлено несколько ajax запросов.

    Можно попробовать сделать вот так:
    Когда событие "submit" выполнится в первый раз кнопка "Отправить" заблокируется, и если пользователь сразу нажмёт её ещё раз то событие уже не будет запущенно т.к. кнопка будет заблокирована до тех пор пока ajax запрос не завершится. Пример скрипта ниже, я его не проверял, если будите использовать то протестируйте, не ломается ли ничего. На кнопку в html нужно будет добавить класс: btn-form-submit.

    Либо может что-то в php скрипте, или на форме устанавливается несколько событий которое отправляет ajax запрос.

    $(function () {
        $("form[data-ajax]").on("submit", function (e) {
            e.preventDefault();
            var $form = $(this);
            var btn = $form.find(".btn-form-submit");
            // Заблокируем кнопку отправить
            $(btn).prop("disabled", true);
            $form.find(".input--error").removeClass("input--error");
            $.post($form.attr("action"), $form.serialize(), function (json) {
                if (json.result == "error") {
                    for (var x in json.errors) {
                        $form.find('[name="' + x + '"]').addClass("input--error");
                    }
                } else if (json.result == "redirect") {
                    window.location.href = json.url;
                } else {
                    $form.html(json.html);
                }
            }, "json").always(function () {
                if (btn.length) {
                    // Разблокируем кнопку отправить когда ajax запрос завершится будь то успех или ошибка
                    $(btn).prop("disabled", false);
                }
            });
        })
    });

    Небольшой совет, лучше давать обратную связь пользователю, когда он отправил форму показывать какую нибудь загрузку/крутяшку/прилоуд, что бы пользователь понимал что какое-то действие происходит.
    Ответ написан
    2 комментария
  • Верно ли найден ранг матрицы СЛАУ?

    Shlop
    @Shlop Автор вопроса
    Full Stack Developer (PHP/Laravel/JavaScript)
    Я так понял в моей задаче мне нужно добавить ещё нормировочное условие, и при этом одно любое из уравнений можно отбросить, прочитал в книге "Исследование операций. Задачи принципы методология" Е.С. Вентцель (стр. 130).
    Первое уравнение убрал и вместо него записал: p1+p2+p3+p4=1.

    И в результате получил:
    p1 = 0.32
    p2 = 0.32
    p3 = 0.24
    p4 = 0.12
    Ответ написан
    Комментировать
  • Как положить в массив число вместо id?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Если я верно понял, push в массив сделать вот так:
    this.itemsSelected.push(item.id);
    Т.е. пушить в массив не объект а именно id.

    Можно ещё вот так, что бы именно в массив добавилось число типа int (целое число)
    this.itemsSelected.push(parseInt(item.id, 10));
    Лучше тогда вот этот второй вариант использоваться если item.id имеет тип string, что бы id был число
    Ответ написан
    3 комментария
  • Как сверстать такой блок?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Я бы наверно делал вот так (ниже ссылка на codepen). Возможно чем-то поможет.
    По поводу фоновых кружков:
    • Я бы сделал их тегом img (экспорт из граф. редактора в svg) т.е. было бы 3 svg файла
    • Прописал бы им position: absolute;
    • Для картинки с фоновыми кружками сделал бы z-index=1, а для кружка с иконкой z-index=2
    • С помощью top, left, right, bottom картинку с фоновым кружками расположил как требуется

    Ещё обычно на небольшой ширине экрана с такими карточками бывает что заголовок переходит на вторую строку, и получается не ровно. К примеру вот так:
    62dc631128892163095748.png
    Это можно исправить добавив свойство height (высоту) блоку с названием.
    В моём примере на ширине 916px заголовок переходит на вторую строку, я добавил медиа выражение которое на этой ширине делает высоту блокам с названием карточки равную двум строкам, что бы ровно было.

    Ответ написан
    Комментировать
  • Как подключить сайт написанный на html к базе данных mysql?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Для того что бы подключиться к базе данных можно использовать язык программирования PHP.
    На официальном сайте у них есть руководство по данному языку. Можно ещё к примеру в интернете искать/смотреть какие-то статьи/уроки/книги.
    С помощью php можно к примеру:
    • Когда пользователь отправляет форму обратной связи отправить сообщение на почту с данными из полей формы;
    • Сохранять/получать данные из базы данных;
    • Сделать корзину как в интернет магазинах (как вариант с помощью сессии);

    Если вы работаете на Windows то в качестве локального веб сервера можно использовать к примеру
    Open Server на данном локальном сервере можно вести разработку сайтов (скриптов).

    В будущем можно будет ещё посмотреть что такое AJAX, как делать AJAX запросы в javascript.

    Когда уже будет какое-то знание языка программирование и понимание можно будет посмотреть на какую нибудь CMS систему или php framework, потому что писать всё с нуля это может быть долго и трудно.
    А разрабатывая сайты на таких системах есть уже набор каких-то готовых инструментов
    Ответ написан
    Комментировать
  • Почему класс не найден при автозагрузке классов в папке с помощью composer?

    Shlop
    @Shlop Автор вопроса
    Full Stack Developer (PHP/Laravel/JavaScript)
    Попробовал так же в корне всё разместить, теперь вроде работает.
    Только не в index.php всё написал (что бы не редактировать index.php modx) а просто создал тестовый файл qwe.php.

    В нём:
    <?php
    
    include "vendor/autoload.php";
    
    use App\Test;
    
    Test::get();
    Ответ написан
    Комментировать
  • Что за ошибка при выводе status apache2 code=exited status=1/failure?

    Shlop
    @Shlop Автор вопроса
    Full Stack Developer (PHP/Laravel/JavaScript)
    Дауж =)
    А утром уже нет этой ошибки
    Ответ написан
    Комментировать
  • В чём может быть проблема при миграции?

    Shlop
    @Shlop Автор вопроса
    Full Stack Developer (PHP/Laravel/JavaScript)
    Вроде бы решил эту проблему тем что добавил в composer.json следующее:
    "doctrine/common": "2.7.0" и "doctrine/dbal": "2.5.13"
    Ответ написан
    Комментировать
  • Как лучше сверстать галерею изображений разного размера?

    Shlop
    @Shlop Автор вопроса
    Full Stack Developer (PHP/Laravel/JavaScript)
    В общем кажется решил свою проблему, сделал эти две картинки у которых разная высота была когда они рядом стояли друг с другом, одинакового размера, сейчас они - 416x620, в итоге получилось вот что:
    5fe469020a074668817950.png
    И для картинок сделал min-height: 111px; минимальную высоту задал, что бы картинки при уменьшении не становились меньше заданной высоты, правда из за этого свойства пропорции не будут сохраняться но у меня пока что с этим проблем нет
    Ответ написан
    Комментировать
  • Как в этот php который генерирует карту сайта добавить lastmod?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Можно вот так попробовать
    $date = date('Y-m-d\TH:i:sP');
    echo "</loc>\n<changefreq>daily</changefreq>\n<priority>1.0</priority>\n<lastmod>{$date}</lastmod>\n</url>";

    Либо без переменной вот так (этот вариант лучше кажется):
    echo "</loc>\n<changefreq>daily</changefreq>\n<priority>1.0</priority>\n<lastmod>".date('Y-m-d\TH:i:sP')."</lastmod>\n</url>";
    Ответ написан
  • HTML5. Правильная семантическая структура для страницы?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Корректность разметки можно кстати проверить с помощью валидатора: https://validator.w3.org/
    Наверно я кстати немного поспешил и нужно уточнить, данный валидатор проверяет синтаксис веб-документов, а не семантическую структуру, подробнее про валидатор можно вот тут посмотреть
    Ответ написан
    Комментировать
  • Как не закончить цикл while?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    let sum = 0;
    let strNumber = 0;
    let number = 0;
    while (strNumber !== null) {
      strNumber = prompt("Введите число:", ""); // Получаем из prompt строку либо число в виде строки, если нажата отмена то вернёт null
      number = Number(strNumber); // Приводим строку к числу, если строка не может быть числом то вернёт NaN см. https://learn.javascript.ru/type-conversions
      sum += (!isNaN(number)) ? number : 0; // Использую isNaN потому что Number.isNaN не будет работать в IE у isNaN есть особености см (https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/isNaN)
    }
    if(sum) {
      alert(sum);
    }
    Ответ написан
    Комментировать
  • Почему false срабатывает как true?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Скорее всего из за того что false приходит в виде строки, и условие соответственно выполняется, потому что люба строка это уже true, пробуйте что-то типа такого:
    $.ajax({
    	url: '/action_ajax_form.php',
    	type: "POST",
    	data:  $("#feedback-form_03").serialize(),
    	success: function(response) {
    		if (response !== "false") {
    			console.log(response);
    			console.log('<div id="message_03">Ваше сообщение успешно отправлено. Спасибо!<br />Мы свяжемся с вами ближайшее время!</div>');
    		}
    	}
    }
    })
    Ответ написан
  • Почему после залива скрипта на хостинг не видит индекс файл?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Вроде бы такая же как у вас проблема:
    https://www.zzz.com.ua/forum/-f15/-t1870.html

    Попробуйте на хостинге создать файл .htaccess на одном уровне с папкой public, со следующем содержимым:
    DirectoryIndex /public/index.php
    <IfModule mod_rewrite.c>
       RewriteEngine On
       RewriteBase /
       RewriteRule ^\.index\.php$ - [L]
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteCond %{REQUEST_FILENAME} !-l
       RewriteRule . /public/index.php [L]
    </IfModule>
    Ответ написан
    Комментировать
  • Почему после установки laravel, главная страница выводит список файлов?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    В Open Server попробуйте выставить такие вот настройки, а затем нажать кнопку "Сохранить"
    5f786fea3ad38897147786.png
    Ответ написан
    1 комментарий
  • Почему в xml файл появляются пустые строки между тегами, и как их убрать?

    Shlop
    @Shlop Автор вопроса
    Full Stack Developer (PHP/Laravel/JavaScript)
    решил данную проблему, как я понял дело было в том, что вот это свойство которое устанавливается
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    добавляет отступы, а так как в файле xml у меня уже были записи, то к ним добавляются отступы ещё, по мимо тех что которые уже были в файле, поэтому я и получал пустые строки между тегами. Ну и решил проблему тем, что просто строю новый Document если нужно добавлять что то новое в xml и перезаписываю xml файл новыми данными, а раньше я просто дописывал в xml файл новые данные, и получал пустые строки между тегами.
    Пример кода как я создаю новый Document:
    public static Document modelsToDocument(ArrayList<Country> countries) throws ParserConfigurationException {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.newDocument();
            Element root = document.createElement("countries");
            document.appendChild(root);
            for(Country country : countries) {
                root.appendChild(Elements.getCountry(document,country));
            }
            return document;
        }
    Ответ написан
    Комментировать
  • Как сделать так что бы маршрут срабатывал для всех страниц админки?

    Shlop
    @Shlop Автор вопроса
    Full Stack Developer (PHP/Laravel/JavaScript)
    Сделал так:
    Route::get('admin/{alias}', 'Admin\AppController@index')->name('admin')->where('alias','.*');

    Пока вроде работает как нужно
    Документация по where https://laravel.com/docs/5.8/routing#parameters-re...
    Ответ написан
    Комментировать