默认情况下,如何正确显示存储在用户表中的国家/地区?

时间:2018-08-08 17:02:11

标签: php laravel

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

 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]);
}

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

<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(会显示“德国”,例如"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.');
    }
}];

1 个答案:

答案 0 :(得分:0)

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

def singup(request):
    ...
    return redirect(redirect_to_url)