laravel - 在 null 上调用成员函数 store()
问题描述
我只是想知道为什么这对我的项目控制器不起作用,但在其他控制器上它起作用了。
项目控制器
public function store(Request $request, $id)
{
$categories = Category::all();
$userId = Auth::user()->id;
$item = new Item;
$item->store_id = $userId;
$item->name = $request->name;
$item->description = $request->description;
$item->unit_price = $request->unit_price;
$path = $request->image->store('images', 'public');
$item->picture = $path;
$item->category_id = $request->category_id;
$item->is_available = 1;
$item->is_archived = 0;
$item->save();
return redirect('/store/index')->with('status', 'Item successfully added!');
}
用于创建项目数据的 HTML 表单
<form method="post" action='{{ url("item/store/$stores->id") }}' enctype="mutlipart/form-data">
@csrf
<input placeholder="Item Name" type="text" name="name" value="{{ old('name') }}" required autocomplete="off">
<input placeholder="Item Description" type="text" name="description" value="{{ old('description') }}" required autocomplete="off">
<input placeholder="000.00" type="decimal" name="unit_price" value="{{ old('unit_price') }}" required autocomplete="off">
<input type="file" name="picture" required>
<label>Category</label>
<select class="form-control" name="category_id">
<option value selected disabled>Select Category</option>
@foreach ($categories as $category)
<option value="{{ $category->id }}">{{ $category->name }}</option>
@endforeach
</select>
<button type="submit" class="btn btn-warning">Add</button>
</form>
谢谢你的回答
解决方案
没有任何输入文件名为image
您的输入文件名为picture
.
如果您有一个文件字段,并且您尝试使用 进行检查$request->has(‘file’)
,它将始终返回FALSE
. 对于文件,有一个特定的方法:
$path = $request->image->store('images', 'public');
$item->picture = $path;
改成
$path = "no_image.png";
if ($request->hasFile('picture')) {
// $path = $request->picture->store('images', 'public');
$file = $request->picture;
$fName = time() . $file->getClientOriginalName();
$file->move('images', $fName );
$path = 'images/'.$fName;
}
$item->picture = $path;
推荐阅读
- linux - 删除台面使其他依赖项卸载
- ios - Foundation 的语言环境数据如何以及何时更新?
- c# - 给定 ExecuteNonQuery() 中对象的当前状态的无效操作
- optimization - 如何改造二次规划目标函数以适应matlab quadprog?
- node-red - 节点红色传感器输出:如何将华氏温度转换为摄氏温度
- php - 如何在 Laravel 上的另一个控制器的 $request 中添加一些东西
- sql - 什么 SQL 查询对此有用?(甲骨文)
- pandas - 无法执行 xlsx 文件
- java - 片段不会在活动中显示
- java - 如何将文本文件中的数据自动馈送到 MySQL 数据库中表的列中