我需要一些真正的快速帮助,它与我在ProductController @ store中的存储方法有关。基本上,我有一个表格createProduct.blade.php,该表格允许用户添加产品,名称,图像,描述和链接。然后,ProductController @ store拾取表单输入数据并将其保存在数据库中。现在我的问题是数据没有保存在数据库中,视图也没有返回到/ pr,即我的productManagement.blade.php页面,并且在运行代码时没有显示错误消息。单击提交后,当前输出只是一个空白表格。我希望输出是存储在数据库中的表单输入数据,并将用户重定向到/ pr。我已经包含了一些代码,我认为这应该引起这个严重的头痛问题。
ProductController @ store
boot
createProduct.blade.php
public function store(Request $request)
{
$this->validate($request, [
'input_img' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
if ($request->hasFile('input_img')) {
$image = $request->file('input_img');
$name = time().'.'.$image->getClientOriginalExtension();
$destinationPath = public_path('/images');
$image->move($destinationPath, $name);
$this->save();
}
$data = request()->validate([
'productName' => 'required',
'productLink' => 'required',
'productPrice' => 'required',
'productDescription' => 'required',
]);
$product = new Product([
'productName' => $request->get('productName'),
'productLink' => $request->get('productLink'),
'productPrice' => $request->get('productPrice'),
'productDescription' => $request->get('productDescription')
]);
$product->save();
return redirect('/pr');
}
web.php
<form action="/storeProduct" method="post">
@csrf
<label for="productName">Product Name:</label><br>
<input type="text" id="productName" name="productName" autocomplete="off" value="{{
old('productName') }}"><br>
@error('productName') <p style="color: red">{{ $message }}</p> @enderror
<label for="productImage">Product Image:</label><br>
<input type="file" id="productImage" name="productImage" autocomplete="off" value="{{
old('productImage') }}"><br>
@error('productImage') <p style="color: red">{{ $message }}</p> @enderror
<label for="productLink">Product Link:</label><br>
<input type="text" id="productLink" name="productLink" autocomplete="off" value="{{
old('productLink') }}"><br>
@error('productLink') <p style="color: red">{{ $message }}</p> @enderror
<label for="productPrice">Product Price:</label><br>
<input type="decimal" id="productPrice" name="productPrice" autocomplete="off" value="{{
old('productPrice') }}"><br>
@error('productPrice') <p style="color: red">{{ $message }}</p> @enderror
<label for="productDescription">Product Description:</label><br>
<input type="text" id="productDescription" name="productDescription" autocomplete="off" value="
{{ old('productDescription') }}"><br>
@error('productDescription') <p style="color: red">{{ $message }}</p>
@enderror
<input type="submit" value="Submit">
</form>
是的,我不知道为什么这不起作用。我从另一个有41个upvotes问题的堆栈溢出问题中读取了用于存储图像的解决方案,所以idk为什么该解决方案适用于除我以外的所有人...。感谢您的阅读和帮助。
答案 0 :(得分:0)
请在您的视图(createProduct.blade.php)上尝试以下代码
<form action="/storeProduct" method="post" enctype='multipart/form-data'>
别忘了调用位于控制器(ProductController)顶部的数据库模型(Product)
use App\Product;
如果它不起作用,请尝试更改验证格式。 (这适用于我,而且空白页没有错误)
$request->validate([
'input_img' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);