ユーザーのマイページのような、特定のidの情報を表示する方法のメモ。
Route
web.php
Route::group(
['prefix' => 'contacts', 'middleware' => 'auth'],
function () {
Route::get('index', 'ContactFormController@index')->name('contacts.index');
Route::get('create', 'ContactFormController@create')->name('contacts.create');
Route::post('store', 'ContactFormController@store')->name('contacts.store');
Route::get('show/{id}', 'ContactFormController@show')->name('contacts.show');
Route::get('edit/{id}', 'ContactFormController@edit')->name('contacts.edit');
Route::post('update/{id}', 'ContactFormController@update')->name('contacts.update');
Route::post('destroy/{id}', 'ContactFormController@destroy')->name('contacts.destroy');
}
);
Controller
****Controller.php
use App\Service\CheckFormData;
public function show($id)
{
$contact = ContactForm::find($id);
//genderはapp/service/CheckFormData.phpを作りまとめて処理
$gender = CheckFormData::checkGender($contact);
return view('contacts/show', compact('contact', 'gender'));
}
CheckFormData.php
class CheckFormData
{
public static function checkGender($data)
{
if ($data->gender === 0) {
$gender = '男性';
} elseif ($data->gender === 1) {
$gender = '女性';
}
return $gender;
}
}
条件分岐する必要がある場合は、Controller内で処理させてその変数をcompactの引数に入れる。
View
show.blade.php
<div>
{{$contact->name}}
{{$gender}} //Controllerでcompactの引数にセットしているので変数がそのまま使える。
</div>
表示できてたらおk。
おまけ
indexページからshowに飛ばす時のボタン。
index.blade.php
<button onclick="location.href='{{route('*****.show',['id' => $*****->id])}}'">詳細</button>