【发布时间】:2019-06-10 10:18:31
【问题描述】:
我正在尝试在 Laravel 5.8 中编写像 facebook 这样的社交媒体网站。
我在/home 和/profile 中有相同的朋友列表,但有两个不同的控制器(HomeController 和 ProfileController)。我不想为两个不同的控制器复制粘贴相同的代码。我该如何解决它,所以我只需要使用我的代码一次?
HomeController.php
public function index()
{
$friends = [];
$friendsID = Person_has_person::select('person2')->where('person1', Auth::user()->id)->get();
foreach ($friendsID as $friendID)
$friends[] = User::find($friendID->person2);
return view('home')->with('friends', $friends);
}
ProfileController.php
public function index()
{
$friends = [];
$friendsID = Person_has_person::select('person2')->where('person1', Auth::user()->id)->get();
foreach ($friendsID as $friendID)
$friends[] = User::find($friendID->person2);
return view('profile')->with('friends', $friends);
}
在我的 web.php 文件中,我有我的路线。
Route::get('/home', 'HomeController@index');
Route::get('/profile', 'ProfileController@index');
在我的模板中,我用它来向我的朋友们展示。
@if(count($friends) > 0)
@foreach($friends as $friend)
<ul>
<li>
<a href="/profile/{{$friend->id}}">{{$friend->firstname . ' ' . $friend->lastname}}</a>
<a class="text-danger"
href="/removeFriend/{{Auth::user()->id . '/' . $friend->id}}">[unfriend]</a>
</li>
</ul>
@endforeach
@else
<p>No friends available</p>
@endif
如您所见,我在两个不同的控制器中有相同的代码。这不是一个好的解决方案。你能给我一个建议,我该如何编码,所以我只有一次?
【问题讨论】:
标签: php laravel controller