php – 为什么我的变量在Laravel 5.4 Blade文件中显示的值不正确?

我有一个变量$country_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() }}

因此,如果我在控制器中将$country_code设置为“1”,它将显示我们发送了一条短信给1 5555555.你应该在几秒钟内收到它.
但是,如果我在隐藏的表单上执行检查元素,则会显示1-US.我已经尝试过PHP工匠视图:清除和PHP工匠清晰编译但问题仍然存在.

我也尝试过硬编码一个值{{Form :: hidden(‘country_code’,’asdf’)}},我没有看到变化.我尝试添加测试{{Form :: hidden(‘country_code1′,’asdf’)}}并查看更新.

我还将country_code重命名为country_code111以显示我的隐藏字段,它显示正确的值1.我认为这是一个缓存问题,但就像我提到的我已经尝试过PHP artisan缓存:清除问题仍然存在.

解决方法:

由于您使用的是Laravel 5.4,我假设您使用的是LaravelCollective中的Form,因为它们是从5.x中的基线Laravel中删除的.

如果LaravelCollective Forms存在于请求数据中或旧发布的数据(old()函数)中,它将覆盖您提供给输入的值.我怀疑你是这样的.

您可以看到此行为实现here.

解决此问题,您有以下几种选择:

>更改进入页面的请求参数的名称(如果您可以控制它)
>将您的字段名称重命名为不冲突的内容
>不要使用Form ::生成表单,只需使用经典的html / Blade自动创建隐藏的输入

就个人而言,我建议#3,因为那样你就可以完全控制你的代码了.

<input type="hidden" name="country_code" value="{{ $country_code }}"/>

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...