Створення дії ============= Коли готова модель, можна приступати до написання коду для роботи з нею. Всю логіку обробки ми поміщаємо в дії контролера. Для форми авторизації, наприклад, нам буде потрібно наступний код: ~~~ [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 форму з необхідними полями.