laravel将多个参数传递给控制器​​

问题描述

我想删除图像并返回到用户页面,所以我尝试将2参数传递给我的控制器(我的userid和image_id)。 但我遇到了这个错误

函数App \ Http \ Controllers \ McuFormDocumentController :: destroy()的参数太少,传递了1个参数,而恰好是2个参数

刀片中我的按钮代码

                <button id="delete" class="btn btn-danger btn-sm" data-title="{{ $mcu_form_document['title'] }}"
                    style="color: #fff; font-size: 1.2em;"
                    href="{{ route('mcu-form-document.destroy',['id'=>$id,'img'=>$mcu_form_document['id']]) }}">
                    Delete <i class="la la-trash" style="color: #fff; font-size: 1.2em;"></i>
                </button>

                <form action="{{ route('mcu-form-document.destroy','img'=>$mcu_form_document['id']]) }}" method="post"
                    id="deleteForm">
                    {{ csrf_field() }}
                    {{ method_field('DELETE') }}

                    <input type="submit" value="" style="display:none;">
                </form>

我的控制器

public function destroy($id,$img_id)
{
    $mcu_form_document = McuFormDocument::find($img_id);
    $mcu_form_document->delete();

    return redirect()
        ->route('mcu.resume.list',['id' => $id])
        ->with('success','Document has been successfully deleted!');
}

我的路线

    Route::resource('mcu-resume','McuResumeController');

解决方法

我的解决方案是在href中传递参数时使用串联

 href="{{ route('mcu-form-document.destroy',$id .'|'.$mcu_form_document['id']) }}"

并在控制器中使用preg_split对其进行分割

    public function destroy($params)
    {
    $str_arr = preg_split("/\|/",$params);
    $id = $str_arr[0];
    $img_id = $str_arr[1];
    // dd($id . "-" . $img_id);
    }

希望这对其他人有帮助。thth

,

或者您也可以在控制器中添加一个请求参数,该参数使您可以传递多个数据并获取所需的值,如下所示:

use Illuminate\Http\Request;

public function destroy(Request $request)
{
   $id = $request->get('id');
   $image_id = $request->get('img');
   $mcu_form_document = McuFormDocument::find($image_id);
   $mcu_form_document->delete();

   return redirect()
    ->route('mcu.resume.list',['id' => $id])
    ->with('success','Document has been successfully deleted!');
 }


 //web.php
 Route::delete('mcu-resume-destroy','McuResumeController@destroy');