如何在laravel 5中的DELETE方法中传递多个参数?

时间:2015-09-16 04:47:49

标签: php html5 laravel-5

我正在使用laravel 5框架进行项目。我希望为parameter课程传递两个DELETEController方法。

ex.blade.php

<td align='center'>
    {!! Form::open(['method' => 'DELETE', 'route'=>['commitee-page-member.destroy',$member->id ,$commitee->id]]) !!}                                               
    <button type="submit" class="btn btn-default btn-sm" onclick="return confirm('Are you sure?')"> <span class="glyphicon glyphicon-trash"></span> </button> 
    {!! Form::close() !!}
</td>

当我点击按钮时,我可以看到variableurl

URL:

../masterlaw.com/commitee-page-member/1?5

我尝试以不同的方式,采取这些two parameters 1和5.

控制器类代码:

public function destroy(Request $request, $id)
{
    //       
    echo $id;
    echo $request['id'];      
}

但我仍然无法retrieve数据。请帮我。

3 个答案:

答案 0 :(得分:5)

这里的问题是resource classdestroy()方法只接受一个参数ID。一种可能的解决方案是创建一个控制器类(而不是资源)并创建一个接受两个参数的方法:

class PageController extends Contoller{

    public function destroy(Request $request, $memberId, $commiteeId){
        // echo memberId;
    }
}

根据您的需要和表格格式命名路线:

Route::get('delete-page/{memberId}/{commiteeId}', [
    'as' => 'destroy', 
    'uses' => 'PageController@destroy'
]);

现在您的路线已准备好与两个参数一起使用:

{!! Form::open([
    'method' => 'POST', 
    'route' => ['destroy', $member->id, $commitee->id]]) !!}

作为补充说明,您可以阅读有关嵌套资源的更多信息,如果您的项目是在特定结构下制作的,那么它可能对您有用。

修改 如果您认为必须在资源类中保留代码,则可以在资源声明之前添加自定义方法并在routes.php文件中声明它:

// using "delete" as a verb
Route::delete('memberPage/customDestroy/{memberId}/{commiteeId}', 'MyResource@customDestroy');
Route::resource('memberPage', 'MyResource');

答案 1 :(得分:1)

您的代码几乎可以,只需进行少量编辑

./masterlaw.com/commitee-page-member/1?val=5&&val2=4

并在控制器中

public function destroy(Request $request, $id)
{      
 echo $id;
 echo $request->val;
 echo $request->val2;     
}

当您要在资源控制器的函数

中添加新的get参数时

您只需在函数中添加Request $request parameter,然后就可以捕获所有值。喜欢编辑功能

manage/pages/1/edit?language=en

public function edit(Request $request,$id){
 $getvalue=$request->language;
}

答案 2 :(得分:1)

您必须在控制器的方法中定义所有参数,但可以随意使用或不使用所有参数

public function destroy(Request $request, $commiteId , $mebmerId)
{
    //your awesome codes     
}

并且您必须通过密钥将它们传递给

注意:Form :: open在laravel 5+中不可用,因此您必须使用路由助手功能

route("myroute.name",["commiteeId"=>commiteeId,"memberId"=>$memberId])