Сделаем форму с полем имени и email на Yii фрэймворке
Насколько я понял, HTML форму можно создавать несколькими способами. Способ в лоб – просто написать
1 2 3 4 5 6 |
<form class="myform" style="width: 300px; border: 1px dotted red; margin: auto;" action="http://digital-flame.ru/myscripts/entrance.php" method="GET"> <div style="padding: 10px;">Логин: <span style="float: right;"><input name="user_name" size="50" type="text" /></span></div> <div style="padding: 10px;">Пароль:<span style="float: right;"> <input name="user_year" size="50" type="text" /></span></div> <div style="position: relative; left: 70px;"><input name="submit_form" type="submit" value="Отправить" /></div> </form> |
И мы получим что-то вроде
Результат кода
Но в этом способе – многое придется делать в ручную. Собственно за прием и обработку данных будет ответственен скрипт, указанный в параметре action
1 |
action="http://digital-flame.ru/myscripts/entrance.php" |
А что в Yii? В Yii есть много готовых штук. Посмотрим, как можно сделать форму в Yii.
ШАГ 1 – создание модели
Создаем модель. Создадим здесь свой класс myForm на основе \yii\base\Model
yii-basic-app-2.0.9\basic\models\myForm.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php namespace app\models; class myForm extends \yii\base\Model { public $name; public $email; public function rules(){ return [ [['name','email'],'required','message'=>'Поле не заполнено'], ['email','email', 'message'=>'Некорректный Email адрес'] ]; } }; |
ШАГ 2 – создаем представление
Форму будем рисовать на основе компонента ActiveForm
yii-basic-app-2.0.9\basic\views\site\form.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php use yii\widgets\ActiveForm; use yii\helpers\Html; use app\models\myForm; ?> // Here we handle results of sending data <?php if ($name){ echo "Вы ввели имя ".$name." и email ".$email; }; ?> // Here we create the form... <?php $f=ActiveForm::begin(); ?> <?=$f->field($form,'name') ?> <?=$f->field($form,'email') ?> <?=Html::submitButton('Отправить')?> <?php $f=ActiveForm::end(); ?> |
ШАГ 3 – Создаем контроллер
Добавляем метод в SiteController.php
yii-basic-app-2.0.9\basic\controllers\SiteController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
public function actionForm(){ $form = new myForm(); // if data loaded and validated... if ( $form->load(Yii::$app->request->post()) && $form->validate() ){ //$name=$form->name; //$email=$form->email; $name=Html::encode($form->name); $email=Html::encode($form->email); } else { $name=''; $email=''; } return $this->render('form', [ 'form'=>$form, 'name'=>$name, 'email'=>$email ]); } |