Php 为什么我的变量在Laravel 5.4刀片文件中显示的值不正确?
我有一个变量Php 为什么我的变量在Laravel 5.4刀片文件中显示的值不正确?,php,laravel,laravel-5,blade,Php,Laravel,Laravel 5,Blade,我有一个变量$country\u code,它在表单的一部分中显示正确的值,但在另一部分中不显示。为什么会这样 这是我的代码: {{ Form::open(['action' => ['PinVerificationController@valid'],'id'=>'pin_code_form']) }} //$country_code shows 1 We sent a text message to {{$country_code}} {{$phone_numbe
$country\u code
,它在表单的一部分中显示正确的值,但在另一部分中不显示。为什么会这样
这是我的代码:
{{ Form::open(['action' => ['PinVerificationController@valid'],'id'=>'pin_code_form']) }}
//$country_code shows 1
We sent a text message to {{$country_code}} {{$phone_number}}. You should receive it within a few seconds.<br><br>
{{ Form::label('Pin Code', null, ['class' => 'control-label']) }}
{{ Form::hidden('country_code', $country_code) }}//<------shows 1-US instead of 1
{{ Form::hidden('phone_number', $phone_number) }}
{{ Form::hidden('type', $pin_notification_type) }}
{{ Form::text('pin_code', null,['placeholder' => 'Pin Code'])}}<br><br>
Enter a 4 digit pin you received by phone.
<br>
<br>
{{ Form::submit('Verify',['name'=>'validate'])}}
{{ Form::close() }}
{{Form::open(['action'=>['PinVerificationController@valid'],'id'=>'pin_code_form'])}
//$country_代码显示1
我们向{{$country_code}{{$phone_number}发送了一条短信。您应该在几秒钟内收到它。
{{Form::label('Pin Code',null,['class'=>'控制标签'])}
{{Form::hidden('country_code',$country_code)}//'Pin code']}}
输入您通过电话收到的4位pin码。
{{Form::submit('Verify',['name'=>'validate'])}
{{Form::close()}}
因此,如果我在控制器中将$country_code设置为“1”,它将显示我们向1555发送了一条文本消息。您应该在几秒钟内收到它。
但如果我在隐藏窗体上执行inspect元素,它将显示1-US。我尝试了php-artisan-view:clear
和php-artisan-clear-compiled
,但问题仍然存在
我也尝试过硬编码一个值{{Form::hidden('country_code','asdf')}
,但我没有看到变化。我尝试添加一个测试{{Form::hidden('country_code1','asdf')}
并查看更新
我还将隐藏字段的
country\u code
重命名为country\u code 111
,它显示了正确的值1。我认为这是一个缓存问题,但正如我提到的,我已经尝试了php artisan cache:clear
,问题仍然存在。由于您使用的是Laravel 5.4,我假设您使用的是LaravelCollective中的表单,因为它们在5.x中从基线Laravel中删除
如果输入值存在于请求数据或旧发布数据中(函数old()
),则LaravelCollective表单将覆盖您提供给输入的值。我怀疑你就是这样
您可以看到这个行为实现
要解决此问题,您有几个选项:
更改输入页面的请求参数的名称(如果您可以控制它)
将字段名重命名为不冲突的名称
不要使用Form::
生成表单,只需使用经典的html/Blade自动创建隐藏的输入
就个人而言,我建议使用#3,因为这样您就可以完全控制代码
<input type="hidden" name="country_code" value="{{ $country_code }}"/>
出于好奇,如果您不使用表单::
助手就尝试它,即
那么它能工作吗?这听起来有点像缓存,但听起来不对。@Timlews在你的代码中确实显示了999井,这是出乎意料的。就我个人而言,我不在代码中使用表单::
助手(更多的输入,但我发现更多的控制),所以如果您同意的话,这是一个选项。否则,我不确定。让我看看是否可以重新创建。@Timleis我将隐藏表单重命名为code\u country
,一切正常。我看到了正确的值。这真的很奇怪。耸耸肩。那我就不知道了。我想你得注意一下?如果继续发生,则进一步调查。如果是这个问题,我将如何解决它?@altoids您必须a)更改输入页面的请求参数的名称,b)将参数重命名为不冲突的值c)不要使用Form::生成表单,只需使用经典html自动创建隐藏输入请通过编辑将您的注释添加到答案中,然后删除您的注释。谢谢,我使用了选项3,解决了这个问题。另一个选项是不从接受POST
请求的同一个控制器渲染视图。通常的最佳做法是处理POST请求,然后重定向到一个标准GET页面,其中包含您希望共享的结果消息,或者在本例中是一个附加的“下一步”表单。如果你刷新过一个页面,看到一个弹出窗口询问你是否想再次提交表单,这就是这里发生的事情。