63 lines
2.4 KiB
PHP
63 lines
2.4 KiB
PHP
{{--
|
|||
|
|
<x-checkout::select name="billing_country_id" label="Country" :options="$countries" required />
|
||
|
|
<x-checkout::select name="shipping_state" label="Region" :options="$regions" value-field="name" translation-group="states" required />
|
||
|
|
|
||
|
|
`options` is an iterable of models/objects; `label` is always read from
|
||
|
|
`->name`, the submitted value from `->{$valueField}` (default `id`, but e.g.
|
||
|
|
`name` for Lunar states — table-rate-shipping resolves those with
|
||
|
|
State::whereName(), so the address must carry the exact name string).
|
||
|
|
|
||
|
|
`translationGroup` (optional, e.g. "countries"/"states") looks the raw
|
||
|
|
`->name` up in boboko-core's `core::{group}.{name}` lang file (see
|
||
|
|
boboko-core's lang/el/countries.php, lang/el/states.php) for the
|
||
|
|
DISPLAYED label only — the submitted `value` is always the untranslated
|
||
|
|
`->{$valueField}`, since table-rate-shipping/Lunar's Country lookups key
|
||
|
|
off the original English name. Falls back to the raw name when no
|
||
|
|
translation exists for the current locale (e.g. English, or a country
|
||
|
|
outside the covered set).
|
||
|
|
--}}
|
||
|
|
@props([
|
||
|
|
'name',
|
||
|
|
'label',
|
||
|
|
'options' => [],
|
||
|
|
'value' => null,
|
||
|
|
'placeholder' => null,
|
||
|
|
'required' => false,
|
||
|
|
'valueField' => 'id',
|
||
|
|
'translationGroup' => null,
|
||
|
|
])
|
||
|
|
|
||
|
|
@php
|
||
|
|
$optionLabel = function ($option) use ($translationGroup) {
|
||
|
|
if (! $translationGroup) {
|
||
|
|
return $option->name;
|
||
|
|
}
|
||
|
|
|
||
|
|
$key = "core::{$translationGroup}.{$option->name}";
|
||
|
|
|
||
|
|
return \Illuminate\Support\Facades\Lang::has($key) ? __($key) : $option->name;
|
||
|
|
};
|
||
|
|
@endphp
|
||
|
|
|
||
|
|
@php($selected = old($name, $value))
|
||
|
|
|
||
|
|
<div class="bbk-field">
|
||
|
|
<label class="bbk-field-label" for="bbk-{{ $name }}">{{ $label }}</label>
|
||
|
|
<select
|
||
|
|
name="{{ $name }}"
|
||
|
|
id="bbk-{{ $name }}"
|
||
|
|
@if ($required) required @endif
|
||
|
|
{{ $attributes->class(['bbk-field-input', 'bbk-field-input--error' => $errors->has($name)]) }}
|
||
|
|
>
|
||
|
|
@if ($placeholder)
|
||
|
|
<option value="" @selected(! $selected)>{{ $placeholder }}</option>
|
||
|
|
@endif
|
||
|
|
@foreach ($options as $option)
|
||
|
|
<option value="{{ $option->{$valueField} }}" @selected((string) $selected === (string) $option->{$valueField})>
|
||
|
|
{{ $optionLabel($option) }}
|
||
|
|
</option>
|
||
|
|
@endforeach
|
||
|
|
</select>
|
||
|
|
<p class="bbk-field-error" data-bbk-field-error="{{ $name }}" @unless ($errors->has($name)) hidden @endunless>{{ $errors->first($name) }}</p>
|
||
|
|
</div>
|