Yii-html-forms

提供:Dev Guides
移動先:案内検索

Yii-HTMLフォーム

フォームがモデルに基づいている場合、Yiiでこのフォームを作成する一般的な方法は、 yii \ widgets \ ActiveForm クラスを使用することです。 ほとんどの場合、フォームにはデータ検証に使用される対応するモデルがあります。 モデルがデータベースのデータを表す場合、モデルは ActiveRecord クラスから派生する必要があります。 モデルが任意の入力をキャプチャする場合、 yii \ base \ Model クラスから派生する必要があります。

登録フォームを作成しましょう。

ステップ1 *- *models フォルダー内で、 RegistrationForm.php というファイルを次のコードで作成します。

<?php
   namespace app\models;
   use Yii;
   use yii\base\Model;
   class RegistrationForm extends Model {
      public $username;
      public $password;
      public $email;
      public $subscriptions;
      public $photos;
     /**
 *@return array customized attribute labels
     */
      public function attributeLabels() {
         return [
            'username' => 'Username',
            'password' => 'Password',
            'email' => 'Email',
            'subscriptions' => 'Subscriptions',
            'photos' => 'Photos',
         ];
      }
   }
?>

ユーザー名、パスワード、電子メール、サブスクリプション、写真の5つのプロパティを持つ登録フォームのモデルを宣言しました。

ステップ2 *-このフォームを表示するには、 *actionRegistration メソッドを SiteController に追加します。

public function actionRegistration() {
   $mRegistration = new RegistrationForm();
   return $this->render('registration', ['model' => $mRegistration]);
}
*RegistrationForm* のインスタンスを作成し、登録ビューに渡します。 次に、ビューを作成します。

ステップ3 *-views/siteフォルダー内に、次のコードで *registration.php というファイルを追加します。

<?php
   use yii\bootstrap\ActiveForm;
   use yii\bootstrap\Html;
?>
<div class = "row">
   <div class = "col-lg-5">
      <?php $form = ActiveForm::begin(['id' => 'registration-form']); ?>
      <?= $form->field($model, 'username') ?>
      <?= $form->field($model, 'password')->passwordInput() ?>
      <?= $form->field($model, 'email')->input('email') ?>
      <?= $form->field($model, 'photos[]')->fileInput(['multiple'=>'multiple']) ?>
      <?= $form->field($model, 'subscriptions[]')->checkboxList(['a' => 'Item A',
         'b' => 'Item B', 'c' => 'Item C']) ?>
      <div class = "form-group">
         <?= Html::submitButton('Submit', ['class' => 'btn btn-primary',
            'name' => 'registration-button']) ?>
      </div>
      <?php ActiveForm::end(); ?>
   </div>
</div>

私たちは次のことを観察します-

  • * ActiveForm :: begin()関数は、フォームの開始をマークします。 * ActiveForm :: begin()*と ActiveForm :: end()関数の間のすべてのコードは *form タグ内にラップされます。
  • フォームにフィールドを作成するには、* ActiveForm :: field()メソッドを呼び出す必要があります。 すべての *inputおよびlabel タグが作成されます。 入力名は自動的に決定されます。
  • たとえば、 password 属性は _RegistrationForm [password] _ になります。 属性が配列を取るようにする場合は、属性名に[]を追加する必要があります。

ステップ4 *-Webブラウザーのアドレスバーに移動して *http://localhost:8080/index.php?r = site/registration と入力すると、フォームが表示されます。

登録