也许是愚蠢的问题,但我在我的控制器中有这个显示图像上传的表单,并且在提交表单后应该返回到另一个视图。
在另一个视图中,我传递了所有图像的变量,但我仍然有
未定义的变量:图像
所以这就是我在控制器中的内容
// Display all Images
public function images()
{
$images = Images::paginate(3);
return view('images', compact('images'));
}
// Display image upload form
public function imageCreate()
{
return view('create');
}
// Submit and store image
public function imageStore( Request $request )
{
$image = new Images([
'caption' => $request['caption'],
'name' => $request['caption'],
'path' => 'uploads/noimage.png',
'hits' => 1,
'added_on' => '2017-08-08 9:00:00'
]);
$image->save();
return view('images', compact('images'));
}
在我看来images.blade.php
@foreach($images as $image)
<a href="{{ URL::to('image/'.$image->slug) }}"><img class="thumbnail block" src="{{ '../'.$image->path }}"></a>
@endforeach
那么,如果我在变量视图语句中发布变量,为什么变量是未定义的?
更新:视图返回中的dd($ image)
Images {#234 ▼
#primaryKey: "id"
#table: "images"
+timestamps: false
+fillable: array:6 [▶]
#connection: null
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: true
#attributes: array:7 [▼
"caption" => "dasdsadsad"
"name" => "dasdsadsad"
"path" => "uploads/noimage.png"
"hits" => 1
"added_on" => "2017-08-08 9:00:00"
"slug" => "dasdsadsad-7"
"id" => 144
]
#original: array:7 [▶]
#casts: []
#dates: []
#dateFormat: null
#appends: []
#events: []
#observables: []
#relations: []
#touches: []
#hidden: []
#visible: []
#guarded: array:1 [▶]
}
更新2:路线
Route::get('images', 'HomeController@images');
Route::get('create',['as'=>'create','uses'=>'HomeController@imageCreate']);
Route::post('create',['as'=>'store','uses'=>'HomeController@imageStore']);
答案 0 :(得分:2)
问题在于:
compact('images'));
但您的变量为$image
。所以改成它:
compact('image'));
然后再试一次。并且还更改foreach()
变量名称,如:
@foreach($image as $img)
...
$img->slug
$img->path
说明:
包含数据的变量是$image
,而从控制器传递的变量是compact('images'))
。那里有一个额外的s
。
答案 1 :(得分:0)
此行中的错误
return view('images', compact('images'));
您的变量名称为$image
,并且您传递了$images
用这个替换上面的
return view('images', compact('image'));
public function imageStore( Request $request )
{
$image = new Images([
'caption' => $request['caption'],
'name' => $request['caption'],
'path' => 'uploads/noimage.png',
'hits' => 1,
'added_on' => '2017-08-08 9:00:00'
]);
$imagePath='uploads/noimage.png';
$image->save();
return view('images')->with('image',$imagePath);
}
你得到这样的路径
<a href="{{ URL::to('image/'.$image->slug) }}">
<img class="thumbnail block" src="{{url('/'.$image)}}">
</a>
答案 2 :(得分:0)
Laravel假设您使用紧凑函数时,您传递的变量的名称与您在路径中传递的变量的名称相同。例如:
route::get('/customer/{customer_id}', 'CustomerController@show');
因此,在您的控制器中,当您使用视图返回数据时,您需要执行以下操作:
return view('customer', ['customer_name' => $customer->name]);
然后你应该能够在你的视图中引用它,如:
{{$customer_name}}