如何在 laravel 的管理控制器中获取添加和编辑功能

how to get add and edit feature in admin controller in laravel

所以基本上我在电子商务管理面板上工作,视图中有两个链接(添加和编辑)都应该重定向到相同的管理表单。 我已经实现了添加产品的路由和控制器,但我还想要一个编辑和删除功能,它发送该可编辑产品的详细信息,以便我可以编辑。

//这是我的管理员查看代码,获取产品详细信息

<body>
    @foreach ($data as $p)
        <tr>
            <td>{{$p['product_name']}}</td>
                <td>{{$p['product_price']}}</td>
            <td>{{$p['category']}}</td>
            <td>{{$p['seller']}}</td>
            <td>
                    
             <a  href="">Edit</a>&nbsp;
             <a  href="">Delete</a>&nbsp;
                
            </td>
        </tr>
    @endforeach
        <h4><a href='manage'>Add Product</a></h4>
    </body>

//这是我的路线

Route::post('manage/add',[adminController::class,'add_product']);

//添加产品的控制器

public function add_product(Request $request){

        $add=new product;
        $add->product_name=$request->input('product_name');
        $add->product_image=$request->input('product_image');
        $add->product_price=$request->input('product_price');
        $add->category=$request->input('product_category');
        $add->seller=$request->input('product_seller');
        $add->save();

        return redirect('admin');
    }

//这是我的管理表格

<form action="manage/add" id="product_manage_form" method="post"> 
                @csrf
                <input type="text" class="form-control" id="productInput" name='product_name' value=""  placeholder="Enter product name" required><br>
                <input type="text" class="form-control" id="productInput" name='product_image'  value="" placeholder="Enter product image name" required><br>
                <input type="text" class="form-control" id="productInput" name='product_price'  value="" placeholder="Enter product price" required><br>
                <input type="text" class="form-control" id="productInput" name='product_category' value=""  placeholder="Enter product category" required><br>
                <input type="text" class="form-control" id="productInput" name='product_seller' value=""  placeholder="Enter product seller" required><br>
                
                <div> 
                    <input type='submit' value='submit'>
                </div>
                
            </form>

如果是管理表单中的编辑选项,应该会自动填充数据。请帮助我如何实现这一目标,我是 laravel 的新人,提前致谢

将附加参数添加到路由作为可选参数id.So相同的路由可用于添加和编辑

Route::post('manage/add/{id?}',[adminController::class,'add_product'])->name('manageProduct');

在您的视图中添加路线 link 进行如下编辑

   <a  href="{{route('manageProduct',$p['id'])}}">Edit</a>&nbsp;

控制器中修改方法如下

public function add_product(Request $request,$id=null){
if(empty($id)){
  $add=new product;
} else{
    $add=product::find($id);
}
  $add->product_name=$request->input('product_name');
  $add->product_image=$request->input('product_image');
  $add->product_price=$request->input('product_price');
  $add->category=$request->input('product_category');
  $add->seller=$request->input('product_seller');
  $add->save();

    return redirect('admin');
 }

在您的 route.php

中添加以下内容

Route::get('manage/{id}/edit',[adminController::class,'edit_product']);

然后

public function edit_product($id){
    $product = Product::where('id', $id)->first();
    return view('manage.add', ['product' => $product]);
}

然后您可以在管理表单中访问 $product。