質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

1079閲覧

本番環境だとエラーが起きてしまう現象

Java_student

総合スコア87

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/12/06 03:33

編集2023/12/18 07:06

実現したいこと

HerokuにLaravelプロジェクトをアップしたのですが、ユーザー情報を変更(update)してshowページへ遷移させる際に、if文で毎回、エラーが起きる度に修正を入れていたのですが、@if($user->profile_image)がどうしても修正しようとしてもエラーが出続けます。
if文からprofile_imageがnullの場合はデフォルトで用意している表示をするようにしているのですが、nullのprofile_imageを読み込もうとしていますというようなエラーが発生します。

発生している問題・エラーメッセージ

Attempt to read property "profile_image" on null (View: /app/resources/views/users/show.blade.php)

該当のソースコード

@if($current_user == $user) <div class="mypage container"> <div class="row justify-content-center"> <div class="mypage-body"> <div class="mypage-header"> <div class="mypage-name"> @if($user->profile_image) <p><img src="{{ asset('storage/' . $user['profile_image']) }}" width="100" height="40" class="user-show-profile-img"></p> @else <p class="user-profile-header-no-img">No Image</p> @endif <div class="user-page-show-name"> <h2>{{ $user->name }}</h2> </div> </div> <div class="mypage-user-edit"> <a href="{{ route('user.edit', $user->id) }}" class="mypage-user-edit-btn btn btn-outline-success">設定</a> </div> </div> <div class="mypage-introducition"> <div class="mypage-introduction-title"> <h5>詳細</h5> </div> <div class="mypage-introduction-content"> <p>{!! nl2br(e($user->self_introduction)) !!}</p> </div> </div> </div> <div class="mypage-myposts"> <div class="mypage-mypost-title"> <h3>ポッドキャスト</h3> </div> @if($posts->isEmpty()) <p class="post-null">投稿はありません</p> @endif <div class="user-page-post"> @foreach($posts as $post) <div class='user-post-card'> <a href="/posts/{{$post['id']}}" class="user-post-a"> <p class="user-card-img"><img src="{{ asset('storage/' . $post['image']) }}"></p> <div class="user-card-body"> <div class="user-card-title"> <p>{{ $post['name'] }}</p> </div> <div class="user-card-name"> @if($user->profile_image) <p><img src="{{ asset('storage/' . $user['profile_image']) }}" width="100" height="40" class="user-show-profile-img"></p> @else <p class="user-profile-no-img">No Image</p> @endif <div class="user-page-profile-name"> <p>{{ $post->user->name }}</p> </div> </div> </div> </a> </div> @endforeach </div> </div> </div> </div> </div> @else

UserController

