Failed to load resource: the server responded with a status of 404 (Not Found)

Имеется такой маршрут:

Route::get('/product/{id}',[MainController::class, 'product'])->name('product');

И такая разметка, вызывающая этот маршрут:

<a class="product_card_list_link_grid" href="{{route('product',['id'=> $product['id']])}}">
   <img class="product_card_list_image" src="assets/img/product/{{$product['image_product']}}" alt="{{$product['name_product']}}">
</a>

Метод контроллера, который отображает представление:

    public function product($id)
    {
        $array_select_product = Product::where('products.id', '=', $id)->join('distributors', 'distributors.id', '=', 'products.distributor_id')->join('genres', 'genres.id', '=', 'products.genre_id')->get(['products.*', 'distributors.image_distributor', 'genres.name_genre']);
        return view('product', [
            'array_select_product' => $array_select_product
        ]);
    }

И вроде все хорошо, страницу открывает, данные из бд выводит, но стили, картинки, скрипты, в общем все ресурсы не загружаются. При этом если изменить маршрут на такой:

Route::get('/{id}',[MainController::class, 'product'])->name('product');

А вызывать его так:

<a class="product_card_list_link_grid" href="/$product['id']">

То все отлично работает. Подскажите пожалуйста в чем проблема и как мне ее исправить. А так же если есть другие ошибки укажите на них.


Ответы (2 шт):

Автор решения: Cr1ppi

В общем, я нашел решение своей проблемы, нужно было ссылки на ресурсы писать так:

<img class="logo_image" src="{{URL::asset('assets/img/joystick_game_3819.ico')}}" alt="Logo">

А я писал так:

<img class="logo_image" src="assets/img/joystick_game_3819.ico" alt="Logo">

Это относится ко всем подключаемым ресурсам.

→ Ссылка
Автор решения: Raz Galstyan

Не ответ на вопрос. Но хотел бы дать совет про реализацию кода который касается запросов к базе данных, и не только.

  1. Зачем использовать join ? Если в laravel есть возможность отношений (relationship).
  2. Работать напрямую с базой данных в контроллерах очень плохой пример кода.

Код надо делиь как минимум на 3 части.

  1. В контроллерах нужно оставить только бизнес логику приложения.
  2. Для работы с базой данных, из хороших подходов можно взять например repository. Вот пример для реализации кода с помощю репозиториев. Можете погуглить, там найдете все что нужно.
  3. Для остальных монипуляций кода можно использовать сервисы. Тоесть та логика кода, который не относиться к базе данных и к бизнес логике приложения.
  4. Всегда делите код на мелкие части. Что бы потом можно было легче разобрать код. И можно было повторно использовать код там где этому будет нужда.
→ Ссылка