Forms Laravel 5.0路由模型绑定&x27;不要在破坏行动中工作
我有一个带有一个提交按钮的表单,并在控制器中设置action to destroy方法。相同的代码适用于其他窗体和控制器,但不适用于此窗体和控制器。当我在Chrome中检查我的网页时,表单标签中的操作是错误的 这是我的表格:Forms Laravel 5.0路由模型绑定&x27;不要在破坏行动中工作,forms,laravel,laravel-5,laravel-routing,laravel-form,Forms,Laravel,Laravel 5,Laravel Routing,Laravel Form,我有一个带有一个提交按钮的表单,并在控制器中设置action to destroy方法。相同的代码适用于其他窗体和控制器,但不适用于此窗体和控制器。当我在Chrome中检查我的网页时,表单标签中的操作是错误的 这是我的表格: {!! Form::model($company, ['method' => 'PATCH', 'action' => ['Setting\Organization\CompaniesController@update', 'files'=>true, $
{!! Form::model($company, ['method' => 'PATCH', 'action' => ['Setting\Organization\CompaniesController@update', 'files'=>true, $company->CompanyCode]]) !!}
<div class="form-group">
{!! Form::label('CompanyCode', 'Company Code : ', ['class' => 'col-lg-3 col-md-3 col-sm-3 col-xs-3']) !!}
<div class="col-lg-9 col-md-9 col-sm-9 col-xs-9">
{!! Form::text('CompanyCode', null, ['class' => 'form-control', 'readonly' => true]) !!}
</div>
</div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
{!! Form::submit('Update Company', ['class' => 'btn btn-primary', 'id' => 'btnSubmit']) !!}
</div>
{!! Form::close() !!}
{!! Form::model($company, ['method' => 'DELETE', 'action' => 'Setting\Organization\CompaniesController@destroy', $company->CompanyCode]) !!}
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
{!! Form::submit('Delete Company', ['class' => 'btn btn-danger']) !!}
</div>
{!! Form::close() !!}
下面是设置\组织\公司控制器中的销毁方法:
public function edit(Company $company){
return view('setting.organization.company.edit', compact('company'));
}
public function destroy(Company $company){
dd($company);
//------------ delete company
$company->IsActive = 0;
$company->update();
flash()->info('Company ' . $company->Name . ' has been deleted.');
return redirect('company');
}
dd($company)代码>行甚至不起作用,因为表单没有链接到正确的路由
RouteServiceProvider文件:
public function boot(Router $router)
{
parent::boot($router);
$router->bind('client', function($id){
return \App\Models\Setting\ClientAccount::getClientFromAccountName($id);
});
$router->bind('company', function($id){
return Company::getCompanyFromCode($id);
});
}
这是表单的检查元素:
<form method="POST" action="http://localhost/hrmsystem/public/company/%7Bcompany%7D" accept-charset="UTF-8" com160202145801="COM160202145801">
<input name="_method" type="hidden" value="DELETE">
<input name="_token" type="hidden" value="B2luMsN5Oy81GUFLoUCoHc2ERnqHe1AYir1DEY4N">
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
<input class="btn btn-danger" type="submit" value="Delete Company">
</div>
</form>
在我提交表格后:
我知道错误是ModelNotFoundException,因为传递的CompanyCode是%7B公司%7D。但我不知道它是从哪里来的
我在routes.php中使用Route::resource
请帮忙,我是拉威尔的新手。表单标签中的操作是错误的,这一点您是正确的
请尝试以下方法:
{!! Form::model($company, [
'method' => 'PATCH',
'action' => ['Setting\Organization\CompaniesController@update', $company->CompanyCode],
'files'=>true
]) !!}
错误在于将'files'=>true
包含在动作数组中,因为它不是动作的一部分。它是它自己的属性,因此它应该与动作数组分开/在动作数组之外。删除时不使用模型绑定
{!! Form::open('method' => 'DELETE', 'action' => ['Setting\Organization\CompaniesController@destroy', $company->CompanyCode]) !!}
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
{!! Form::submit('Delete Company', ['class' => 'btn btn-danger']) !!}
</div>
{!! Form::close() !!}
{!!Form::open('method'=>'DELETE','action'=>['Setting\Organization\CompaniesController@destroy“,$company->CompanyCode])
{!!表单::提交('Delete Company',['class'=>'btn btn danger'])
{!!Form::close()!!}
嘿,这取决于你的路线
如果使用Route::resource('companys','companyescontroller')代码>对你来说很容易,不需要麻烦,只要你能像这样使用你的按钮
{!! Form::open(array('class' => 'form-inline', 'method' => 'DELETE', 'route' => array('companies.destroy', $company->CompanyCode))) !!}
{!! Form::submit('DELETE', array('class' => 'btn btn-danger btn-xs')) !!}
{!! Form::close() !!}
{!! Form::open('method' => 'DELETE', 'action' => ['Setting\Organization\CompaniesController@destroy', $company->CompanyCode]) !!}
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
{!! Form::submit('Delete Company', ['class' => 'btn btn-danger']) !!}
</div>
{!! Form::close() !!}
如果你想用你的方式,那么你必须像这样使用你的表格
{!! Form::open(array('class' => 'form-inline', 'method' => 'DELETE', 'route' => array('companies.destroy', $company->CompanyCode))) !!}
{!! Form::submit('DELETE', array('class' => 'btn btn-danger btn-xs')) !!}
{!! Form::close() !!}
{!! Form::open('method' => 'DELETE', 'action' => ['Setting\Organization\CompaniesController@destroy', $company->CompanyCode]) !!}
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
{!! Form::submit('Delete Company', ['class' => 'btn btn-danger']) !!}
</div>
{!! Form::close() !!}
{!!Form::open('method'=>'DELETE','action'=>['Setting\Organization\CompaniesController@destroy“,$company->CompanyCode])
{!!表单::提交('Delete Company',['class'=>'btn btn danger'])
{!!Form::close()!!}
您好,我尝试了您的解决方案,但没有成功,错误仍然存在。有什么想法吗?嗨@Hamel,我使用了你的第一个解决方案(使用路线而不是行动),效果非常好!非常感谢,你救了我一天:D:)::)很高兴帮助你hi@Elias,我尝试了你的解决方案,但对我来说不起作用,错误仍然是一样的,因为Chrome inspect元素中表单标签中的操作与我发布的仍然是一样的。请帮忙。我已经用@Hamel solution修复了我的错误。感谢您抽出时间回答我的问题:DHi@Thomas,感谢您的回答,但不幸的是,这不是问题所在,因为问题在于另一种形式(在我的帖子中,我在同一页中写了两种形式)。我确实在我的第一个表单中使用了文件上传,但是我没有在帖子中写它,因为第一个表单工作得很好。你能帮我吗?我已经用@Hamel solution修复了我的错误。谢谢你抽出时间回答我的问题:D