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?
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.
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
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(); ?>
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.'); ?>
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.
Si vous mappez avec le modèle, le code suivant devrait être correct pour vous:
<?= $form->field($model, 'downloadSourceCode')->textarea() ?>
<?= $form->field($model, 'field_name')->textArea(['maxlength' => 300, 'rows' => 6, 'cols' => 50,'placeholder'=>'Enter Message Here.....']) ?>
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(); ?>
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.
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>
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]); ?>
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'); ?>
C'est comme ça.
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'downloadSourceCode')->textArea(['maxlength' => true]) ?>
<?php ActiveForm::end(); ?>
<?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**
É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]) ?><?= $form->field($model, 'description')->textarea(['rows' => '2']) ?>
Je ne suis pas assez sûr, mais activeTextarea () avec l'option attr est sympa
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
<?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(); ?>
Avec Le Modèle:
<?= $form->field($model, 'user')->textArea(['rows' => 6]) ?>
Sans Modèle:
<?= Html::textarea('sourceCode',null,['rows'=>6]) ?>
Il a 2 possibilités. Pour l'instant faites ceci:
champ($model, 'utilisateur')->textArea(['rows' => 6]) ?>