• Как правильно написать скрипт удаления записи Ajax?

    OlegGazmanov, Первое что приходит в голову, так это что у тебя не правильно написан JS код.

    $("body").on("click","#delete",function(e){

    Здесь ты кликаешь по записи, если записей на странице много, то ID на странице одинаковых не может быть много, соответственно у всех записей должен быть класс .delete

    Второй момент

    var id = $(this).attr('data-id');

    Скорее всего у каждой записи в цикле в атрибуте data-id ты присваиваешь реальный ID записи, например:

    $post->id

    Затем в переменную JS var id сохраняешь ID записи по которому кликнули, но потом:

    url: "{{route('deletePost',['id' => $post->id])}}",


    Передаешь не ID JS, который получил, а php $post->id, соответственно вопрос, у тебя на странице скрипт выводится и плодится тоже в цикле? тогда это не правильно, сюда нужно передавать ID элемента по которому кликнули, соответственно на JS (var id )

    Ну и здесь:

    success: function (response){
                            $("#deletePost").html(response.message);
                        }


    Здесь у тебя выведется инфа о том, что пост удален, а запись на странице останется, соответственно ее так-же нужно удалять на странице remove() через JS, это первое, что пришло в голову пересмотри сам скрипт

    в url лучше формируй прямую ссылку на удаление записи(строкой).
    Ответ написан
    Комментировать
  • Как получить категории и товары через бренд?

    alexvdv
    @alexvdv Автор вопроса
    $parts = Part::with('categories')->where('parts.brand_id','=', $brand->id)->get(); // Получил запчасти привязанные к бренду
    
            foreach($parts as $part)
            {
                foreach($part->categories as $category)
                {
                    // Привязываем категорию к бренду через pivot;
                }
            }


    Еще вопрос, когда например мне нужен замудренный каталог или что-то не стандартное, как я выше скинул + большое количество записей, я же могу например сделать сводную таблицу pivot_brаnd_categories и в фоновом режиме, использую php workers и менеджер очередей, раз в сутки например перебирать все категории и привязывать их к бренду, и по запросу просто отдавать нужные категории, без долгих обращений к БД . На сколько это хорошее решение?

    Вообщем, пока остановился на таком варианте, требуемые функции выполняет:

    public function partsByBrand($brand, $category)
        {
            if(isset($category) && !empty($category))
            {
                $parts = Part::where('brand_id', '=', $brand->id)->whereHas('categories', function ($query) use ($category)
                {
                    return $query->where('category_id', $category->id);
                })->get();
    
                return $parts;
            }
    
            $brand_categories = PartCategory::whereHas('parts', function($query) use ($brand)
            {
                return $query->whereHas('brand', function($query) use ($brand) {
                    return $query->where('brand_id', $brand->id);
                });
            })->orderBy('created_at', 'desc')->get();
    
            return $brand_categories;
        }
    Ответ написан
    Комментировать
  • Как правильно выгрузить локальный проект в приватный репозиторий?

    alexvdv
    @alexvdv Автор вопроса
    С причиной уже помогли разобраться, необходимо было добавить созданные ключи в ssh-agent:

    ssh-add ~/.ssh/id_rsa
    Ответ написан
    Комментировать
  • Лист производителей opencart 2?

    По идее сделать так:
    
    <div id="content" >
          <h1><?php echo $heading_title; ?></h1>
            <?php if ($categories) { ?>
              <div class="manufaklist">
                <?php foreach ($categories as $category) { ?>
                  <?php foreach (array_chunk($category['manufacturer'], 4) as $manufacturers) { ?>
                    <?php foreach ($manufacturers as $manufacturer) { ?>
                        <div class="item">
                            <a href="<?php echo $manufacturer['href']; ?>"><?php echo $manufacturer['name']; ?></a>
                        </div>
                    <?php } ?>
                  <?php } ?> 
                <?php } ?>
              </div>
              <?php } else { ?>
        </div>
    Ответ написан
  • Почему не работает делегирование JS?

    alexvdv
    @alexvdv Автор вопроса
    Нашел решение, необходимо сделать так:

    (() => {
    
    var foo = function() {
    
    
        var targetblock = document.getElementById('targetblock');
    
        targetblock.insertAdjacentHTML("beforeend", "<div id='lumos-container'><span id='lumos-close' style='position: absolute; right: 15px; top: 15px; padding: 10px 15px; background: #ededed; border-radius: 5px; color: #666;'>Закрыть</span><img src='' id='lumos-image'></div>");
        
        const lummContainer = document.getElementById('content'); // добавил контейнер
    
        const lumosContainer = document.getElementById('lumos-container');
        const lumosImage = document.getElementById('lumos-image');
        const elements = document.querySelectorAll('[data-action="lumos"]');
        const transitionSpeedInMilliseconds = 250;
    
        window.addEventListener('keyup', (event) => {
            if (event.key === 'Escape') {
                hideLumos();
            }
        });
    
        // elements.forEach((element) => {
        //     element.addEventListener('click', () => {
        //         handleElementClick(element);
        //     });
        // });
    
        lummContainer.onclick = (e) => {
       var target = e.target; // элемент который вызвал событие
       var action = target.dataset.action;
    
       if (action == 'lumos') {
            handleElementClick(target);
          }
    }
    
    
    
        lumosContainer.addEventListener('click', hideLumos);
    
        function handleElementClick(htmlElement) {
            updateLumosImage(getImageUrl(htmlElement));
            showLumos();
        }
    
        function getImageUrl(htmlElement) {
            return htmlElement.attributes['data-lumos-src'] === undefined
                ? htmlElement.attributes['src'].value
                : htmlElement.attributes['data-lumos-src'].value;
        }
    
        function updateLumosImage(imageUrl) {
            lumosImage.attributes['src'].value = imageUrl;
        }
    
        function showLumos() {
            if (!lumosContainerIsVisible()) {
                lumosContainer.classList.remove('hidden');
                lumosContainer.classList.add('visible');
            }
        }
    
        function hideLumos() {
            if (lumosContainerIsVisible()) {
                lumosContainer.classList.add('hidden');
    
                setTimeout(() => {
                    lumosContainer.classList.remove('visible');
                    lumosContainer.classList.remove('hidden');
                    lumosImage.attributes['src'].value = '';
                }, transitionSpeedInMilliseconds);
            }
        }
    
        function lumosContainerIsVisible() {
            return lumosContainer.classList.contains('visible');
        }
    
    };
    
    document.addEventListener("DOMContentLoaded", function(event) {
    foo();
    console.log("Загрузка DOMContentLoaded произошла!");
      });
       
        
    
    })();
    Ответ написан
    Комментировать
  • Почему не работает spl_autoload_register?

    alexvdv
    @alexvdv Автор вопроса
    Решение проблемы:

    Подключать
    require_once (ROOT.DS.'config'.DS.'config.php');
    после автозагрузки, потому что в config.php идет обращение к классу Config, который еще не загружен
    Ответ написан
    Комментировать