Yii2: как добавить текстовое поле в yii2

Что такое отображение textarea в yii2? Как написать это в формате yii2?

<textarea  name="downloadSourceCode" id="downloadSourceCode"></textarea>

Что такое альтернатива или способ определить textarea в yii2?


person Community    schedule 14.01.2015    source источник
comment
yiiframework.com/doc-2.0/guide-input-forms.html вам следует перечитать руководство еще раз, если у вас есть такой вопрос.   -  person user1954544    schedule 18.05.2016


Ответы (23)


Вы можете использовать Active Forms для создания таких полей, как textarea, например.

<?php $form = ActiveForm::begin(['id' => 'downloadSourceCode']); ?>
<?= $form->field($model, 'description')->textarea(['rows' => '6']) ?>
<?= Html::submitButton('Submit') ?>
<?php ActiveForm::end(); ?>

В предыдущем примере вы создаете форму с текстовой областью внутри, вы можете дать ей имя и передать модель из контроллера, чтобы показать существующее содержимое модели, если вы ее редактируете, если вы создаете новую модель, вы нужно будет создать новый объект, а затем передать его в представление.

person Qurashi    schedule 14.01.2015
comment
вы можете добавить это в массив параметров: 'id' => 'downloadSourceCode' - person Ruben; 21.01.2015

Код текстовой области в yii2 может быть создан разными способами. Это зависит от того, что вам нужно именно

Ситуация 1. У вас есть модель

произнесите текстовую область, связанную с этой моделью в активной форме

<?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'election_description')->textArea() ?>
<?php ActiveForm::end(); ?>

сгенерированный код будет

<div class="form-group field-election-election_description">
<label class="control-label" for="election-election_description">Description</label>
<textarea id="election-election_description" class="form-control" name="Election[election_description]"></textarea>    
<div class="help-block"></div>
</div>

Как вы можете видеть, метка и блок ошибок генерируются вместе с кодом текстовой области по умолчанию, поскольку это может быть полезно в практических сценариях. Итак, то, что я написал выше, будет интерпретировано как

<?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'election_description',['template'=> "{label}\n{input}\n{hint}\n{error}"])->textArea() ?>
<?php ActiveForm::end(); ?>

Измените или удалите ярлык, просто выполнив

<?= $form->field($model, 'election_description')->textArea()->label(false) ?>
<?= $form->field($model, 'election_description')->textArea()->label("Some Label") ?>

Или можно выполнить более сложную настройку, изменив шаблон,

{метка}\n{ввод}\n{подсказка}\n{ошибка}

является шаблоном по умолчанию. Однако шаблон можно настраивать. Если вы просто хотите, чтобы текстовая область переопределяла шаблон генерации кода только для текстовой области, как

{input}

таким образом

<?= $form->field($model, 'election_description',['template'=> "{input}"])->textArea() ?>

сгенерированный код будет

<div class="form-group field-election-election_description">
    <textarea id="election-election_description" class="form-control" name="Election[election_description]"></textarea>
</div>

Div, обертывающий текстовое поле, можно удалить, изменив шаблон активной формы или используя другую функцию activeTextInput.

<?= Html::activeTextInput($model, 'election_description'); ?>

сгенерированный код будет

<textarea id="election-election_description" name="Election[election_description]"></textarea>

Ситуация 2. У вас нет модели

Если у нас нет модели и мы просто хотим создать точный код, как просили, лучшим способом будет использование Html::textarea

следуйте этому формату

текстовая область ($имя, $значение = '', $options = [])

Обратитесь к этому примеру

<?php use yii\helpers\Html;?>
<?= Html::textArea('downloadSourceCode',"",['id'=>'downloadSourceCode']); ?>

Который сгенерирует код

<textarea id="downloadSourceCode" name="downloadSourceCode"></textarea>

Надеюсь это поможет

Обратитесь к этим ссылкам для получения дополнительной информации

http://www.yiiframework.com/doc-2.0/yii-widgets-activefield.html#textarea()-detail

http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#textarea()-detail

http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#activeTextarea()-detail

person Midhun    schedule 03.04.2016

