我正在使用laravel 5
框架进行项目。我希望为parameter
课程传递两个DELETE
到Controller
方法。
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>
当我点击按钮时,我可以看到variable
到url
:
URL:
../masterlaw.com/commitee-page-member/1?5
我尝试以不同的方式,采取这些two parameters
1和5.
控制器类代码:
public function destroy(Request $request, $id)
{
//
echo $id;
echo $request['id'];
}
但我仍然无法retrieve
数据。请帮我。
答案 0 :(得分:5)
这里的问题是resource class的destroy()
方法只接受一个参数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])