Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的变量在Laravel 5.4刀片文件中显示的值不正确?_Php_Laravel_Laravel 5_Blade - Fatal编程技术网

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页面,其中包含您希望共享的结果消息,或者在本例中是一个附加的“下一步”表单。如果你刷新过一个页面,看到一个弹出窗口询问你是否想再次提交表单,这就是这里发生的事情。