【发布时间】:2018-06-14 10:31:16
【问题描述】:
我在使用 Laravel 5.5 构建项目时遇到了一些问题。
我想将表单中的数据保存在数据库中,并将它们显示在数组中。我在数组部分的tbody 中编写了一个@foreach 循环:
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Nom</th>
<th>Prix</th>
<th>Categorie</th>
<th colspan="2">Action</th>
</tr>
</thead>
<tbody>
@foreach($products as $product)
<tr>
<td>{{$product->id}}</td>
<td>{{$product->name}}</td>
<td>{{$product->price}}</td>
<td>{{$product->category}}</td>
<td><a href="{{action('ProductController@edit', $product->id)}}"
class="btn btn-warning">Edit</a></td>
<td>
<form action="{{action('ProductController@destroy', $product->id)}}"
method="post">
{{csrf_field()}}
<input name="_method" type="hidden" value="DELETE">
<button class="btn btn-danger" type="submit">Delete</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
表格
<form id ="AddFormProduct" method="post" action="{{url('products')}}">
{{csrf_field()}}
<div class="row">
<div class="col-md-4"></div>
<div class="form-group">
<label for="name">Nom:</label>
<input type="text" class="form-control" name="name">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group">
<label for="price">Prix:</label>
<input type="text" class="form-control" name="price">
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group">
<label for="category">Categorie:</label>
<select name="selectCategory" id="selectCategory" class="form-control">
@foreach($categories as $category)
<option value="{{$category->id}}">{{$category->name}}</option>
@endforeach
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4"></div>
<div class="form-group">
<button type="submit" class="btn btn-success" style="margin-left:38px">Enregistrer</button>
</div>
</div>
</form>
第一个问题是我无法显示视图(带有数组和表单),因为我有这个:
错误异常 (E_ERROR) 未定义变量:products(查看:C:\xampp\htdocs\Laratest\resources\views\template.blade.php)
我尝试了很多解决方案,最后一个是:
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Product;
use View;
class ProductController extends Controller
{
public function index()
{
$products = Product::orderBy('id','name')->get();
return view('template', compact('products','categories'));
// $products = Product::all();
// return view('template', ['products' => $products]);
}
public function create()
{
//
}
public function store(Request $request)
{
$product = $this->validate(request(), [
'name' => 'required',
'price' => 'required|numeric',
'category' => 'required'
]);
Product::create($product);
return back()->with('success', 'Le produit a bien été ajouté !');
}
public function edit($id)
{
$product = Product::find($id);
return view('products.edit',compact('product','id'));
}
public function update(Request $request, $id)
{
$product = Product::find($id);
$this->validate(request(), [
'name' => 'required',
'price' => 'required|numeric',
'category' => 'required'
]);
$product->name = $request->get('name');
$product->price = $request->get('price');
$product->category = $request->get('category');
$product->save();
return redirect('products')->with('success','Le produit a bien été
modifié !');
}
public function destroy($id)
{
$product = Product::find($id);
$product->delete();
return redirect('products')->with('success','Le produit a bien été
supprimé !');
}
}
型号
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Input;
class Product extends Model
{
protected $fillable = [
'name',
'price',
'category'
];
}
路线
Route::resource('products','ProductController');
Route::get('/monCommerce', 'ProductController@index')->name('products');
第二个问题是我不知道如何从select>options 获取我的值,它只适用于输入字段。 = 已解决
请提出建议。
【问题讨论】:
-
这个解决方案行不通?
return view('template', ['products' => $products]); -
try -- return view('template', compact(['products','categories']));
-
第二个问题尝试改变
-
谢谢你们的回答,但它也不起作用......