Створення дії
=============

Коли готова модель, можна приступати до написання коду для роботи з нею. 
Всю логіку обробки ми поміщаємо в дії контролера. 
Для форми авторизації, наприклад, нам буде потрібно наступний код:

~~~
[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 форму з необхідними полями.