首页 > 解决方案 > 在 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">&times;</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');

});

标签: phplaravel

解决方案


因为您的模态不在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">&times;</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

推荐阅读