Yii фреймворкын үйренеміз (шәйнектен шәйнектерге). Формалармен жұмыс.
Бұл мақалада yii-де формалармен жұмыс істеп үйренеміз. Ешқандай лирикасыз кеттік q(^_^)p
Формаларсыз веб бағдарлама өте аз шығар. Олар әдетте пайдаланушыдан мәліметтер алу үшін пайдаланылады (пайдаланушының аты, паролі, т.б.). Yii формамен жұмыс жасауға көптеген ыңғайлылықтар мен дайын құралдар ұсынады. Біз ең қарапайым форма пайдаланушының аты мен почтасы енгізілетін форма құрайық.
Формамен жұмыс жасау үшін ең бірінші біз модель құруымыз керек. Естеріңізде болса модель ол деректермен жұмыс жасайтын компонент. Яғни кез-келген пайдаланушы туралы мәліметті сақтау үшін модель қажет.
Сонымен, models/EntryForm.php файлын құрып оған мынандай код жазыңыз:
Осы біздің моделіміз. Модельде екі айнымалы байр: name, email. Олар сәйкесінше пайдаланушы аты мен почтасы үшін. Сонымен бірге модельде rules() функциясын (амалын) көріп тұрмыз. Ол әр мәліметтер үшін шектеулерді көрсету үшін қажет. Мұнда келесідей шектеулер көрсетілген:
Мәліметтердің бұл шектеулерге жауап беретіні не бермейтіні validate() функциясы арқылы тексеріледі. Мысалы:
Енді құрылған модельді пайдаланатын әрекет құруымыз керек. Әрекетті entry деп атап оны site контроллерінің ішінде құрамыз (алдыңғы мақалада құрылған контроллерге қоссаңыз да болады).
Бірінші Yii::$app->request->post() арқылы мәліметтерді $_POST айнымалысынан алуға әрекет жасаймыз, егер мәліметтер бар болса, $model->validate() арқылы мәліметтердің дұрыстығын тексереміз.
Егер барлығы дұрыс болса пайдаланушыға «entry-confirm» көрсетілімін қайтарамыз, ол көрсетілім пайдаланушыға мәліметтер қабылданғанын айту үшін қажет. Егер олай болмаса, пайдаланушыға «entry» көрсетілімін қайтарамыз, яғни, бастапқы форма, егер қателіктер болса, ол сол формада көрсетіледі.
Сонымен, әрекет пен модель дайын. Енді екі көрсетілімді (entry-confirm, entry) құру қалды.
«entry-confirm» жай ғана, пайдаланушы енгізген мәліметтерді көрсетеді, оны «views/site/entry-confirm.php» файлында құрамыз.
«entry» форманы көрсетуге арналған, оны «views/site/entry.php» файлында құрамыз:
Мұнда ActiveForm деп аталатын widget пайдаланылған. Виджеттер туралы келесі мақалаларда жазылады.
Браузеріңізде мынандай адрес енгізіңіз:
Енді, ештеңе енгізбей, «Сақтау» батырмасын басыңыз:
Ал егер дұрыс мәліметтер енгізіп, «Сақтау» десек:
Ағылшынша атауларға көзіңіз түсіп тұрған шығар, оны көрсетілімде былай өзгерте аласыз:
Бұл мақалада формаларды құру негіздерін қарастырдық. Ақырындап шынайы веб бағдарламаға ұқсайтындау бірнәрсе шығып жатыр )). Келесі мақалада көріскенше.
Формаларсыз веб бағдарлама өте аз шығар. Олар әдетте пайдаланушыдан мәліметтер алу үшін пайдаланылады (пайдаланушының аты, паролі, т.б.). Yii формамен жұмыс жасауға көптеген ыңғайлылықтар мен дайын құралдар ұсынады. Біз ең қарапайым форма пайдаланушының аты мен почтасы енгізілетін форма құрайық.
Формаға қажет модельді құру
Формамен жұмыс жасау үшін ең бірінші біз модель құруымыз керек. Естеріңізде болса модель ол деректермен жұмыс жасайтын компонент. Яғни кез-келген пайдаланушы туралы мәліметті сақтау үшін модель қажет.
Сонымен, models/EntryForm.php файлын құрып оған мынандай код жазыңыз:
<?php
namespace app\models;
use yii\base\Model;
class EntryForm extends Model {
public $name;
public $email;
public function rules() {
return [
[['name', 'email'], 'required'],
['email', 'email'],
];
}
}
Осы біздің моделіміз. Модельде екі айнымалы байр: name, email. Олар сәйкесінше пайдаланушы аты мен почтасы үшін. Сонымен бірге модельде rules() функциясын (амалын) көріп тұрмыз. Ол әр мәліметтер үшін шектеулерді көрсету үшін қажет. Мұнда келесідей шектеулер көрсетілген:
- пайдаланушы аты да почта да міндетті, яғни, екеуі де көрсетілуі керек
- почта атының дұрыстығын тексеру (мысалы, @ символының бар болуын)
Мәліметтердің бұл шектеулерге жауап беретіні не бермейтіні validate() функциясы арқылы тексеріледі. Мысалы:
<?php
$model = new EntryForm();
$model->name = 'Бозбала';
$model->email = 'bad';
if ($model->validate()) {
// мәліметтер дұрыс
} else {
// мәлімет қате енгізілді
// Не қате енгізілгенін көру үшін $model->getErrors() функциясын пайдаланыңыз
}
Әрекетті құру
Енді құрылған модельді пайдаланатын әрекет құруымыз керек. Әрекетті entry деп атап оны site контроллерінің ішінде құрамыз (алдыңғы мақалада құрылған контроллерге қоссаңыз да болады).
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\EntryForm;
class SiteController extends Controller {
// ...кодтар...
public function actionEntry() {
$model = new EntryForm;
// пайдаланушы жіберген мәліметті қабылдаймыз және тексереміз
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
// егер енгізілген мәліметтер дұрыс болса, пайдаланушыға мәлімет сақталғанын айтамыз
return $this->render('entry-confirm', ['model' => $model]);
} else {
// олай болмаса қайтадан форманы және қате туралы мәліметтерді көрсетеміз
return $this->render('entry', ['model' => $model]);
}
}
}
Бірінші Yii::$app->request->post() арқылы мәліметтерді $_POST айнымалысынан алуға әрекет жасаймыз, егер мәліметтер бар болса, $model->validate() арқылы мәліметтердің дұрыстығын тексереміз.
Егер барлығы дұрыс болса пайдаланушыға «entry-confirm» көрсетілімін қайтарамыз, ол көрсетілім пайдаланушыға мәліметтер қабылданғанын айту үшін қажет. Егер олай болмаса, пайдаланушыға «entry» көрсетілімін қайтарамыз, яғни, бастапқы форма, егер қателіктер болса, ол сол формада көрсетіледі.
Көрсетілімдерді құру
Сонымен, әрекет пен модель дайын. Енді екі көрсетілімді (entry-confirm, entry) құру қалды.
«entry-confirm» жай ғана, пайдаланушы енгізген мәліметтерді көрсетеді, оны «views/site/entry-confirm.php» файлында құрамыз.
<?php
<?php
use yii\helpers\Html;
?>
<p>Сіз келесі мәліметтерді енгіздіңіз:</p>
<ul>
<li><label>Пайдаланушының аты</label>: <?= Html::encode($model->name) ?></li>
<li><label>Почтасы</label>: <?= Html::encode($model->email) ?></li>
</ul>
«entry» форманы көрсетуге арналған, оны «views/site/entry.php» файлында құрамыз:
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'email') ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
Мұнда ActiveForm деп аталатын widget пайдаланылған. Виджеттер туралы келесі мақалаларда жазылады.
Тексеріп көреміз
Браузеріңізде мынандай адрес енгізіңіз:
http://hostname/index.php?r=site/entry
Енді, ештеңе енгізбей, «Сақтау» батырмасын басыңыз:
Ал егер дұрыс мәліметтер енгізіп, «Сақтау» десек:
Ағылшынша атауларға көзіңіз түсіп тұрған шығар, оны көрсетілімде былай өзгерте аласыз:
<?= $form->field($model, 'name')->label('Сіздің атыңыз') ?>
<?= $form->field($model, 'email')->label('Почтаңыз') ?>
Қорытынды
Бұл мақалада формаларды құру негіздерін қарастырдық. Ақырындап шынайы веб бағдарламаға ұқсайтындау бірнәрсе шығып жатыр )). Келесі мақалада көріскенше.
-
+3