嗨,我在Laravel中遇到问题。 我在Laravel中有一个项目,而在Firefox中却遇到了问题。在Chrome中,一切正常。 我有这个管理员视图
@foreach ($messages as $message)
<tr>
<td>
<a href="{{ route('messages.show', $message->id) }}">
{{ $message->id }}
</a>
</td>
<td>{{ $message->nombre }}</td>
<td>{{ $message->email }}</td>
<td>{{ $message->mensaje }}</td>
<td>
<a class="btn btn-primary" href="{{ route('messages.edit',$message->id) }}">Editar</a>
<form style="display:inline" action="{{ route('messages.destroy', $message->id)}} " method="post">
{!! csrf_field() !!}
{!! method_field('DELETE') !!}
<button type="submit" class="btn btn-danger" name="button">Eliminar</button>
</form>
</td>
</tr>
@endforeach
我有一个带有两个按钮的表格,第二个按钮是删除邮件的表格。 O已添加method_field('DELETE')
这是我的路线。
Route::get('mensajes', 'MessagesController@index')->name('messages.index');
Route::get('mensajes/create', 'MessagesController@create')->name('messages.create');
Route::post('mensajes', 'MessagesController@store')->name('messages.store');
Route::get('mensajes/{id}', 'MessagesController@show')->name('messages.show');
Route::get('mensajes/{id}/edit', 'MessagesController@edit')->name('messages.edit');
Route::put('mensajes/{id}', 'MessagesController@update')->name('messages.update');
Route::delete('mensajes/{id}', 'MessagesController@destroy')->name('messages.destroy');
这里是MessagesController的destroy方法
public function destroy($id)
{
//borro el mensaje
//DB::table('messages')->where('id', $id)->delete();
Message::findOrFail($id)->delete();
//redirecciono
return redirect()->route('messages.index');
}
在Chrome中,一切正常,消息已删除。但是在Firefox中,它重定向到/ mensajes / {id}路由,并显示消息。似乎在Firefox {!! method_field('DELETE')!!}无法正常工作。 有人知道我在做什么错吗?
如果我尝试按建议清除,则会收到此消息
Route cache cleared!
LogicException : Unable to prepare route [api/user] for serialization. Uses Closure.
at C:\laragon\www\laraweb\vendor\laravel\framework\src\Illuminate\Routing\Route.php:880
876| */
877| public function prepareForSerialization()
878| {
879| if ($this->action['uses'] instanceof Closure) {
> 880| throw new LogicException("Unable to prepare route [{$this->uri}] for serialization. Uses Closure.");
881| }
882|
883| $this->compileRoute();
884|
Exception trace:
1 Illuminate\Routing\Route::prepareForSerialization()
C:\laragon\www\laraweb\vendor\laravel\framework\src\Illuminate\Foundation\Console\RouteCacheCommand.php:62
2 Illuminate\Foundation\Console\RouteCacheCommand::handle()
C:\laragon\www\laraweb\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:29
Please use the argument -v to see more details.
最诚挚的问候。
答案 0 :(得分:0)
由于您的代码没有问题,因此只需运行以下命令:
php artisan cache:clear
php artisan route:cache
php artisan config:cache
答案 1 :(得分:-1)
这是在Firefox中呈现html表单部分的方式。我认为代码还可以,不是吗?
<form style="display:inline" action="http://laraweb.test/mensajes/9 " method="post">
<input name="_token" value="R88rPYL6WJgEDwQizUiJnzMWwptSWyJmgakGrdZC" type="hidden">
<input name="_method" value="DELETE" type="hidden">
<button type="submit" class="btn btn-danger" name="button">Eliminar</button>
</form>
这是当我按“删除”按钮时,firefox中“网络”选项卡的屏幕截图。它似乎发出了获取请求...我不理解,因为我指定了POST方法...