

使ってるバージョン laravel8  
**問題**  
Undefined variable $snows

**目標**  
$snows関数を定義したい

**問題点**  
laravelの初期ログイン画面のdashboard.blade.phpに自作のbaladeを貼り付けた。  
dashboard.blade.phpに$snowsがルーティングされてないことは明白である。  
そのため、snowsの行を'/dashboard'に変更するとnavigation.blade.phpにエラーが出る。  
dashboard.phpに$dashborardと$snowsを成立させる必要がある。  
web.phpにどう記載すればいいでしょか。

web.php

[code]

    Route::get('/dashboard', function () {
        return view('dashboard');
    })->middleware(['auth'])->name('dashboard');
    
    require __DIR__.'/auth.php';
    
    // 投稿一覧表を表示
    // Route::get('/', 'SnowController@showList')->name('snows');
    // Route::get('/list', 'SnowController@showList');
    Route::get('/', 'SnowController@showDash')->name('snows');
    // Route::get('/dashboard', function () {return view('dashboard');})->middleware(['auth'])->name('snows');
    
    // 投稿画面表示
    Route::get('/snow/create', 'SnowController@showCreate')->name('create');
    // 投稿登録
    Route::post('/snow/store', 'SnowController@store')->name('store');
    
    // 投稿詳細を表示
    Route::get('/snow/{id}', 'SnowController@showDetail')->name('show');
    
    // 投稿編集を表示
    Route::get('/snow/edit/{id}', 'SnowController@showEdit')->name('edit');
    Route::post('/snow/update', 'SnowController@UpdateSnow')->name('update');
    
    // 投稿削除
    Route::post('/snow/delete/{id}', 'SnowController@exeDelete')->name('delete');
    
    
[/code]

dashboard.blade.php（未定義部分）

[code]

     @foreach($snows as $snow)
            <tr>
              <td>{{ $snow->id }}</td>
              <td><a href="/snow/{{ $snow->id }}">{{ $snow->title }}</a></td>
              <td>{{ $snow->created_at }}</td>
              <td><button type="button" class="btnbtn-primary" onclick="location.href='/snow/edit/{{ $snow->id }}'">編集</button></td>
              <form method="POST" action="{{ route('delete', $snow->id) }}" onSubmit="return checkDelete()">
                @csrf
                <td><button type="submit" class="btnbtn-primary" onclick=>削除</button></td>
            </tr>
     @endforeach
    
    
[/code]

コントローラー

[code]

    //投稿一覧
        public function showDash() {
            $snows = $this->snow->findAllSnows();
            
            return view('dashboard',['snows' => $snows]);
        }
    
[/code]


CC BY-SA 4.0
2022-07-12T02:45:12.850
89924
2022-07-18T01:13:48.450
51050
question
php laravel
Undefined variable $snowsを解決したい


コントローラーの `view('dashboard',['snows' => $snows]);` より表示される場合 `$shows`
が存在するので問題ないけど _web.php_ の `view('dashboard');`
からだと存在しないのでエラーになる、これを解消したい、てことで良いんですよね？

最終的に何をしたいのか解らないのですが、このパターンのエラーであれば

PHP: 新機能 - Manual / Null 合体演算子  
<https://www.php.net/manual/ja/migration70.new-features.php#migration70.new-
features.null-coalesce-op>  
これを使えば未定義の値を特定の別の値に置き換えられるので、

修正前

[code]

    @foreach($snows as $snow)
    
[/code]

修正後

[code]

    @foreach($snows ?? [] as $snow)
    
[/code]

例えばこんなふうなやり方でエラーは解消できると思います。


CC BY-SA 4.0
2022-07-18T01:13:48.450
90054
2022-07-18T01:13:48.450
53573
89924
answer