Files
yii/docs/guide/uk/form.action.txt
2012-03-05 20:37:50 -05:00

58 lines
4.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Створення дії
=============
Коли готова модель, можна приступати до написання коду для роботи з нею.
Всю логіку обробки ми поміщаємо в дії контролера.
Для форми авторизації, наприклад, нам буде потрібно наступний код:
~~~
[php]
public function actionLogin()
{
$model=new LoginForm;
if(isset($_POST['LoginForm']))
{
// отримуємо дані від користувача
$model->attributes=$_POST['LoginForm'];
// перевіряємо отримані дані і, якщо результат перевірки позитивний,
// перенаправляємо користувача на попередню сторінку
if($model->validate())
$this->redirect(Yii::app()->user->returnUrl);
}
// рендеримо представлення
$this->render('login',array('model'=>$model));
}
~~~
Спочатку ми створюємо екземпляр моделі `LoginForm`, потім, якщо дані форми були відправлені,
заповнюємо `$model` даними `$_POST['LoginForm']`. Потім перевіряємо отримані дані і, якщо все нормально,
перенаправляємо користувача на сторінку, для доступу до якої потрібно авторизуватися, тобто ту сторінку,
яка відправила користувача на сторінку авторизації. Якщо ж результат перевірки негативний або дія
виконується вперше, то відображаємо користувачу представлення `login`, яке розглянемо в наступному розділі.
> Tip|Підказка: У дії `login` ми використовуємо `Yii::app()->user->returnUrl`, щоб отримати URL сторінки, яка вимагала авторизацію. Компонент `Yii::app()->user` є підкласом [CWebUser], який дозволяє отримати інформацію, що зберігається у сесії користувача (наприклад імʼя користувача, статус та ін.) Детально ознайомитися з темою можна в розділі [Аутентифікація і авторизація](/doc/guide/topics.auth).
Звернемо особливу увагу на такий вираз у дії `login`:
~~~
[php]
$model->attributes=$_POST['LoginForm'];
~~~
Як ми вже говорили в підрозділі [Безпечне присвоювання значень атрибутів](/doc/guide/form.model#securing-attribute-assignments), цей вираз заповнює модель даними, які вводить користувач. Властивість `attributes` визначається класом [CModel], який очікує отримати масив пар імʼя-значення, щоб потім привласнити кожному атрибуту моделі відповідне значення. Отже, якщо `$_POST['LoginForm']` містить такий масив, то вираз, який ми навели вище, буде еквівалентно наступному коду (вважаємо, що масив містить всі потрібні нам атрибути):
~~~
[php]
$model->username=$_POST['LoginForm']['username'];
$model->password=$_POST['LoginForm']['password'];
$model->rememberMe=$_POST['LoginForm']['rememberMe'];
~~~
> Note|Примітка: Для того, щоб `$_POST['LoginForm']` повернув нам масив замість рядка,
потрібно слідувати правилам іменування полів введення в представленні. Так поле, відповідне атрибуту `a`
в класі моделі `C`, має називатися `C[a]`. У нашому прикладі для назви поля,
відповідного атрибуту `username`, ми будемо використовувати імʼя `LoginForm[username]`.
Тепер нам залишилося тільки створити представлення `login`, яке буде містити HTML форму з необхідними полями.
<div class="revision">$Id: form.action.txt 1837 2010-02-24 22:49:51Z qiang.xue $</div>