为什么我的变量在 Laravel 5.4 Blade 文件中显示不正确的值?
Why is my variable displaying incorrect value in Laravel 5.4 Blade file?
我有一个变量 $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 artisan view:clear
和 php artisan clear-compiled
,但问题仍然存在。
我也试过硬编码一个值 {{ Form::hidden('country_code', 'asdf') }}
但我没有看到变化。我尝试添加测试 {{ Form::hidden('country_code1', 'asdf') }}
并查看更新。
我还为我的隐藏字段将 country_code
重命名为 country_code111
,它显示了正确的值 1。我认为这是一个缓存问题,但正如我提到的,我试过 php artisan cache:clear
问题依然存在。
由于您使用的是 Laravel 5.4,我假设您使用的是 Laravel 集合中的 Form
,因为它们在 5.x 中从基线 Laravel 中删除].
LaravelCollective Forms 将覆盖您提供给输入的值(如果它存在于请求数据或旧发布数据(old()
函数)中)。我怀疑你就是这种情况。
您可以看到此行为实现 here。
要解决这个问题,您有几种选择:
- 更改输入页面的请求参数的名称(如果您可以控制它)
- 将您的字段名称重命名为不冲突的名称
- 不要使用
Form::
生成表单,只需使用经典 html/Blade 自动创建隐藏输入
就我个人而言,我会推荐#3,因为这样您就可以完全控制您的代码。
<input type="hidden" name="country_code" value="{{ $country_code }}"/>
我有一个变量 $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 artisan view:clear
和 php artisan clear-compiled
,但问题仍然存在。
我也试过硬编码一个值 {{ Form::hidden('country_code', 'asdf') }}
但我没有看到变化。我尝试添加测试 {{ Form::hidden('country_code1', 'asdf') }}
并查看更新。
我还为我的隐藏字段将 country_code
重命名为 country_code111
,它显示了正确的值 1。我认为这是一个缓存问题,但正如我提到的,我试过 php artisan cache:clear
问题依然存在。
由于您使用的是 Laravel 5.4,我假设您使用的是 Laravel 集合中的 Form
,因为它们在 5.x 中从基线 Laravel 中删除].
LaravelCollective Forms 将覆盖您提供给输入的值(如果它存在于请求数据或旧发布数据(old()
函数)中)。我怀疑你就是这种情况。
您可以看到此行为实现 here。
要解决这个问题,您有几种选择:
- 更改输入页面的请求参数的名称(如果您可以控制它)
- 将您的字段名称重命名为不冲突的名称
- 不要使用
Form::
生成表单,只需使用经典 html/Blade 自动创建隐藏输入
就我个人而言,我会推荐#3,因为这样您就可以完全控制您的代码。
<input type="hidden" name="country_code" value="{{ $country_code }}"/>