6

フォーム ビューを作成しています。公式のタブ ウィジェットを使用して、フォーム フィールドをタブ構造で整理したいと考えています。

アクティブなフォーム フィールドを含む div 要素の ID (またはクラス) でタブ ウィジェットを初期化することは可能ですか?

4

3 に答える 3

6

それを管理する方法の一例は、次のようにしています。

  1. まず、お問い合わせフォームをタブごとに 1 つのビュー ファイルに分割します。
  2. ActiveForm::begin() と ActiveForm::end() を Tabs::widget() の周りに配置します。
  3. パラメータ $model および $form を使用して、コンタクトフォームページをコンテンツにレンダリングします

コード例:

ビュー/サイト/contact.php

<?php

/* @var $this yii\web\View */
$this->title = 'Contact';

use yii\bootstrap\Tabs;
use yii\bootstrap\ActiveForm;
?>


<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
<?= Tabs::widget([
        'items' => [
            [
                'label' => 'One',
                'content' => $this->render('contact_form1', ['model' => $model, 'form' => $form]),
                'active' => true
            ],
            [
                'label' => 'Two',
                'content' => $this->render('contact_form2', ['model' => $model, 'form' => $form]),
            ],
        ]]);
 ?>
    <?php ActiveForm::end(); ?>

ビュー/サイト/contact_form1.php

<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'subject') ?>

ビュー/サイト/contact_form2.php

<?php
use yii\helpers\Html;
use yii\captcha\Captcha;
?>

<?= $form->field($model, 'body')->textArea(['rows' => 6]) ?>
<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
    'template' => '<div class="row"><div class="col-lg-3">{image}</div><div    class="col-lg-6">{input}</div></div>',
]) ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
</div>

お役に立てれば!

于 2015-03-16T20:55:41.180 に答える
0

contact.php グローバル $form; の先頭に追加するだけです。すべて正常に動作します。

于 2016-11-14T16:19:54.713 に答える