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 と入力すると、フォームが表示されます。