web-dev-qa-db-ja.com

Laravel:ブレードビューの未定義の変数

これは AdminController.php

<?php

namespace App\Http\Controllers;

use Response;

use Illuminate\Support\Facades\DB;
use App\Caption;
use App\Image;
use App\Http\Controllers\Controller;

class AdminController extends Controller
{
    public function admin() {
        $images = Image::paginate();

        return view('admin',[ '$images' => $images]);
    }
}

そしてこれは admin.blade.php

@extends('template')

@section('title')
    Admin Page
@endsection

@section('header')
@endsection

@section('main')
    @if (Auth::check())
        @foreach ($images as $image)
            <p value='{{$image->id}}'>{{$image->content}}</p>
            <form action="image/{{$image->id}}/delete" method="post">
                <button type="submit">Delete caption</button>
            </form> 
            <form action="image/{{$image->id}}/approve" method="post">
                <button type="submit">Accept image</button>
            </form>
        @endforeach
    @else
        <p>Login first</p>
    @endif
@endsection

@section('footer')
@endsection

次のエラーが発生するのはなぜですか?

408148d5409ae6eebf768dc5721bd0d1d9af48af.php行9のErrorException:未定義の変数:画像(ビュー:/Users/sahandz/Documents/School/Singapore/CS3226/backend/resources/views/admin.blade.php)

$imagesは私のコントローラーで明確に定義されています。

3
Sahand

データをビューに渡すときに、変数名として$imagesを使用しました。これにより、ブレードは$$imagesという変数を作成します。

return view('admin',[ 'images' => $images]);

ビューは$imagesという変数を作成します

5
Joe

このメソッドを使用してデータを表示することもできます

 return view('admin',compact('images'));
0

このようにデータを渡してみてください。

$images = Image::paginate();
return view("admin")->with('images',$images);

基本的に、変数名に$を使用する必要はありません。

0
Rehan

コードは次のようになります

public function admin() {
    $images = Image::paginate();

    return view('admin',[ 'images' => $images]);

}

[ '$images' => $images]を使用する理由。それは問題。

0