php - 在 laravel 中创建类别和子类别
问题描述
我为制作类别创建了一个表单,并在同一页面上以表格的形式显示类别。在每个类别前面都有一个添加按钮来添加子类别。我想显示一个具有 subcategory 表单的模式。
我无法添加子类别。当我单击提交时,提交的详细信息以原始形式显示,并且每次只选择 Id 1
控制器:
public function subcat(Request $request, $id)
{
$data = new SubCategories();
$data->name = $request->input('name');
$data->categories_id=$id;
if($request->hasfile('image')){
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
$filename = time().'.'.$extension;
$file->move('uploads/subcategory/',$filename);
$data->image = $filename;
}else{
return $request;
$data->image = '';
}
$data->save();
return redirect('/admin/addCategory')->with('Success', 'SubCategory Added');
}
刀
@extends('admin.master');
@section('content');
<div class="content-wrapper">
<div class="row">
<div class="container">
<form action="{{route('store')}}" method="POST">
{{csrf_field()}}
<label for="cat_name">Category Name</label>
<input type="text" name="cat_name" class="form-control">
<button type="submit" class="btn btn-success">Submit</button>
</form>
</div>
</div>
<div class="row">
<div class="container">
<table class="table table-dark">
<tr>
<thead>
<th>ID</th>
<th>Category</th>
<th>AddSubCategory</th>
</thead>
</tr>
<tbody>
@foreach($category as $col)
<tr>
<td>{{$col->id}}</td>
<td>{{$col->cat_name}}</td>
<td><a class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" href="/admin/category/{{$col->id}}">Add</a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Add SubCategory</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form action="{{route('storeSub',[$category[0]->id])}}" method="POST">
{{csrf_field()}}
<label for="name">SubCategory</label>
<input type="text" name="name" class="form-control">
<label for="image">Image</label>
<input type="file" name="image" class="form-control">
<button type="submit" class="btn btn-primary">Save changes</button>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
@endsection
路线
Route::prefix('/admin')->group( function() {
Route::get('/addCategory','\App\Http\Controllers\AdminController@index');
Route::post('/storecat','\App\Http\Controllers\AdminController@categories')->name('store');
Route::get('/addCategory','\App\Http\Controllers\AdminController@show');
Route::post('/category/{id}','\App\Http\Controllers\AdminController@subcat')->name('storeSub');
});
解决方案
因为您的模态不在foreach
.
action="{{route('storeSub',[$category[0]->id])}}"
在模态表单上无法处理上述表格的值。
尝试将模态区域移动到 foreach 或使用 javascript 动态更改模态的值。
每次获取类别 id = 1 的原因是,因为您提交的是模态表单操作,例如
$category[0]->id
这意味着每次发送类别 id = 1
所以解决方案应该在你的刀片文件中接近这个;
@extends('admin.master');
@section('content');
<div class="content-wrapper">
<div class="row">
<div class="container">
<form action="{{route('store')}}" method="POST">
{{csrf_field()}}
<label for="cat_name">Category Name</label>
<input type="text" name="cat_name" class="form-control">
<button type="submit" class="btn btn-success">Submit</button>
</form>
</div>
</div>
<div class="row">
<div class="container">
<table class="table table-dark">
<tr>
<thead>
<th>ID</th>
<th>Category</th>
<th>AddSubCategory</th>
</thead>
</tr>
<tbody>
@foreach($category as $col)
<tr>
<td>{{$col->id}}</td>
<td>{{$col->cat_name}}</td>
<td><a class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" href="/admin/category/{{$col->id}}">Add</a></td>
</tr>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Add SubCategory</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form action="{{route('storeSub',[$col->id])}}" method="POST">
{{csrf_field()}}
<label for="name">SubCategory</label>
<input type="text" name="name" class="form-control">
<label for="image">Image</label>
<input type="file" name="image" class="form-control">
<button type="submit" class="btn btn-primary">Save changes</button>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection
推荐阅读
- android - 在 Android 项目中使用不同版本的 Lottie 时出现问题
- google-chrome-devtools - Chrome 开发工具:页面刷新后本地 CSS 更改意外持续存在
- c++ - 函数内部的局部静态变量存储在哪里 - 在数据段中还是在堆栈中?
- garbage-collection - 每天在 glassfish 中生成垃圾收集日志文件
- reactjs - 使用 mapbox.js 制作的 React Web 应用程序,看起来在视觉上被拉伸了,而它的交互组件则以预期的方式运行
- spring-boot - 将 logback 配置文件包含到 Spring Boot 启动器中
- r - 使用 dplyr 在缺失值中生成逐行条件
- google-sheets-api - 使用 Google Sheets Chart API 控制底轴上的步数
- reactjs - GraphQL 突变和查询:无法读取未定义的属性
- php - 在多副本 Docker Swarm 或 Kubernetes 集群中刷新 PHP OpCache