Как вернуть представление с динамическим полем в Laravel 6 - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть HTML-страница с именем profile.blade.php, которая содержит якорный тег:

<a href="{{ route('profile', $user->id) }}">{{$user->name}}</a>

У меня есть такой маршрут:

Route::get('/profile/{id}', 'ProfilesController@index')->name('profile');

У меня есть ProfilesControllerв котором метод индекса возвращает пользователя, которому принадлежит профиль:

public function index()
{
   $userId = //somehow get the data sent from the anchor tag

   $user = $this->usersService->getProfileOwner($userId);

   return view("profile", [
      'user' => $user ?? []
   ]);
}

Как я могу изменить этот код, например, когда пользователь с идентификатором 1 посещает профиль пользователя с идентификатором 2, функция индексавозвращает данные пользователя 2 в шаблон blade?

Ответы [ 3 ]

0 голосов
/ 23 сентября 2019

Класс автоматического связывания Laravel с методом

use App\User;

public function index(User $user)
{
   return view("profile",compact('user'));
}

0 голосов
/ 23 сентября 2019

Как и ответы выше, я бы посоветовал вам использовать привязку модели.

Но в вашем коде вы можете сделать:

public function index($id)
{
    $user = $this->usersService->getProfileOwner($id);

    return view("profile", [
       'user' => $user ?? []
    ]);
}

Если $ id всегда int,Вы также можете напечатать подсказку.

0 голосов
/ 22 сентября 2019

Laravel поставляется с удобной привязкой модели маршрута , так что вы можете использовать Dependency Injection для непосредственного получения модели по URL-адресу маршрута

public function index(User $user)
{
   return view("profile", [
      'user' => $user ?? []
   ]);
}
<a href="{{ route('profile', ['user' => $user]) }}">{{$user->name}}</a>
Route::get('/profile/{user}', 'ProfilesController@index')->name('profile');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...