Проблема маршрута: Контроллер классов не существует в Laravel 5.8

Я создаю профильный раздел. А show.blade.php — это часть редактирования профиля.

Но я не вижу show.blade.php.

Я получил следующую ошибку.

Проблема маршрута: Контроллер классов не существует в Laravel 5.8

Вот мой код.

web.php

Route::resource('channels', 'ChannelController');

php artisan route:list в терминале. И это результат. Проблема маршрута: Контроллер классов не существует в Laravel 5.8

app.blade.php, как только я нажму здесь, я смогу перейти к show.blade.php

<a class = "dropdown-item" href = "{{ route('channels.show', auth()->user()->channel->id) }}"> My Channel</a>

контроллер.php

<?php

namespace Laratube\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

КаналКонтроллер.php

    <?php

namespace Laratube\Http\Controllers;

use Illuminate\Http\Request;

class ChannelController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(Channel $channel)
    {
        return view('channels.show', compact('channel'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

show.blade.php

@extends('layouts.app')

@section('content')
<div class = "container">
    <div class = "row justify-content-center">
        <div class = "col-md-8">
            <div class = "card">
                <div class = "card-header">
                    {{ $channel->name }}
                </div>

                <div class = "card-body">
                    <form id = "update-channel-form" action = "{{ route('channels.update', $channel->id) }}" method = "POST" enctype = "multipart/form-data">
                        @csrf

                        @method('PATCh')
                        <div class = "form-group">   
                            <label for = "name" class = "form-control-label">
                                Name
                            </label>
                            <input id = "name" name = "name" value = "{{ $channel->name }}" type = "text" class = "form-control">
                        </div>
                        <div class = "form-group">
                            <label for = "description" class = "form-control-label">
                                Description
                            </label>
                            <textarea name = "description" id = "description" cols = "3" rows = "3" class = "form-control">
                                {{ $channel->description }}
                            </textarea>
                        </div>

                        <button class = "btn btn-info" type = "submit">Update</button>

                    </form>

                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Я пробовал следующие вещи.

    php artisan cache:clear

    composer update

    composer dump-autoload

    php artisan db:seed

Но все же это не работает.

Я рад, если кто-то помогает мне.

Кажется, у меня что-то не так с маршрутом. Этот маршрут также не работал.

Route::resource('channels', 'ChannelController')->name('channels.show');

также добавьте код контроллера.

Amit Rajput 18.07.2019 07:24

Извините, я добавил. Пожалуйста, проверьте это.

Yohei Umezu 18.07.2019 07:27

вы должны включить файл класса модели в свой контроллер.

Amit Rajput 18.07.2019 07:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
1 024
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я предполагаю (без вашего кода контроллера), что вы не импортировали модель Channel. Сообщение совершенно ясное, он пытается получить класс модели из своего текущего каталога: Laratube\Http\Controllers\.

Вы не импортировали модель канала в свой контроллер. Добавьте строку в верхний раздел использовать вашего контроллера.

use Laratube\Channel;
    //In Your Controller
    <?php

    namespace Laratube\Http\Controllers;

    use Laratube\Channel;
    use Illuminate\Http\Request;

    class ChannelController extends Controller
    {


//in show function
public function show()
    {
        $channel = Channel::get();
        return view('channels.show', compact('channel'));
    }

Другие вопросы по теме