Laravel 5:视图已返回变量无法传递至控制器问题咨询
解决Laravel 5中视图传递变量与表单提交同时获取的问题
你现在遇到的问题核心是:页面上的<h5>元素不属于表单控件,当表单提交时,浏览器不会把它的值发送给服务器,这就是为什么$request->get('index1')拿不到数据的原因。
要同时获取从视图1传递来的$date变量和视图2表单的新输入内容,你需要把$date的值放到一个表单隐藏字段里,这样它就会和其他表单数据一起提交。
具体修复步骤:
- 修改视图2的表单代码,添加隐藏输入字段并带上Laravel必需的CSRF令牌:
<form method="POST" action="{{route('catch')}}"> @csrf <!-- 必须添加,否则POST请求会被Laravel的CSRF保护拦截 --> <!-- 把$date的值存入隐藏字段,name设为你要获取的键名index1 --> <input type="hidden" name="index1" value="{{ $date }}"> <!-- 原来的显示元素可以保留,不影响页面展示 --> <h5 id="index1">{{ $date }}</h5> <!-- 你的其他表单输入控件,示例如下 --> <input type="text" name="new_content" placeholder="输入新内容"> <button type="submit">提交</button> </form>
注意:这里用
{{ $date }}而非{!! $date !!}是为了自动转义HTML特殊字符,避免XSS安全风险,除非你确定$date的内容完全可信且无需转义。
- 修改Controller_2的store方法,现在就能正常获取到目标值了:
public function store(Request $request) { // 获取从视图1传递来的变量值 $fromView1Data = $request->input('index1'); // 获取视图2的新输入内容 $newUserInput = $request->input('new_content'); // 这里可以根据需求做逻辑处理,比如返回数据或存入数据库 return response()->json([ 'view1_data' => $fromView1Data, 'new_input' => $newUserInput ]); }
这样提交表单后,服务器就能同时拿到从视图1传递过来的数据和视图2的新输入内容了。
内容的提问来源于stack exchange,提问作者Artem
相关产品推荐
相关产品推荐

