• Как научиться понимать документацию? На каком языке ее читать?

    alvvi
    @alvvi
    export default apathy;
    На начальном уровне нет ничего плохого в том, чтобы смотреть гайды. Если мне нужно применить новую технологию с упором на практику - я частенько ищу видео по ней на ютубе. Но если вы долго будете работать с тем же Laravel вы поймете, что документация - это намного быстрее и проще поиска видео, особенно когда вам нужен только референс или маленький кусок кода с примером. Проблем с примерами лично у меня не возникало, большинство API-шек фреймворка мне казались понятными сразу, а базовые примеры чтоб вспомнить как миграцию написать к примеру в доке вроде есть в достаточном кол-ве.

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

    Гуру на этом сайте упрекают людей в том, что они не читают документацию

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

    Вы, кстати, можете попробовать привести конкретные примеры того, где вам не хватило кода или были непоятные термины.
    Ответ написан
    Комментировать
  • Как спрятать "p", если в соседнем div присутствует ссылка с определенным классом?

    alvvi
    @alvvi
    export default apathy;
    let page = document.querySelector('.ays_quiz_results_page')
    let link = page.querySelector('.ays_score_message .calss_dalee')
    if (link) {
      page.querySelector('ays_restart_button_p').style.display = 'none'
    }
    Ответ написан
  • Почему постфиксный и префиксный инкременты выдают одно и то же значение?

    alvvi
    @alvvi
    export default apathy;
    Не понятно, почему вы ожидаете именно разное поведение. Один оператор отличается от другого только возвращаемым значением. Возвращаемое значение в последнем выражении цикла for не влияет на выполнение цикла. Никакой дополнительной магии в данном цикле в JS нет.
    Ответ написан
    3 комментария
  • Как реализовать шорткоды как в WordPress на Laravel 8.0?

    alvvi
    @alvvi
    export default apathy;
    Ответ написан
    Комментировать
  • Почему в конструкторе super вызывается с неочевидным контекстом?

    alvvi
    @alvvi
    export default apathy;
    Bar [[Prototype => Foo]] так обозначу объект которому вы не дали название, создающийся через new Bar();

    1. При первом вызове print в конструкторе Foo:
    - this ссылается на объект Bar [[Prototype => Foo]]
    - при вызове this.print() соотвественно идет поиск метода print в этом объекте
    - до прототипа мы не доходим, поскольку метод есть в объекте Bar и он уже определен даже до окончания вызова construct(!), вызываем метод
    - вызов super() еще не закончился, this.id установлен со значением 'foo' в строке выше до вызова метода print(), соотвественно на выходе получаем: 'bar foo'

    2. Вызов super() закончился. В свойство this.id нашего объекта записываем значение 'bar' в следующей строке.
    - Вызваем print в конструкторе Bar
    - JS ищет метод в объетке Bar [[Prototype => Foo]], опять находит его в самом объекте, до прототипа не доходим
    - На выходе получаем: 'bar bar'

    3. Последний вызов самое легкое. super.print() это то же самое что bar.prototype.print(). Систему поиска методов в объекте обходим, напрямую вызываем метод прототипа
    - this.id объекта установили на этапе 2, его последнее значение 'bar'
    - напоминаю, вызваем именно метод из прототипа, получаем 'foo bar'

    На самом деле все довольно прямолинейно конкретно в этом примере, если понимать протоипное наследование и то, что синтаксис классов лишь синтаксический сахар скрывающий функции-конструкторы с установкой прототипов.

    Подробнее почитать тут: https://learn.javascript.ru/prototypes
    Про особенности super: https://learn.javascript.ru/class-inheritance
    Ответ написан
  • Laravel-mix. Возможна ли раздельная сборка ресурсов для фронта и админки?

    alvvi
    @alvvi
    export default apathy;
    Вот такой есть солюшн с изменением publicPath, соответсвенно в разных путях будут лежать разные манифесты.
    https://github.com/JeffreyWay/laravel-mix/issues/1...
    Ответ написан
    Комментировать
  • Как вызвать функцию из одного JS файла в другом?

    alvvi
    @alvvi
    export default apathy;
    // index.js
    import { commandA } from 'commandA.js';
    import { commandB } from 'commandB.js';
    
    commandA();
    commandB();
    
    // commandA.js
    export function commandA() {}
    
    // ...
    Ответ написан
    Комментировать
  • Указание переменных через window?

    alvvi
    @alvvi
    export default apathy;
    Вызовы типа
    window.property = 'string'
    window.function = () => 'hey there'

    это по сути объявление глобальных переменных, которые будут доступны всем скриптам. Используется на практике в случае, где данные операции/свойства необходимо объявить на сервере.

    Например, таким образом можно записать в объект window свойство с каким-нибудь JSON-конфигом из PHP или другого серверного языка или просто передать информацию из серверного языка в качестве переменной.

    Использовать такой подход для объявления переменных в остальных случаях крайне не рекомендуется. В данном случае преподователь вам дает скорее вредный нежели полезный пример, подобный код можно написать без глобальных переменных/свойств глобального объекта.
    Ответ написан
    Комментировать
  • Как реализовать сохранение данных при помощи паттерна фабричный метод?

    alvvi
    @alvvi
    export default apathy;
    Laravel тут немного не при чем. Паттерн то можно где угодно применить.

    abstract class Presister
    {
        abstract public function factoryMethod(): Post;
    
        public function save(): void
        {
            $post = $this->factoryMethod();
            // сюда логику сохранения
            $post->save();
        }
    }
    
    class FancyPostPresister extends Presister
    {
        public function factoryMethod(): Post
        {
            return new FancyPost();
        }
    }
    
    class RegularPostPresister extends Presister
    {
        public function factoryMethod(): Post
        {
            return new RegularPost();
        }
    }
    
    interface Post
    {
        public function save(): void;
    }


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

    alvvi
    @alvvi
    export default apathy;
    Видимо не до конца настроили библиотеку ссылку на которую дали. В целом nginx тут не при чем скорее всего, копайте в сторону того как бэк (laravel) хэндлит запросы которые отсылает браузер для кросс-домена.
    Ответ написан
    Комментировать
  • Как передать фото на сервер с использованием api?

    alvvi
    @alvvi
    export default apathy;
    Но валидацию на сервере фото все равно не проходит. Еще я пробовал вместо FormData использовать:

    А почему вместо? И то и другое нужно.

    Правильный запрос:
    let formData = new FormData();
    formData.append('image', file);
    axios.post('http://127.0.0.1:8000/api/post',
        formData, {
          headers: {
            'Content-Type': 'multipart/form-data'
          }
        }
     );


    На бэке:

    if ($request->hasFile('image')) {
      $file = $request->file('image');
    }


    Ну валидация тоже должна работать, будь то правило image или file.
    Ответ написан
    5 комментариев
  • Laravel на хостинг, ошибка 500 или Манифест?

    alvvi
    @alvvi
    export default apathy;
    Стандартная ошибка при несобранном фронтенде.
    npm install
    npm run production

    если же все собрано, но ошибка осталась ищем сам файл манифеста, смотрим почему лара не видит его: может быть что прав не хватает.
    Ответ написан
  • Почему виснет сайт на итерации массива из бд?

    alvvi
    @alvvi
    export default apathy;
    Если вы используете ту же раметку, что написали здесь - то у вас просто не закрыт и верстка едет из-за этого скорее всего.
    Ответ написан
  • Как в библиотеке select2 сделать фильтр для поля поиска?

    alvvi
    @alvvi
    export default apathy;
    Функцию поиска можно кастомизировать: https://select2.org/searching
    Думаю написать функцию которая исключает из строки часть за скобкой не составит труда.

    Для референса, вот https://github.com/select2/select2/blob/develop/sr... тут можно найти дефолтную функцию matcher.
    Ответ написан
    Комментировать
  • Как вывести элемент массива у которого id соответствует дата атрибуту кнопки?

    alvvi
    @alvvi
    export default apathy;
    function watchAboutProduct(){
      let id1 = $(this).attr('product-id');
      let product = breadProduct.find(product => product["id"] === id1);
    }

    А лучше breadProduct превратить в объект в котором ключи будут id-шниками. Если продуктов ожидается много и искать придется часто. Тогда поиск упростится до breadProduct[id1].
    Ответ написан
    1 комментарий
  • Как сделать дополнительные настройки для slug в Laravel?

    alvvi
    @alvvi
    export default apathy;
    В конфиге есть поле "method", в котором можно определить свой Calalble для генрации слага. Соотвественно вписав туда свой метод генерация будет полностью в ваших руках.

    Сигнатуру смотреть тут: https://github.com/cviebrock/eloquent-sluggable#method
    Дефолт бибилиотека у плагина: https://github.com/cocur/slugify , можно расширить ее метод. А можете даже пулл реквест в саму библиотеку сделать :)

    Так же можно совсем переопределить движок библиотеки, про это инфа тут: https://github.com/cviebrock/eloquent-sluggable#ex...

    Как хэндлить конкретно Казахские символы - тут уж на ваше усмотрение. Можете посмотреть как это делает стандартный Str::slug(). На мой взгляд это уже немного другая тема.
    Ответ написан
    Комментировать
  • Как убрать из кэша часть кода php?

    alvvi
    @alvvi
    export default apathy;
    По сути ничего не мешает вам передалать этот код в JS.
    Делаете POST из JS, в <?php echo $views; ?> ставите плейсхолдер, помечаете каким-нибудь селктором. После того как POST отрабатывает вставляете туда нужное вам значение.

    Отдельный роут в WP который будет отдавать нужные вам данные можно делать через WP REST API или ajax-экшены.
    Ответ написан
    Комментировать
  • Задачка по js с обьектами,поможете?

    alvvi
    @alvvi
    export default apathy;
    function restoreNames(users) {
      users.forEach(user => {
          if (!user.firstName) {
            user.firstName = user.fullName.split(" ")[0];  
          }
      })
    }
    Ответ написан
    1 комментарий
  • Изменение функции при определенном брейкпоинте?

    alvvi
    @alvvi
    export default apathy;
    При значит при нем и только при нем?
    Довольно легко
    $(document).ready(function(){
      $('.scrollspy').scrollSpy({scrollOffset: window.innerWidth === 768 ? 150 : 100});
    });
    Ответ написан
  • Что такое встроенные "классы" в прототипном ООП JavaScript?

    alvvi
    @alvvi
    export default apathy;
    Конструкторы о которых говорится в учебнике можно получить очень просто:
    console.log(Object);
    Только вот увидите вы следующее:
    // ƒ Object() { [native code] }
    По сути встроенные классы - обычные функции-конструкторы, просто выполняются нативным кодом браузера + у них определны все необходимые методы в prototype. Про это как раз в учебнике и написано. Стоит прочитать там же про прототипное наследование, чтобы сложилась более полная картина.
    Ответ написан
    Комментировать