Вы можете сделать это так:

<?php $form = ActiveForm::begin(['id' => 'my-form']); ?>

<?= $form->field($model, 'field_name')->textArea(['rows' => '6']) ?>
<?= Html::submitButton('Submit') ?>
<?php ActiveForm::end(); ?>
person Anisur Rahaman Sakib    schedule 16.02.2015

Использовать Textarea в шаблоне

<?= $form->field($model, 'columnName',
['template' => '
   {label}
   <div class="input-group">
      <span class="input-group-addon">
         <i class="fa fa-newspaper-o"></i>
      </span>
      {input}
   </div>
{error}{hint}'])->textarea(['rows' => 6])->hint('Max 255 characters.'); ?>
person Mahmut Aydın    schedule 08.11.2016
comment
Слишком много жестко запрограммированного HTML. Старайтесь не использовать такое кодирование в реальных проектах. Если вам нужен собственный HTML в проекте Yii2 (например, вы используете не стили Bootstrap), вы должны написать свои собственные виджеты и использовать их. - person Alexander Emelianov; 03.11.2017

Вы можете использовать приведенный ниже код

<?= $form->field($model, 'desc')->textarea(); ?>

OR

<?= $form->field($model, 'desc')->textarea()->label('Description'); ?>

OR

<?= $form->field($model, 'desc')->textarea(array('rows'=>2,'cols'=>5)); ?>

Для получения более подробной информации о поле формы.

person Kailas    schedule 21.05.2015
comment
Чем ваш ответ отличается от других? - person arogachev; 21.05.2015

Если вы сопоставляете с моделью, вам подойдет следующий код:

<?= $form->field($model, 'downloadSourceCode')->textarea() ?>
person akmnahid    schedule 16.05.2015
comment
Чем ваш ответ отличается от других? - person arogachev; 16.05.2015

Вы можете запустить следующую команду в консоли

php composer.phar require --prefer-dist yiidoc/yii2-redactor "*" 
or 
"yiidoc/yii2-redactor": "*"

for instaling Redactor see https://github.com/yiidoc/yii2-redactor

Чем вы можете проверить следующую строку в кодах

 <?= $form->field($model, 'address')->widget(\yii\redactor\widgets\Redactor::className()) ?>
person satbhai hetal    schedule 25.11.2019

Как это:

<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'die_geschichte')->textArea(array('rows'=>25, 'cols'=>50, 'readonly' => true, 'name'=>'xyz; )) ?>

<div class="form-group">
    <?= Html::submitButton('Unangemessenen Inhalt melden', ['class' => 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>
person Patricia Heimfarth    schedule 24.01.2015

Это так просто. Просто напишите это в своем ActiveForm::begin.

<?= $form->field($model, 'downloadSourceCode')->textarea(['maxlength' => 1000]) ?>

и вы можете получить свою текстовую область.

person Bhola Singh    schedule 07.04.2015
comment
Чем ваш ответ отличается от других? - person arogachev; 07.04.2015
comment
Это не имеет никакого значения. Я просто ответил на него в простой форме по пункту. Не делая его длинным. - person Bhola Singh; 07.04.2015

Если вам нужна текстовая область без указания какой-либо модели, используйте:

<?= \yii\helpers\Html::textarea('name_attribute_value') ?>

Вывод будет:

<textarea id="id_attribute_value" name="name_attribute_value"></textarea>
person Mohammed H    schedule 08.05.2015

Это просто. Именно так

<?= $form->field($model, 'notes')->textarea(); ?>
<?= $form->field($model, 'notes')->textarea()->label('Notes'); ?>
<?= $form->field($model, 'notes')->textarea(['rows'=>2,'cols'=>5]); ?>
person sosono88    schedule 05.03.2016

Это может помочь вам

Текстовая область

<?= $form->field($model, 'desc')->textarea(['rows'=>2,'cols'=>5,'id'=>'textarea_id','class'=>'form-control textarea_class']); ?>
<?= $form->field($model, 'desc')->textarea()->label('Description'); ?>

Текст

<?= $form->field($model,'name'); ?>
<?= $form->field($model, 'name')->textInput()->hint('Please enter your name')->label('Name') ?>

Пароль

<?= $form->field($model, 'password')->input('password') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= $form->field($model, 'password')->passwordInput()->hint('Password should be within A-Za-z0-9')->label('Password Hint') ?>

Файл

<?= $form->field($model, 'uploadFile')->fileInput() ?>
<?php echo $form->field($model, 'uploadFile[]')->fileInput(['multiple'=>'multiple']); ?>

Радио

<?= $form->field($model, 'gender')  ->radio(array('label'=>''))
                                        ->label('Gender'); ?>

<?= $form->field($model, 'gender')->radio(array(
                                'label'=>'',
                                'labelOptions'=>array('style'=>'padding:5px;')))
                                ->label('Gender'); ?>
<?= $form->field($model, 'population')->radioList(array('1'=>'One',2=>'Two')); ?>

Список

<?= $form->field($model, 'population')-> listBox(
            array('1'=>'1',2=>'2',3=>3,4=>4,5=>5),
            array('prompt'=>'Select','size'=>3)
            ); ?>
<?= $form->field($model, 'population')-> listBox(
            array('1'=>'1',2=>'2',3=>3,4=>4,5=>5),
            array('disabled' => true,'style'=>'background:gray;color:#fff;'))
            ->label('Gender'); ?>
person Kalpesh Desai    schedule 16.01.2017

Это вот так.

    <?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'downloadSourceCode')->textArea(['maxlength' =>     true]) ?>
    <?php ActiveForm::end(); ?>
person Sameera Sampath    schedule 18.03.2017

Шаг 1: В файле просмотра не забудьте добавить класс ActiveForm, используйте yii\bootstrap\ActiveForm;

Шаг 2. Теперь добавьте текстовую область, как показано ниже.

field($model, 'body')->textarea(['rows' => 6]) ?>
person Anubhav Tiwari    schedule 12.05.2017

Этот код добавляется в файл представлений:

<div class="col-md-12 mb-10">
                        <label class="control-label" for="cancellesson-cancel_note">Cancel Note</label>
                        <textarea id="cancellesson_cancel_note" class="form-control" name="cancellesson[cancel_note]" placeholder="Enter Cancel Note" aria-required="true"></textarea>
</div>
person Community    schedule 05.02.2019

 <?php $form = ActiveForm::begin(); ?>
 <?= $form->field($model, 'description')->textarea(['rows' => '5']) ?>
 <?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
 <?php ActiveForm::end(); ?>

Эта строка для текстовой области

 <?= $form->field($model, 'description')->textarea(['rows' => '5']) ?>
person Prashob km    schedule 02.07.2019

С помощью активной формы Yii2 мы можем создать текстовое поле в форме.

$form->field($model, 'fieldName')->textarea(array('rows'=>2,'cols'=>5));
person RAGHAV SAXENA    schedule 22.12.2020

Я не совсем уверен, но activeTextarea() с опцией attr это хорошо

person Вячеслав Гореев    schedule 14.01.2015

есть альтернативное расширение с именем виджет kartik-v:

use kartik\widgets\ActiveForm;
echo ActiveForm::begin();
echo $form->field($model, 'username');

просто установить с композитором

person seseorank    schedule 01.05.2016

С моделью:

<?= $form->field($model, 'user')->textArea(['rows' => 6]) ?>

Без модели:

<?= Html::textarea('sourceCode',null,['rows'=>6]) ?>
person Pratik Karmakar    schedule 26.09.2017

Он имеет 2 возможности. FOR теперь сделайте это: field($model, 'user')->textArea(['rows' => 6]) ?>

person Tomaš vaclav    schedule 25.12.2017

person    schedule
comment
Используя ['maxlength' => 300'], мы можем установить максимальную длину для текстовой области, а также контролировать ширину и высоту текстовой области, используя ['rows' => 6, 'cols' => 50] и используя ['placehoder'= ›'мы можем установить наше собственное сообщение'] - person Rahul Vetal; 20.03.2017

person    schedule
comment
добавить некоторые пояснения к вашему ответу - person Aldeguer; 11.10.2017