Yii2: comment ajouter textarea dans yii2

Quelle est la cartographie de textarea dans yii2 ? Comment écrire cela au format yii2?

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

Quelle est une alternative ou une façon de définir textarea dans yii2?

25
demandé sur ram 2015-01-14 17:35:47

21 réponses

Vous pouvez utiliser des formulaires actifs pour créer des champs comme textarea par exemple

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

Dans le previouse exemple vous créez un formulaire avec un textarea à l'intérieur, vous pouvez lui donner un nom et de passer le modèle du contrôleur pour afficher le contenu existant du modèle si vous le modifiez, si vous créez un nouveau modèle, vous aurez besoin de créer un nouvel objet et de le passer à la vue.

80
répondu Qurashi 2017-01-19 11:16:13

Le code de zone de texte dans yii2 pourrait être créé de plusieurs façons cela dépend de ce dont vous avez besoin exactement

Situation 1 vous avez un modèle

Disons la zone de texte connectée à ce modèle sous une forme Active

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

Le Code généré sera

<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>

Comme vous pouvez le voir label et error block est généré avec le code textarea par défaut car cela pourrait être utile dans des scénarios pratiques .donc ce que j'ai écrit ci-dessus sera interprété comme

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

Modifiez ou supprimez l'étiquette en faisant simplement

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

Ou une personnalisation plus avancée pourrait être effectuée en modifiant le modèle,

"{label}\n{entrée}\n{indice}\n{erreur}"

Est le modèle par défaut .Cependant, le modèle est personnalisable, si vous voulez juste que la zone de texte ne remplace que le modèle de génération de code pour la zone de texte comme

"{entrée}"

Ainsi

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

Le Code généré sera

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

L'emballage Div du texte déposé peut être supprimé en modifiant le modèle du formulaire actif ou en utilisant une autre fonction activeTextInput

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

Le Code généré sera

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

Situation 2 Vous n'avez pas de Modèle

Si nous n'avons pas un modèle et vous voulez juste pour créer le code exact, comme demandé meilleure façon est d'utiliser Html::textarea

Suivez ce format

Textarea ( $nom, $valeur = ", $options = [] )

Référez-vous à cet exemple

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

, Qui va générer un code

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

J'espère que cela aide

Reportez-vous à ces liens pour plus d'informations

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

9
répondu Midhun 2018-04-01 15:22:33

Vous pouvez faire ceci comme:

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

<?= $form->field($model, 'field_name')->textArea(['rows' => '6']) ?>
<?= Html::submitButton('Submit') ?>
<?php ActiveForm::end(); ?>
3
répondu Anisur Rahaman Sakib 2015-02-16 13:05:49

Utiliser Textarea dans le modèle

<?= $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.'); ?>
3
répondu Mahmut Aydın 2016-11-08 14:51:37

Vous pouvez utiliser le code ci-dessous

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

Ou

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

Ou

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

Pour plus de détails sur un champ de formulaire.

2
répondu Kailas 2015-05-24 05:47:48

Si vous mappez avec le modèle, le code suivant devrait être correct pour vous:

<?= $form->field($model, 'downloadSourceCode')->textarea() ?>
1
répondu akmnahid 2015-05-17 02:39:52
<?= $form->field($model, 'field_name')->textArea(['maxlength' => 300, 'rows' => 6, 'cols' => 50,'placeholder'=>'Enter Message Here.....']) ?>
1
répondu Rahul Vetal 2017-03-20 18:09:42

Comme ceci:

<?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(); ?>
0
répondu Patricia Beier 2015-01-24 09:55:53

C'est si simple. Il suffit de l'écrire comme ceci dans votre ActiveForm::begin.

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

Et vous pouvez obtenir votre zone de texte.

0
répondu Bhola Singh 2015-04-07 10:27:46

Si vous voulez textarea sans spécifier de modèle, Utilisez:

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

La sortie sera:

<textarea id="id_attribute_value" name="name_attribute_value"></textarea>
0
répondu Habeeb Perwad 2015-05-08 09:00:26

C'est simple. Juste comme ça

<?= $form->field($model, 'notes')->textarea(); ?>
<?= $form->field($model, 'notes')->textarea()->label('Notes'); ?>
<?= $form->field($model, 'notes')->textarea(['rows'=>2,'cols'=>5]); ?>
0
répondu sosono88 2016-03-05 04:25:35

Cela peut vous aider

Zone de Texte

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

Texte

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

Mot de passe

<?= $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') ?>

Fichier

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

Radio

<?= $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')); ?>

Liste

<?= $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'); ?>
0
répondu Kalpesh Desai 2017-01-16 05:12:42

C'est comme ça.

    <?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'downloadSourceCode')->textArea(['maxlength' =>     true]) ?>
    <?php ActiveForm::end(); ?>
0
répondu Sameera Sampath 2017-03-18 14:58:18
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'descrip', ['options' => ['class' => 'custom-class']])->textArea(['maxlength' => true, 'placeholder'=>'Invoice Address', "class"=>'form-control']) ?>
<?php $form = ActiveForm::end(); ?>

**You can Also add Tinymce widget instead of text area.**

<?= $form->field($model, 'club_description')->widget(TinyMce::className(), [
    'options' => ['rows' => 4],
    //'language' => 'EN',
    'clientOptions' => [
        'plugins' => [
            "advlist autolink lists link charmap print preview anchor",
            "searchreplace visualblocks code fullscreen",
            "insertdatetime media table contextmenu paste"
        ],
        'toolbar' => "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
    ]
]);?>

**Namespace: use dosamigos\tinymce\TinyMce;
Reference: https://github.com/2amigos/yii2-tinymce-widget**
0
répondu Ashok Kumar 2017-04-07 17:49:42

Étape 1: dans votre fichier de vue, n'oubliez pas d'ajouter la classe ActiveForm utilisez yii \ bootstrap \ ActiveForm;

Étape 2: Maintenant, ajoutez la zone de texte comme ci-dessous dans la vue

champ($model, 'body')->textarea(['rows' => 6]) ?>
0
répondu Anubhav Tiwari 2017-05-12 11:52:03
<?= $form->field($model, 'description')->textarea(['rows' => '2']) ?>
0
répondu aarush sasgohar 2017-10-11 12:30:13

Je ne suis pas assez sûr, mais activeTextarea () avec l'option attr est sympa

-1
répondu Вячеслав Гореев 2015-01-14 14:41:17

Il existe une extension alternative nommée Kartik-V widget:

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

Installez simplement avec composer

-1
répondu seseorank 2016-05-01 17:00:05
 <?php $form = ActiveForm::begin(); ?>
 <?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
 <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
 <?php $form = ActiveForm::end(); ?>
-1
répondu Jaya Kumari 2016-07-28 13:21:38

Avec Le Modèle:

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

Sans Modèle:

<?= Html::textarea('sourceCode',null,['rows'=>6]) ?>
-1
répondu Pratik Karmakar 2017-09-26 11:09:20

Il a 2 possibilités. Pour l'instant faites ceci: champ($model, 'utilisateur')->textArea(['rows' => 6]) ?>

-2
répondu Tomaš vaclav 2017-12-25 06:57:21