1

次のような選択フォーム入力が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.idarrayBancos.codigoおよびで一致が検索されますarrayBancos.text) ため、簡単にするために select 入力に Javascript を入力しました。

1 つのことを除いて、すべて正常に動作します。ページが検証から取得され、無効な入力が検出された場合、このフィールドの値は維持されません (他のすべては問題ありません)。おそらく、選択にまだオプション値がないため、設定できないため、jQuery がロードされ、プラグインが初期化されたときにのみ、オプションが使用可能になります。

それで...これを回避する考えはありますか?たぶん<options>、HTML に を設定し、data-*属性を使用して上記の配列のようなものに変換しますか?

4

1 に答える 1