1public function edit(Request $request, $id) 2 { 3 $user = Auth::user(); 4 $current_user = Auth::user(); 5 return view('users.edit', compact('user')); 6 } 7public function update(Request $request, $id) 8 { 9 $user = Auth::user(); 10 $current_user = Auth::user(); 11 $posts = Post::where('user_id', '=', $current_user)->get(); 12 if($request->profile_image){ 13 $user->profile_image = $request->profile_image->store('profile_images'); 14 } 15 $user->name = $request->name; 16 $user->email = $request->email; 17 $user->self_introduction = $request->self_introduction; 18 if($request->password){ 19 $user->password = $request->password; 20 $user->save(); 21 //\Session::flash('flash_message', 'ユーザー情報を更新しました'); 22 return view('users.show', ['user' => $user, 'current_user'=> $current_user, 'posts' => $posts]); 23 } 24 $user->save(); 25 return view('users.show', ['user' => $user, 'current_user'=> $current_user, 'posts' => $posts]); 26 }

!追記!
・ルーティング

routes/web.php

1//ユーザー 2Auth::routes(); 3Route::get('/user/{id}/regulation', [App\Http\Controllers\UserController::class, 'regulation'])->name('user.regulation'); 4Route::post('/user/{id}/regulation', [App\Http\Controllers\UserController::class, 'regulation'])->name('user.regulation'); 5Route::get('/user/{id}/cancell_regulation', [App\Http\Controllers\UserController::class, 'cancell_regulation'])->name('user.cancell_regulation'); 6Route::post('/user/{id}/cancell_regulation', [App\Http\Controllers\UserController::class, 'cancell_regulation'])->name('user.cancell_regulation'); 7Route::resource('user', App\Http\Controllers\UserController::class);

試したこと

@if(!is_null($user->profile_image))に書き換えたのですが、それでもエラーが発生しました。
profile_imageを読み込まないのはifの記述が原因でしょうか?

補足情報(FW/ツールのバージョンなど)

PHP8
Laravel10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

@if($user->profile_image)

ここにエラー制御演算子は使えません。
PHP公式マニュアル エラー制御演算子

Attempt to read property "profile_image" on null (View: /app/resources/views/users/show.blade.php)

これは

nullのprofile_imageを読み込もうとしていますというようなエラー

というエラーじゃなく、$usernullなのに、そのプロパティを読もうとしているからエラーになっています。

if文からprofile_imageがnullの場合はデフォルトで用意している表示をするようにしている

そのチェックの前に$userが確実にオブジェクトがセットされるようにすべきなのか、empty($user->profile_image)の様にまとめてチェックしても良いのかは全体を見ないと判断できません。
__$usernullがセットされていること自体が、不適当だと思う...

投稿2023/12/06 03:56

編集2023/12/06 03:58
tezcello

総合スコア434

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Java_student

2023/12/06 13:31

実はこの質問の前に自身のページかを判断する@if($current_user == $user->id)の記述でもエラーが起きていたので@if($current_user == $user)にしたところエラーが消えたのですが、実は元から$userがnullの判断になっていた可能性が高いかもしれません。 $userが見つからない原因を探してみます。
Java_student

2023/12/06 13:44

ちなみにその際のエラーの内容は Attempt to read property "id" on null (View: /app/resources/views/users/show.blade.php) なので解答と同じ原因だと思います。
tezcello

2023/12/06 15:20

> @if($current_user == $user->id)の記述でもエラー > @if($current_user == $user)にしたところエラーが消えた PHPだけをやっていると型の概念を忘れそうですが、少なくてもオブジェクトなのか位は把握しておくことが必要なのでは? エラー制御演算子を使いたくなった時は、何か間違っている可能性が高いです。 そんな事をしなくても普通は上手く書けます、 そして、回答でも書いた様に使えない所に使用するのはナンセンスでしょう。
Java_student

2023/12/07 06:04

すみません。 まだ解決の足がかりが掴めていないので、質問させて頂きました。 直接showページへ飛ぶと、$userがしっかりと入っており、showメソッドはしっかりとオブジェクトが機能しているのかなと思ったのですが、 更新(update)からの遷移でエラーが発生するのでupdateメソッドで$userプロパティに更新したuserオブジェクトが入っていない状態でshowページに送っているという認識は正しいでしょうか?
tezcello

2023/12/07 10:16

> 更新(update)からの遷移で(略)showページに送っているという認識は正しいでしょうか? 「送っている」は「遷移している」の意味でしょうか? $userに必要なものをセットしていないのかもしれませんし、別のナニカが影響しているのかもしれません。 ソースも無しに、判断は出来ません。 (かと言って、ソース全部を提示されても困りますが)
Java_student

2023/12/07 14:02 編集

>「送っている」は「遷移している」の意味でしょうか? そうですね。 質問の箇所の所で言うと、UserControllerのupdateメソッドにある下記のコードの書き方を聞こうとさせて頂きました。 return view('users.show', ['user' => $user, 'current_user'=> $current_user, 'posts' => $posts])->with('ユーザー情報を更新しました');
tezcello

2023/12/07 14:23

そこにたどり着くまでに、$userなどにどの様に値をセットしているかは確認していますか? そして、viewに変数を渡す場合は、view()に第二引数で渡すか、with()を使うかのどちらかが多いのでは? https://laravel.com/docs/10.x/views#passing-data-to-views 「別の方法」って示しているみたいだけれど? 更に、with()の第一引数は変数名では?
Java_student

2023/12/08 05:32

withの箇所は修正させて頂きました。 第二引数でオブジェクトを渡しています。 現状、updateメソッドに原因がありそうだと思い、原因を探しています。 updateメソッドはshowメソッドの$userと違い、必ずupdateメソッドは自身のユーザー編集した場合にしか機能せず、showページも自身のユーザー情報のページにしか飛ばないので、これまでは$user = Auth::user()を入れていたのですが、これではオブジェクトが入っていない可能性があるという事なので、他に自身のユーザー情報を入れる事は可能なのでしょうか? また渡す前にif文で$userにオブジェクトが入っているか確認したほうがよろしいでしょうか? 質問に記載させて頂いてるUserControllerは読みやすいと思ってもらえるように、現在のupdateメソッドだけにさせて頂きます。
tezcello

2023/12/08 05:59

> $user = Auth::user()を入れていた > これではオブジェクトが入っていない可能性がある としたら、ログインされていない、セッションが切れている等も疑えるのでは? > $userにオブジェクトが入っているか確認 デバッグの一環(どんな時にオブジェクトがセットされていないかを調べる)としては有効かもしれません。 原因が判明したら改修するのが本筋ですが、オブジェクトでなければ正しい手順でやり直しさせるとかもナシではないかもしれません。 例えば > updateメソッドは自身のユーザー編集した場合にしか機能せず、showページも自身のユーザー情報のページにしか飛ばない という想定が機能していないとか? 変数名に統一性が無いので、update()メソッドにアクセスする為のページ生成時に、他ユーザのモノと同一視・混同・入れ違いなどが起きているとか?
Java_student

2023/12/11 02:32 編集

>としたら、ログインされていない、セッションが切れている等も疑えるのでは? $userのオブジェクトが入っていなさそうなのが、今の所、謎です。 updateメソッドでは$userの中の情報を変更したりするなどの影響で$userのオブジェクトが入っていなかったりするのでしょうか? !追記! ユーザー情報編集(edit)後にドメインをチェックすると /user/updateになるのですが、そこでエラーが発生するのですが、もしかしてeditメソッドの記述が悪いという可能性はありますでしょうか?
tezcello

2023/12/11 02:55

> updateメソッドでは$userの中の情報を変更したりするなどの影響で$userのオブジェクトが入っていなかったりするのでしょうか? $userの値をクリアするなどしない限り、そんな馬鹿な事は起きないと思います。 そもそも$userに何らかがセットされていなければ、「情報を変更したり」が出来るはずが無いのでは? 先にも書いた通り、僕はセッションが切れている等で、ログイン状態を保てていないとかが起きている気がしています。 $userがどんな値なのかをチェックしてみませんか? __期待しているオブジェクトではないのが、どんな手順のどんなタイミングかが判るかも > ユーザー情報編集(edit)後 それはどこでしょうか? UserController::edit()の中? 最後はusers.editビューを表示しているだけだから遷移があるとは思えないし?
Java_student

2023/12/11 04:06

>$userがどんな値なのかをチェックしてみませんか? 調べながらチェックをしばらく試みていたのですが、isempty,issetなどでチェックすることは出来ませんでした。 コントローラー側でチェックすることは可能なのでしょうか? @isset($user)で$userにオブジェクトが無かったら、何も表示しないように記述したのですが、変わらず同様のエラーが表示されました。 ここが混乱するところで、@issetは$userのオブジェクトは入っているという判定で通っているのでしょうか? ・エラー Attempt to read property "profile_image" on null (View: /app/resources/views/users/show.blade.php)
tezcello

2023/12/11 04:16

Laravelのデバッグでは dump() が使えるそうです。 それでどんな値が入っているのか調べてみては? __具体的な方法はお調べください $user = Auth::user(); の直後で nullなのでしたら、Authの使い方が間違っているか、ログインされていないかと推測できますよね?
Java_student

2023/12/11 05:28

現状、updateメソッド内では確認できていないのですが、updateメソッドにユーザーの変更データを送るeditメソッドの段階をedit.blade.phpで確認をしたところ、$userにオブジェクトが入っている様子があります。 updateはエラーが先行してしまい、なかなか表示されないのでもう少し表示されるように試行錯誤してみます。 ・editページで出た表示 object(App\Models\User)#1296 (32) { ["connection":protected]=> string(5) "mysql" ["table":protected]=> string(5) "users" ["primaryKey":protected]=> string(2) "id" ["keyType":protected]=> string(3) "int" ["incrementing"]=> bool(true) ["with":protected]=> array(0) { } ["withCount":protected]=> array(0) { } ["preventsLazyLoading"]=> bool(false) ["perPage":protected]=> int(15) ["exists"]=> bool(true) ["wasRecentlyCreated"]=> bool(false) ["escapeWhenCastingToString":protected]=> bool(false) ["attributes":protected]=> array(12) { ["id"]=> int(3) ["profile_image"]=> NULL ["name"]=> string(25) "テストアカウント" ["self_introduction"]=> NULL ["email"]=> string(19) "test1@example.com" ["email_verified_at"]=> NULL ["password"]=> string(60) "$2y$10$xA8mPPVHJWE9liXwHsRAduApqWMIQWvN2VUdud50.JHKZlYiOUe5W" ["is_use"]=> int(0) ["admin"]=> int(1) ["remember_token"]=> NULL ["created_at"]=> string(19) "2023-12-04 11:24:50" ["updated_at"]=> string(19) "2023-12-04 11:24:50" } ["original":protected]=> array(12) { ["id"]=> int(3) ["profile_image"]=> NULL ["name"]=> string(25) "テストアカウント" ["self_introduction"]=> NULL ["email"]=> string(19) "test1@example.com" ["email_verified_at"]=> NULL ["password"]=> string(60) "$2y$10$xA8mPPVHJWE9liXwHsRAduApqWMIQWvN2VUdud50.JHKZlYiOUe5W" ["is_use"]=> int(0) ["admin"]=> int(1) ["remember_token"]=> NULL ["created_at"]=> string(19) "2023-12-04 11:24:50" ["updated_at"]=> string(19) "2023-12-04 11:24:50" } ["changes":protected]=> array(0) { } ["casts":protected]=> array(4) { ["email_verified_at"]=> string(8) "datetime" ["password"]=> string(6) "hashed" ["is_use"]=> string(7) "boolean" ["admin"]=> string(7) "boolean" } ["classCastCache":protected]=> array(0) { } ["attributeCastCache":protected]=> array(0) { } ["dateFormat":protected]=> NULL ["appends":protected]=> array(0) { } ["dispatchesEvents":protected]=> array(0) { } ["observables":protected]=> array(0) { } ["relations":protected]=> array(0) { } ["touches":protected]=> array(0) { } ["timestamps"]=> bool(true) ["usesUniqueIds"]=> bool(false) ["hidden":protected]=> array(2) { [0]=> string(8) "password" [1]=> string(14) "remember_token" } ["visible":protected]=> array(0) { } ["fillable":protected]=> array(5) { [0]=> string(4) "name" [1]=> string(5) "email" [2]=> string(8) "password" [3]=> string(6) "is_use" [4]=> string(5) "admin" } ["guarded":protected]=> array(1) { [0]=> string(1) "*" } ["rememberTokenName":protected]=> string(14) "remember_token" ["accessToken":protected]=> NULL
tezcello

2023/12/11 06:45

dump()だけではなく、dd()とかもある様です。 dd()はその場でストップするらしいので、コントローラ内にも書けるし、Laravel本体等に邪魔されずに調べられるのでは? Laravelでのデバッグ方法についても調べてみる事をお勧めします。
Java_student

2023/12/12 03:25 編集

すみません。 デバッグで表示が中々できないので、 一度、updateメソッドのupdate完了後の遷移をredirect('/')にしてトップページに遷移させた場合にどうなるかを試してみたのですが、user/showページのprofile_imageがnullに関するエラーが続きました。 遷移先に '/' を設定してもshowページに遷移されているという認識で合っていますでしょうか? トップページは基本的に何もオブジェクトを渡す必要がないページにしているので、オブジェクトがうまく渡せているかを確認しやすいので、試してみました。
tezcello

2023/12/12 04:26

遷移してしまうと、Laravelが働いてしまうので表示したいモノが隠されてしまうのでは? dd($user); ではダメでしたか?
Java_student

2023/12/13 03:07

updateメソッドで$user = Auth::user();のすぐ下に記述し、本番環境で試してみたのですが、同様にAttempt to read property "profile_image" on null (View: /app/resources/views/users/show.blade.php)と表示されました。 これは処理が止まっていないのでしょうか。 それともupdateメソッド前のeditメソッドまたはeditページに問題があるのでしょうか? editページも追記させて頂いた方が分かりやすいでしょうか?
tezcello

2023/12/13 03:15

dd()と同じ事だと思うのですが、 $user = Auth::user(); var_dump($user); exit; の様にしてみては? それでも上手く行かない時は、 error_log(var_export($user,1), 3, '/tmp/my-errors.log'); とでもして、ログに書きだすとか。 __出力先は適宜調整してください
Java_student

2023/12/13 04:05

var_dump($user); exit; に関しては先程と同様のエラーが出てしまい、確認できませんでした。 error_logに関しましてはheroku環境のエラーログの出力先がまだ分かっていないので、herokuのエラーログ先の調べ方を調べています。 すみません。 なぜ本番環境では、遷移前にデバッグに関する記述をしているのに、遷移の処理まで進んでしまっているかは、まだ少し分かっていません。 ちなみにテスト環境では全てのデバッグ記述が機能しました。
tezcello

2023/12/13 04:32

> エラーログの出力先がまだ分かっていない 別に/tmp である必要は無く、ご自身の割り当てられたディレクトリに出せば良いのでは? __パーミッションにはご注意を
Java_student

2023/12/15 08:17

ディレクトリを調べたところ、php_errors.logがエラーログ先だと分かったのですが、開き方を調べているのですが、まだ分かっていません。 また任意のディレクトリを指定することは可能ですか?
tezcello

2023/12/15 08:20

error_log()に関しては、公式マニュアルをご覧ください。 > また任意のディレクトリを指定することは可能ですか? ディレクトリを指示するんではなく、フルパスで指示します。
Java_student

2023/12/18 07:05 編集

現在、下記のサイトを参考にしてerror_lohの使い方を調べて、下記のパスが出たのですが、これは /etc/opt/remi/php81をerror_logのフルパスに指定するのが正しいのでしょうか? 参考サイトURL https://qiita.com/4roro4/items/7d58d6a3a5c9c3463472 ec2-user:~/environment/**** (master) $ php -r "echo phpinfo();" | grep "php.ini" Configuration File (php.ini) Path => /etc/opt/remi/php81 Loaded Configuration File => /etc/opt/remi/php81/php.ini ec2-user:~/environment/**** (master) $ cat /etc/opt/remi/php81/php.ini | grep error_log ; server-specific log, STDERR, or a location specified by the error_log ;error_log = php_errors.log ;error_log = syslog ; to syslog. Only used when error_log is set to syslog. ; the message. Only used when error_log is set to syslog. !追記! ルーティングの問題の可能性はあるでしょうか? 以前、ルーティングの記述について指摘されたことがありまして、それが本番環境に影響しているのかもしれないと考えているのですが、質問を編集して、ルーティングを記載させて頂きます。
tezcello

2023/12/18 10:24

> 下記のパスが出た コメントアウトされているので、何もセットされていません(=デフォルトのまま)。 > /etc/opt/remi/php81をerror_logのフルパスに指定するのが正しいのでしょうか? それは設定ファイル(php.ini)の場所でしょ? 「何となく」ではなく、チャンと読まないと... そんな奥まったところじゃなく、ご自分のファイルのあるところに緩いパーミッションを設定したディレクトリを用意して、それを指定すれば良いのでは? __ディレクトリにはそれぞれ役目があるので __それを無視した様な使い方は避けるべきでしょう > ルーティングの問題の可能性はあるでしょうか? 先ずは、ひとつずつやりませんか?
Java_student

2023/12/20 05:56

すみません。 >ご自分のファイルのあるところに緩いパーミッションを設定したディレクトリを用意して、それを指定 まずプロジェクト下にerror_logというファイルを作成しました。 そして下記のサイトを調べて緩いパーミッションを設定しようと考えているのですが、それはユーザーに関する設定でしょうか、それともアクセス権に関する設定でしょうか。 参考サイト https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/077chmod.html
tezcello

2023/12/20 09:28

> それはユーザーに関する設定でしょうか、それともアクセス権に関する設定でしょうか。 どんなユーザーで書き込まれるのか分からないから緩いパーミッションにします。 どのユーザなのかが判明していたら、そのユーザーに対して適切なパーミッションを設定すれば良いのですから、緩くする必要はありません。
Java_student

2023/12/20 15:25

>どのユーザなのかが判明していたら、そのユーザーに対して適切なパーミッションを設定すれば良い サイトを参考に、コマンドを考えると、下記が適切でしょうか? chmod u=r error_log プロジェクト構成 プロジェクト -app -bootstrap ~ -error_log
tezcello

2023/12/20 18:42

ホントにどのユーザなのか解っていますか? Herokuは使っていないので断言は出来ませんが、Herokuを利用する時の質問者さんのユーザ名ではない可能性もありますよ? 僕なら、デバッグ期間のみの使用する事にして $ chmod 666 /path/to/error_log だと思います。
Java_student

2023/12/21 02:50

設定を行い、再度Herokumにデプロイしてエラーを確認したのですが、エラーログ用のファイルを確認できませんでした。 もう一度、やり直してみますが、viewに表示できるようにviewのファイルにエラーログを表示するかを検討してみます。
guest

0

$user->profile_imageという形でアクセスできるのはobjectのみですので、@if(!is_null($user->profile_image)) は $userがnullの場合にエラーとなります。
変数が存在しない場合でもエラーが起きないようにするには、下記のようなアプローチが必要になります。

  • 厳密なチェックを行う
@if ($user instanceof App\Models\User && $user->profile_image)

bladeの場合は @isset で記述できます。

@isset($user->profile_image)

そもそも話としてそのような設計なのでしょうか?
$id、$user と $current_user がどのような関係か、ソースコードからは全くわからない状態なので、設計から勘違いして実装しているところがありそうです。

自身のユーザーIDしか利用しないのであれば $idも$userも必要ありません。
$current_user = Auth::user(); のみで十分のはずです。他社のユーザーIDの編集も行う想定なのでしょうか?
また、ログインしていることが前提の画面なのであればmiddlewareによる制御を行うべきです。
edit() と update() で $id を引数にとっているのにも関わらず未使用ですし、コードから設計がどうなっているか全くわからないです。

現状ではエラー表示がなくとも意図しない不具合が発生している可能性が高いです。設計から見直しましょう。

投稿2023/12/07 14:59

Eggpan

総合スコア3257

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Java_student

2023/12/08 03:32 編集

今、$current_user = Auth::user()等に関して設計を見直しています。 @if($current_user == $user->id)にしていたのは自身と違うuserのshowページの場合に、違う表示をしたかったので、上記の分岐のさせ方をしようとしました。 字数制限でshowページの全てが書いていないですが、分岐としては下記を計画していました。 ・ログイン中に見る自身のページ(ユーザー情報編集ボタンを表示) ・ログイン中に見る自分以外のページ(フォローボタンの表示) ・ログイン外に見るページ(何も表示しない) 上記の3つに分けようと思い、おかしな分岐を行ってしまいました。
Eggpan

2023/12/08 04:34

コントローラで$userが取れているか検証していないので、Viewで全部やるなら最低限下記の分岐が必要かと思います @auth @isset($user->id) @if (Auth::id() === $user->id) 自身が指定された場合の表示 @else 他者が指定された場合の表示 @endif @else URLで指定したユーザーが見つからない場合の表示 @endisset @else ログインしてない場合の表示 @endauth ・コントローラで弾ける処理はないか (たとえば、URLで指定したユーザーがない場合はエラー表示にするなど) ・本当に1つのViewでやる必要があるか といった点も考えたほうが良いかと思います。
Java_student

2023/12/18 07:09

viewフォルダーにupdateファイルを作成して、user編集後(updateメソッドの遷移先)はそのページに表示させた方が良いのでしょうか?
Eggpan

2023/12/19 07:21

どういう動きをさせるかの設計の話なのであれば、好きにされたら良いかと思いますよ。 一般的な話でいうのであれば、Laravelでpostリクエストを処理した際にviewを表示するという処理は行わないです。 更新処理であれば、更新後は一覧画面か更新画面にリダイレクトするのが一般的です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問