Laravel+Bootstrap项目按钮FontAwesome图标不显示问题排查求助
问题原因
- FontAwesome资源引入不完整:你当前仅引入了FontAwesome 5的核心基础样式
fontawesome.min.css,未引入实际图标对应的样式文件。你代码中使用的fa-eye、fa-edit、fa-trash-alt都属于solid类型图标,需要对应类型的样式文件支持才能正常渲染。 - Blade模板存在HTML结构错误:
<form>标签在@if判断块内打开,却将</form>闭合标签放在@endif之外,当判断条件不满足(登录用户ID为2)时,会出现孤立的</form>无效标签,可能引发页面结构异常。 - 存在重复引入Bootstrap的风险:你既在
app.scss中引入了npm依赖的Bootstrap源码,又在布局文件中通过CDN引入了Bootstrap 5的样式文件,二者版本如果不一致可能引发样式冲突。
解决方法
1. 修正FontAwesome引入
将布局文件中原有的FontAwesome引入行替换为引入全量图标样式的地址即可:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.3/css/all.min.css" crossorigin="anonymous">
all.min.css已经包含了FontAwesome 5所有类型的图标样式,无需再单独引入核心文件和各类型拆分文件。
2. 修正Blade模板的结构错误
调整<form>标签的闭合位置,放到@endif内部,修正后的代码如下:
<td class="table-buttons"> <a href="{{ route('application_form.show', $application_form) }}" class="btn btn-success"> <i class="fa fa-eye"></i> </a> @if (!(Auth::user()->id == 2)) <a href="{{ route('application_form.edit', $application_form) }}" class="btn btn-primary"> <i class="fa fa-edit"></i> </a> <form method="POST" action="{{ route('application_form.destroy', $application_form) }}"> @method('DELETE') @csrf <button type="submit" class="btn btn-danger"> <i class="fa fa-trash-alt"></i> </button> </form> @endif </td>
3. 可选:统一Bootstrap引入方式
如果确认不需要同时使用两份Bootstrap样式,可删除其中一处引入,避免版本冲突引发的样式异常:
- 如果使用npm编译的资源,删除布局文件中Bootstrap的CDN引入,在布局中引入
npm run dev编译后生成的css文件即可 - 如果偏好CDN引入,删除
app.scss中@import '~bootstrap/scss/bootstrap';的引入语句,重新执行npm run dev编译即可
内容的提问来源于stack exchange,提问作者Вадик
相关产品推荐
相关产品推荐

