Laravel 7.1使用Session时表单开闭替代方式及Form类报错排查
问题原因及解决方案
为什么出现「Class 'Form' not found」报错
Laravel 7.1已不再内置Form类(该类原属于LaravelCollective的HTML/Form扩展包),官方从Laravel 5.8版本起就移除了对这个扩展包的内置支持,直接调用Form::open或Form::model自然会提示类找不到。
两种解决方式
方式一:安装LaravelCollective Form扩展包
如果你想继续使用Form::open这类语法,需手动安装扩展包:
- 执行Composer命令安装:
composer require laravelcollective/html - 打开
config/app.php文件,添加服务提供者和门面别名:- 在
providers数组中添加:Collective\Html\HtmlServiceProvider::class, - 在
aliases数组中添加:'Form' => Collective\Html\FormFacade::class, 'Html' => Collective\Html\HtmlFacade::class,
- 在
- 完成后即可继续使用你原来的
Form::open、Form::model写法。
方式二:使用原生HTML表单 + Laravel辅助函数(推荐)
无需依赖第三方包,直接用原生HTML表单配合Laravel辅助函数实现相同功能:
示例代码:
<div class="row"> <div class="col-12"> <form name="name_val" id="id_val" method="POST" enctype="multipart/form-data"> <!-- 必须添加CSRF令牌,防止跨站请求伪造 --> @csrf <!-- 如果需要使用PUT/PATCH/DELETE这类非GET/POST的HTTP方法,添加以下字段 --> {{ method_field('PUT') }} <!-- 你的表单内容示例 --> <input type="text" name="title" value="{{ old('title') }}"> </form> </div> </div>
- 关联Session的常用操作:
- 回显表单旧数据:用
old('字段名'),Laravel会自动从Session中读取表单提交失败后的旧输入值; - 操作Session数据:用
session()辅助函数,比如session('key')读取数据,session(['key' => 'value'])存储数据。
- 回显表单旧数据:用
内容的提问来源于stack exchange,提问作者kp singh
相关产品推荐
相关产品推荐

