首页 > 解决方案 > 默认情况下如何正确显示存储在用户表中的国家/地区?

问题描述

我有一个方法“displayRegistrationPage()”来显示会议注册页面。在此方法中返回变量 $countries,该变量返回一个包含国家/地区的数组,每个国家/地区在数组中显示如下:“DE”=>“Germany”。

 public function displayRegistrationPage(Request $request, $id, $slug = null)
{
    $conference = Conference::find($id);
    $selectedRtypes = Session::get('selectedRtypes');
    $total = Session::get('total');
    $countries = Facades\Countries::all();

    return view('conferences.registration',
            ['selectedRtypes' => $selectedRtypes, 'total' => $total, 'id' => $id,
                'slug' => $slug, 'countries' => $countries, 'conference' => $conference]);
}

然后在注册页面我有一个表格,用户需要介绍他的增值税号和他的国家,所以我在下面有这个表格字段。但是,如果用户已经将增值税和国家/地区存储在 users 表中,我想默认显示该值,因此用户不需要引入该值。但是用户可能想要引入其他值。

<div class="form-group">
    <label for="vat" class="text-gray">Vat number</label>
    <input type="text" name="vat"  class="form-control" value="{{ (Auth::user()->VAT) ? Auth::user()->VAT : old('vat')}}">
</div>

<div class="form-group">
    <label for="country" class="text-gray">Country</label>
    <select class="form-control" name="country" id="country">
        @if(Auth::user()->country)
            <option selected="selected">{{Auth::user()->country}}</option>
        @endif
        @foreach($countries as $key => $country)
            <option value="{{$country}}"
                    @if(Auth::user()->country == $country) selected="selected" @endif>{{ $country}}</option>
        @endforeach
    </select>
</div>

您知道如何正确实现这一目标吗?通过上面的选择菜单,它会显示存储在用户表中的国家/地区。但是有一个问题,因为它需要获取密钥(例如:“DE”而不是“Germany”)。但是使用 storeRegistration() 中的上述代码来存储注册信息, $request->all( 显示“Germany” like "country" => "Germany",而不是“DE”。并且在 storeRegistration() 中,考虑使用国家/地区来验证增值税是必要的关键而不是价值。

在 storeRegistration() 中验证增值税:

$rules['vat'] = [
function ($attr, $value, $fail) use ($request) {
    if (!VatValidator::validateFormat($request->country . $request->vat)) {
        $fail('Please insert a valid VAT.');
    }
}];

标签: phplaravel

解决方案


将 {{ $country }} 更改为 {{ $key }}

<select class="form-control" name="country" id="country">
    @foreach($countries as $key => $country)
        <option value="{{$key}}" {{ Auth::user()->country == $country ? 'selected' : '' }}>{{ $country}}</option>
    @endforeach
</select>

推荐阅读