Личная страница пользователя
В файле web.php у нас есть маршрут, который направляет на личную страницу зарегистрированного пользователя:
Route::get('/profiles/{user}', 'ProfilesController@show')->name('profile');
Создадим контроллер ProfilesController, который будет содержать всего лишь один метод отображения профиля пользователя со списком размещенных пользователем тем.
class ProfilesController extends Controller
{
public function show(User $user)
{
return view('profiles.show', [
'profileUser' => $user,
'threads' => $user->threads()->paginate(30)
]);
}
}
Для отображения страницы создадим файл вида resources/views/profiles/show.blade.php. Разместим следующую разметку в этом файле:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="page-header">
<h1>
{{ $profileUser->name }}
<small>Профиль был создан {{ $profileUser->created_at->format('d-m-Y') }} в {{ $profileUser->created_at->format('H:i:s') }}</small>
</h1>
</div>
@foreach ($threads as $thread)
<div class="panel panel-default">
<div class="panel-heading">
<div class="level">
<span class="flex">
<a href="{{ route('profile', $thread->creator) }}">{{ $thread->creator->name }}</a> опубликовал:
<a href="{{ $thread->path() }}">{{ $thread->title }}</a>
</span>
<span>{{ $thread->created_at->format('d-m-Y | H:i:s') }}</span>
</div>
</div>
<div class="panel-body">
{{ $thread->body }}
</div>
</div>
@endforeach
{{ $threads->links() }}
</div>
</div>
</div>
@endsection
При регистрации или аутентификации пользователя будем направлять пользователя на его личную страницу. За регистрацию и аутентификацию отвечают два контроллера из папки app/Http/Controllers/Auth: RegisterController и LoginController. В каждом из них нужно разместить следующую функцию:
protected function redirectTo()
{
return route('profile', auth()->user()->name);
}