unclead / yii2-multiple-input

Yii2 widget for handle multiple inputs for an attribute of model
https://unclead.github.io/yii2-multiple-input/
BSD 3-Clause "New" or "Revised" License
393 stars 127 forks source link

Options для input #346

Closed nohnaimer closed 3 years ago

nohnaimer commented 3 years ago

@unclead подскажите, как добавить настройки для input используя widget, например:

                    <?= $form->field($model, 'email_aliases')->widget(MultipleInput::class, [
                        'allowEmptyList' => false,
                        'addButtonOptions' => [
                            'class' => 'btn btn-outline-success',
                        ],
                        'options' => [
                            'disabled' => true,
                        ],
                    ]) ?>

Например, заблокировать MultipleInput? Из InputWidget есть:

/**
     * @var array the HTML attributes for the input tag.
     * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
     */
    public $options = [];

но не работает. Может это как-то делается по-другому?

unclead commented 3 years ago

@nohnaimer если все еще актуально, то я думаю нужно явно объявить колонку через columns и уже там использовать options

options array|Closure: the HTML attributes for the input, you can set it as array or an anonymous function with the following signature:

на будущее лучше писать на английском, чтобы кто нибудь из сообщества мог помочь

nohnaimer commented 3 years ago

@unclead а полностью все колонки заблокировать как можно?

unclead commented 3 years ago

@nohnaimer никак, не было такого запроса за 5 лет :)

nohnaimer commented 3 years ago

@unclead понял, буду думать как кастылить…

nohnaimer commented 3 years ago

Хотя если поле вот такое:

                    <?= $form->field($model, 'email_aliases')->widget(MultipleInput::class, [
                        'allowEmptyList' => false,
                        'addButtonOptions' => [
                            'class' => 'btn btn-outline-success',
                        ],
                    ]) ?>

странный костыль получается...

unclead commented 3 years ago

@nohnaimer а задача то какая? если хочется заблокировать поля формы из кода, то как они будут разблокироваться? наверняка будет код на js, тогда почему бы и блокировку полей не сделать через js.

nohnaimer commented 3 years ago

@unclead проект на yii2, есть поле в базе PostgreSQL типа array. Вот надо его показывать, но редактировать надо запретить.

unclead commented 3 years ago

@nohnaimer а зачем вообще тогда использовать виджет? не проще вывести через цикл в div? Ну а если нужно дать возможность редактировать, то я бы через js все разрулил (после отрисовки html установил нужным инпутам сам свойство disabled, а по нажатию на кнопку редактировать сбрасывать его). Не бывает супер универсальных инструментов, иногда нужно и самому код пописать 😄

nohnaimer commented 3 years ago

@unclead так и сделал - убрал виджет. Просто получается, что options не работает, вернее работает не для того для чего их делали - это надо бы хотя бы в phpDoc пометить 😉