LoginSignup
0
0

More than 3 years have passed since last update.

【Laravel】idごとの情報を表示する

Last updated at Posted at 2020-06-28

ユーザーのマイページのような、特定の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>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0