フォームを扱う ============== > Note|注意: この節はまだ執筆中です。 Yii においてフォームを使用する主たる方法は [[yii\widgets\ActiveForm]] によるものです。 フォームがモデルに基づくものである場合はこの方法を優先すべきです。 これに加えて、[[yii\helpers\Html]] にはいくつかの有用なメソッドがあり、通常は、あらゆるフォームにボタンやヘルプテキストを追加するのに使うことが出来ます。 モデルに基づくフォームを作成する場合、最初のステップは、モデルそのものを定義することです。 モデルは、アクティブレコードクラス、あるいは、もっと汎用的な Model クラスから派生させることが出来ます。 このログインフォームの例では、汎用的なモデルを使用します。 ```php use yii\base\Model; class LoginForm extends Model { public $username; public $password; /** * @return array 検証規則 */ public function rules() { return [ // username と password はともに必須 [['username', 'password'], 'required'], // password は validatePassword() によって検証される ['password', 'validatePassword'], ]; } /** * パスワードを検証する * このメソッドがパスワードのインライン検証に使用される */ public function validatePassword() { $user = User::findByUsername($this->username); if (!$user || !$user->validatePassword($this->password)) { $this->addError('password', 'Incorrect username or password.'); } } /** * 提供された username と password でユーザをログインさせる。 * @return boolean ユーザのログインが成功したかどうか */ public function login() { if ($this->validate()) { $user = User::findByUsername($this->username); return true; } else { return false; } } } ``` コントローラはこのモデルのインスタンスをビューに渡し、ビューでは [[yii\widgets\ActiveForm|ActiveForm]] ウィジェットが使われます。 ```php use yii\helpers\Html; use yii\widgets\ActiveForm; 'login-form', 'options' => ['class' => 'form-horizontal'], ]) ?> = $form->field($model, 'username') ?> = $form->field($model, 'password')->passwordInput() ?>