Я создаю профильный раздел.
А show.blade.php — это часть редактирования профиля.
Но я не вижу show.blade.php.
Я получил следующую ошибку.
Вот мой код.
web.php
Route::resource('channels', 'ChannelController');
php artisan route:list в терминале. И это результат.

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');
Извините, я добавил. Пожалуйста, проверьте это.
вы должны включить файл класса модели в свой контроллер.






Я предполагаю (без вашего кода контроллера), что вы не импортировали модель 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'));
}
также добавьте код контроллера.