
本文介绍如何将原生 PHP 的 $_GET 参数输出代码迁移到 Laravel Blade 模板,使用 request()->search 安全获取并渲染搜索关键词,避免手动判断和 XSS 风险。
本文介绍如何将原生 php 的 `$_get` 参数输出代码迁移到 laravel blade 模板,使用 `request()->search` 安全获取并渲染搜索关键词,避免手动判断和 xss 风险。
在 Laravel 开发中,应避免在 Blade 模板中混用原生 PHP(如 <?php if(isset($_GET['search']))... ?>),这不仅破坏模板的可读性,还容易引发安全与维护问题。Blade 提供了简洁、安全且语义清晰的语法来处理请求数据。
推荐写法如下:
<code class="blade"><input type="text" name="search" value="{{ request()->search }}" placeholder="Search by name..."></code>
✅ 优势说明:
-
request()->search会自动从当前请求的查询字符串(GET)或请求体(POST)中查找search字段;若不存在,返回null,而 Blade 的{{ }}语法对null值默认渲染为空字符串,无需额外判空; - 自动进行 HTML 转义,防止 XSS 攻击(例如用户输入
<script>alert(1)</script>将被安全转义为文本); - 语义清晰,符合 Laravel 的惯用法,便于团队协作与后续维护。
⚠️ 注意事项:
- 若需保留原始未转义内容(极少数场景),请改用
{!! !!}语法,但务必自行过滤(如e()或strip_tags()),否则存在严重安全风险; - 对于更复杂的请求逻辑(如多级嵌套参数、默认值设定),建议使用
request()->input('search', 'default')显式指定默认值; - 在控制器中预处理数据(如验证、清洗)仍是最佳实践,模板层应尽量保持“只展示、不处理”。
总结:用 {{ request()->search }} 替代冗长的 $_GET 判空逻辑,是 Laravel 开发中提升安全性、可读性与一致性的关键一步。











