次のような選択フォーム入力が1つあります。
<div class="form-group col-md-3 @if($errors->first('contas.0.banco')) has-error @endif">
{!! Form::label('contas[0][banco]', 'Nome do Banco') !!}
{{ Form::select('contas[0][banco]', [] , null , ['class' => 'form-control select-banco']) }}
<small class="text-danger">{{ $errors->first('contas.0.banco') }}</small>
</div>
Select2プラグインを使用してJavaScriptでロードしているため、値は空です。
var arrayBancos = [
{ id: 'HSBC', codigo: '399', text: 'HSBC Bank Brasil', site: 'www.hsbc.com.br', mime: '.png' },
{ id: 'Santander', codigo: '033', text: 'Banco Santander', site: 'www.santander.com.br', mime: '.png' },
{ id: 'Citibank', codigo: '745', text: 'Banco Citibank', site: 'www.citibank.com.br', mime: '.jpg' }
];
$.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
selectElement.select2({
data: arrayBancos,
language: 'pt-BR',
matcher: oldMatcher(matchStart),
escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
templateResult: formatSelecaoBanco,
templateSelection: formatBanco,
dropdownCss: { 'min-width': '350px' }
});
});
ご覧のとおり、プラグインにはいくつかのカスタマイズが追加されています (最も重要なものは、検索で 、arrayBancos.id
、arrayBancos.codigo
およびで一致が検索されますarrayBancos.text
) ため、簡単にするために select 入力に Javascript を入力しました。
1 つのことを除いて、すべて正常に動作します。ページが検証から取得され、無効な入力が検出された場合、このフィールドの値は維持されません (他のすべては問題ありません)。おそらく、選択にまだオプション値がないため、設定できないため、jQuery がロードされ、プラグインが初期化されたときにのみ、オプションが使用可能になります。
それで...これを回避する考えはありますか?たぶん<options>
、HTML に を設定し、data-*
属性を使用して上記の配列のようなものに変換しますか?