• Как сделать запрос на поиск id городов?

    iMedved2009
    @iMedved2009
    Не люблю людей
    1. Зачем csrf при get запросе?
    2. Вместо url('/search') лучше использовать named routes и route('search')
    3. Надо забыть про $_GET и isset($_GET). У вас есть $request->get() и $request->has()
    4. Можно забыть про $request->has() у вас есть query()->when()
    5. Зачем вы делаете all()? Вы дергаете все записи потом это фильтруете? Зачем вам тогда БД?

    Итого:
    $items = Trip::when($request->get('day_date'), function($query, $date){ $query->where('date', $date); })
                    ->when($request->get('city_departure'), function($query, $departure_id){ $query->where('departure_id', $departure_id); })
                    ->when($request->get('city_arrival'), function($query, $landing_id){ $query->where('landing_id', $landing_id); })
                    ->get();
                return view('search')->with(['mass' => $items]);
    Ответ написан
    21 комментарий
  • Как продавать игровую валюту?

    xez
    @xez
    TL Junior Roo
    Разные товары за разную стоимость и все.
    Ответ написан
    Комментировать
  • Как задать задержку для fetch при скачивании более 4000 фото?

    RAX7
    @RAX7
    Помимо случайной задержки нужно еще ограничить количество одновременных запросов, примерно так:
    function randomDelay(min = 250, max = 750) {
      return new Promise((resolve) => {
        const ms = Math.random() * (max - min) + min;
        setTimeout(resolve, ms);
      });
    }
    
    function downloadAll(urls, limit = 4) {
      return new Promise((resolveAll, rejectAll) => {
        const result = [];
        const iter = urls.entries();
        let fulfilled = 0;
    
        const next = () => {
          const { done, value } = iter.next();
    
          if (done) {
            if (fulfilled === urls.length) {
              resolveAll(result);
              return;
            }
    
            return;
          }
    
          const [index, url] = value;
          const onFulfilled = (val) => {
            result[index] = val;
            fulfilled += 1;
            next();
          };
    
          randomDelay()
            .then(() => fetch(url))
            .then(onFulfilled, rejectAll);
        };
    
        for (let i = 0, l = Math.min(limit, urls.length); i < l; i++) {
          next();
        }
      });
    }
    
    const urls = Array.from(
      { length: 100 },
      (_, i) => `https://jsonplaceholder.typicode.com/todos/${i + 1}`
    );
    
    (async () => {
      const responses = await downloadAll(urls, 2);
      const data = await Promise.all(responses.map((r) => r.json()));
      console.log(data);
    })();
    Ответ написан
    1 комментарий
  • Как задать задержку для fetch при скачивании более 4000 фото?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Можно в N параллельных «потоков» скачивать. В каждом случайная пауза перед очередным URL:
    const N = 3;
    
    const delay = ms => new Promise(res => setTimeout(res, ms));
    
    const next = () => {
      if (items.length > 0) {
        return download(items.shift())
          .then(delay(500 + Math.floor(Math.random() * 500))) // случайная пауза между закачками
          .then(next);
      }
    };
    
    const works = Array.from({ length: N }, () =>
      Promise.resolve()
        .then(next)
        .catch(console.error)
    );
    
    Promise.all(works).then(() => console.log('All Done'));
    Ответ написан
    1 комментарий
  • Как сделать отмену отправку формы, если не пройдена валидация полей?

    Seasle
    @Seasle Куратор тега JavaScript
    document.querySelector('form')?.addEventListener('submit', (event) => {
        const form = new FormData(event.currentTarget);
        let isValid = true;
        
        if (form.get('name').length <= 2) {
            isValid = false;
        }
        
        if (!isValid) {
            // Отмена отправки формы
            event.preventDefault();
        }
        
        alert(`Is Valid: ${isValid}`);
    });
    Ответ написан
    3 комментария
  • Как реализовать обертку над магическими константами?

    MvcBox
    @MvcBox
    Software Engineer [C/C++/JS(for Node.js)/etc]
    Как реализовать обертку над магическими константами?

    Никак

    Или придется ковыряться в debug_backtrace() ??

    Как один из вариантов
    Ответ написан
    Комментировать
  • Почему такое кривое форматирование в HTML после Gulp?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега HTML
    Да всё довольно просто - шаблонизатор просто сохраняет вашу собственную табуляцию.
    Возьмём для примера header. В базовом файле у вас перед include идёт отступ в 8 пробелов - он сохраняется. Потом читается файл заголовка, в котором перед <header class="header"> отступа нет, а перед <div class="container"> отступ в виде 4 пробелов есть - он тоже сохраняется. Шаблонизатор просто не добавляет дополнительные отступы, которые были перед директивой @@include ко всем строкам подключаемого шаблона.
    Используйте дополнительно какой-нибудь beautify-пакет, если хотите красоты.
    Ответ написан
    1 комментарий
  • Как использовать классы через интерфейсы?

    Real_Fermer
    @Real_Fermer
    Программист PHP
    на двух классах вы не поймете зачем нужны интерфейсы. и выгоды от их использования.
    Интерфейсы нужны когда вы закладываете возможность расширения вашей системы. И расширять будете не вы.
    Ответ написан
    1 комментарий
  • К чему относятся эти "приемы"?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    К чему относятся эти «приемы»

    К "модульной архитектуре". Правда не понятно что подразумевается под "и т.д."

    Webpack

    Лишь сборщик. Не безальтернативный. Помогает собирать проект и используемые модули в единый бандл, или на несколько чанков (пакетов), которые потом улетают в продакшен. Разделение на чанки для того, чтобы пользователь грузил только то, что нужно для текущей страницы.

    Npm

    Менеджер пакетов. Так же имеет альтернативы. То есть утилита, которая позволяет установить локально какой-то модуль. Который потом частично или полностью, по необходимости, можно будет импортировать в проект и воспользоваться его функциональностью.

    что именно мне нужно учить

    Модули, в частности, es6 модули, это если хотите понимать что действительно происходит.

    Но если детали Вам не интересны, то всё очень на самом деле просто.
    Представьте что один файл вам предоставляет функции(то есть делает export из себя), а в другом файле Вы эти функции потребляете(то есть делает import в себя). А нужно это, чтобы написать какой-то модуль один раз, и потом переисползовать. А не делать постоянно ctrl+c - ctrl+v. Вот и всё.
    Ответ написан
    4 комментария
  • Для чего композер требует указать ext-curl у себя?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Список расширений php - https://www.php.net/manual/en/extensions.membership.php
    Как видите curl входит в категорию "External Extensions" и значит может быть не установлен или недоступен на целевой системе.
    Поэтому вы явно указываете в зависимостях в composer.json что для запуска вашего кода требуется ext-curl и при его отстутствии composer install выдаст об этом соответствующее сообщение с ошибкой
    Ответ написан
    Комментировать
  • Функция в javascript и все ли они нужны?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Вызвать функцию можно только 2мя способами. Один из способов из двух вариантов.

    1. Как обычно, через круглые скобки ().
    2. Через вызов метода .call или .apply

    Других вариантов вызова функции что-то не приходит в голову.

    Способов объявления функций тоже всего два:
    - function expression - expression - выражение, то есть такая строчка, у которой есть знак =
    - function declaration - классическое объявлений функций через function name() {}.
    Между этими двумя вариантами одно основное кардинальное отличие, которое запомнить очень просто. Всплытие declaration.

    Все ли они нужны? Да.
    Можно ли обойтись без expression на первых этапах обучения и будет ли достаточно declaration? Да.
    Что ещё Вы хотите запоминать?

    P.s. можно ещё создавать функцию через конструктор Function, но так никто не делает, поэтому опустим этот вариант.
    Ответ написан
    Комментировать
  • Как вывести товары с категориями на одной странице?

    iMedved2009
    @iMedved2009
    Не люблю людей
    $categrories = Category::query()
                ->with(['products', 'products.ingredients', 'products.options'])
                ->get();
    
    @foreach($categrories as $categrory)
    {{$category->name}}
    @foreach($categrory->products as $product)
    {{$product->name}}
    @endforeach
    @endforeach
    Ответ написан
    1 комментарий
  • Есть ли такие готовые карусели?

    godsplane
    @godsplane
    swiper
    Ответ написан
    Комментировать
  • Как в vue задать value у input?

    <template>
      <div>
        <input type="text" v-model="form.templatename" />
        <pre>{{ form }}</pre>
      </div>
    </template>
    
    <script>
    export default {
      name: "App",
      data() {
        return {
          form: {
            templatename: 'Тест'
          }
        };
      }
    };
    </script>
    Ответ написан
    Комментировать
  • Почему может не работать yarn add?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Не установлен yarn. Всё написано русским по чёрному.
    Ответ написан
    1 комментарий
  • Как весь блок заполнить точками?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Повторяющимся радиальным градиентом
    https://jsfiddle.net/Ankhena/h21s4o0m/
    Ответ написан
    Комментировать
  • Как валидировать обязательно-необязательное поле и вернуть предыдущее значение в форму?

    iMedved2009
    @iMedved2009
    Не люблю людей
    То есть напрямую изменить одно поле в массиве входящих данных?

    есть решение в какой нибудь сервис провайдер запихнуть макрос ибо реквест у нас macroable, аля

    Illuminate\Http\Request::macro(
        'mergeGently', function($array){
    // где делаем магию аля проверки и прочее.
    });

    после чего будет работать $request->mergeGently($array);

    Как его туда прокинуть?

    app/Exceptions/Handler.php
    public function register()
        {
            $this->renderable(function (ValidationException $exception) {
                return redirect($exception->redirectTo ?? url()->previous())
                    ->withInput(Arr::except($exception->validator->getData(), $this->dontFlash))
                    ->withErrors($exception->errors(), $exception->errorBag);
            });
        }

    В принципе после этой правки все эксепшены с валидацией будут содержать ваши merge из prepareForValidation и не надо дублировать merge. Но стоит проверить как это будет реагировать на json запросы. мне лень

    З.Ы. Чего то сообразил - можно же легче - просто переопределить метод invalid у app/Exceptions/Handler.php
    Ответ написан
    2 комментария
  • Какой компьютер выбрать для программирования?

    @res2001
    Developer, ex-admin
    1. Как уже писали, для программирования много не надо. Но когда комп начинает тормозить в не подходящий момент - это не приятно.
    2. Ноутбук или стационарный ПК надо выбирать исходя из того как вы пользуетесь им. Если он все время на одном месте - то смысла в ноуте нет.
    3. Учтите, что стационарный выйдет дешевле при тех же характеристиках.

    Я недавно обновил свой ноут. У меня вопроса не стояло ноут или ПК, т.к. регулярно бываю на выезде, хотя основное время - дома на удаленке.
    Взял Lenovo Legion 5. Доволен как слон :-)
    У Леново есть еще хорошие варианты в рамках линеек ThinkPad T/P/X. В каждой линейке несколько моделей. Пишут, что thinkpadы сертифицируются для пентагона, так что там качество на высоте должно быть.

    Если все таки остановитесь на ноуте, обращайте внимание на то, что в некоторых моделях память распаяна на материнке и заменить (увеличить) ее практически не реально. Так же есть смысл смотреть на наличие дополнительного слота для SSD. Ну и наличие необходимых внешних интерфейсов то же может быть важным вопросом. Если подключаете внешние мониторы, то смотрите, чтоб были разъемы в нужном количестве и нужного типа.
    Обычно, можно купить ноут с небольшим SSD и количеством памяти и сразу проапгрейдить его, возможно будет дешевле, чем сразу покупать ноут с необходимым размером SSD и памяти. На процессоре экономить не стоит.
    На озоне сейчас есть наши продавцы, которые возят из китая. Доставка долгая - 1-1.5 месяца. Но сильно дешевле, чем брать там где "в наличии". Растаможка уже включена в стоимость. У продаванов из Китая растаможка, скорее всего, не включена, поэтому у них ценник будет еще ниже, но он, с большой вероятностью, не окончательный.
    Ответ написан
    1 комментарий
  • Почему npm i устанавливает ненужные пакеты?

    Вы про транзитивные зависимости что-нибудь слышали?
    А конкретно у вас транзитивно устанавливается node-sass, который написан на C++ , и мало ли что там ему нужно для сборки.

    При установке через npm install нативные пакеты автоматически компилируются. Многие для этого используют node-gyp, хотя в этой роли можно использовать в общем-то любую сборочную систему.

    Вам бы сначала выяснить с помощью npm list --depth=10, кто к вам притащил node-sass, т.к. он вроде задиприкейчен уже.
    Ответ написан
    2 комментария