Laravel 6.8 PUT方法不适用于控制器之一,显示空白页面
最欢迎任何建议或解决方案。以下是总结代码。 路由指针不在控制器更新功能下
HTML edit.blad.php (我使用{{method_field('PUT')}}进行测试)
<form class="form-horizontal" action="{{ route('certificate.update',$certificate_data->id) }}" method="post">
{{ csrf_field() }}
<input type="hidden" name="_method" value="PUT">
// Other Form Fields
</form>
web.php(路由文件)
Route::group(['prefix' => 'admin'], function(){
Route::resource('certificate', 'CertificateController');
});
php artisan route:list http://prntscr.com/qf662i
控制器功能
public function update(Request $request, Certificate $certificate)
{
echo 'vvvvv';
return $certificate;
return $input = $request->all();
}
指针未进入控制器更新,仅显示空白页面 我还测试了控制器的所有功能
供参考->如果我更改web.php并执行以下代码,则指针将到达那里。但不包含Controller更新功能。
Route::put('certificate/{certificate}', function ($certificate) {
return $certificate;
})->name('certificate_update');
答案 0 :(得分:2)
控制器
public function update(Request $request,$certificate)
{
return $input = $request->all();
}
刀片文件
<form class="form-horizontal" action="{{ route('certificate.update',[$certificate_data->id,$certificate]) }}" method="post">
{{ csrf_field() }}
<input type="hidden" name="_method" value="PUT">
// Other Form Fields
</form>
答案 1 :(得分:1)
根据您的代码,一切看起来都不错。
原因是指针未从路由文件进入控制器
您的路径或控制器名称错误/不匹配
从另一个地方调用控制器文件
问题
如果答案为“是”,则有可能从laravel缓存中调用了错误的备份控制器。从控制器文件夹中删除那些备份文件和文件夹。
解决方案
我认为缓存了控制器PATH,而是调用了错误的控制器。 尝试使用以下命令清除常规缓存。
php artisan cache:clear
php artisan route:cache
php artisan config:cache
php artisan view:clear
清除控制器文件/路径缓存。我们将不得不重新生成自动加载。
尝试执行以下命令。 (这一步很重要)
composer dumpautoload
如果这解决了您的问题,那么您可以使用以下常规的html edit.blade表单语法。
<form action="{{ route('certificate.update',$certificate_data->id) }}" method="post">
{{ csrf_field() }}
{{ method_field('PUT') }}
// Other form fields
</form>
在您的控制器上。您的普通代码应如下所示工作。
public function update(Request $request, Certificate $certificate)
{
return $certificate;
}
让我知道此过程是否对您有帮助。祝你好运。
答案 2 :(得分:0)
尝试像这样更改控制器中的功能:
public function update(Request $request, $certificate)
答案 3 :(得分:0)
将操作更改为此
action="{{ route('certificate.update',[$certificate_data->id,\App\Certificate::find($certificate_data->id) ]) }}"
或
action="{{ route('certificate.update',[$certificate_data->id,App\Certificate::find($certificate_data->id) ]) }}"
使用PUT
代替<input type="hidden" name="_method" value="PATCH">
答案 4 :(得分:0)
您能否先尝试以下artisan命令:
php artisan cache:clear
以确保此处不是缓存问题。
您也可以尝试放
dd('test');
在您的更新功能的第一行中,以确保未显示任何结果?
如果它不起作用,您可以告诉我您的模型吗?和控制器?
您显示的所有代码对我来说都很不错