Yii2 ActiveForm. Частина 1

31

Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених знайомству з фреймворком Yii2. У цій та наступних статтях ми детальніше розглянемо роботу з віджетом Yii2 ActiveForm. Зокрема, ми дізнаємося про різні методи, що дозволяють промалювати форму та її поля – це методи begin, field, checkbox та інші.

Як ви пам’ятаєте, з формами ми вже працювали в попередніх статтях: створювали свою форму, брали з неї дані, додавали форму в модальний і т. д. Нагадаю, що для створення форми, нам знадобляться наступні речі: модель форми, action контролера, який буде передавати цю модель подання та приймати дані форми, ну і саме подання, в якому форма буде отрисована.

Для показу форми використовується віджет yii\widgets\ActiveForm. Також часто для роботи з додатковими елементами форми (наприклад, кнопка відправки форми) використовується хэлпер yii\helpers\Html. У даній статті нас в першу чергу цікавлять методи віджета ActiveForm, з якими ми і будемо працювати.

Для роботи давайте створимо форму авторизації, в якій буде поле для введення логіна типу text, поле для введення пароля типу password і поле типу checkbox для запам’ятовування авторизованого користувача. До речі, повноцінний приклад створення такої форми в Yii2 вже є з коробки відразу після установки. Ми створимо свій, трохи спрощений приклад.

Давайте створимо модель форми – TestForm:

У ній ми оголосили у вигляді властивостей моделі майбутні поля. Також прописали правила валідації, в яких поля username і password є обов’язковими, а поле rememberMe може приймати тільки логічне значення, тобто відповідає за перемикач (чекбокс).

Тепер отримаємо об’єкт класу в дії контролера – SiteController::actionTest.

public function actionTest(){
$model = new TestForm();
return $this->render(‘test’, compact(‘model’));
}

Ну і, нарешті, створимо вид test в папці контролера views\site.

У вигляді ми поки що в цілях тестування роздрукували об’єкт моделі і, відповідно, побачимо його властивості на екрані при зверненні до сторінки.

Yii2 ActiveForm. Частина 1

Добре, модель доступна і тепер ми готові до висновку самої форми. Для цього ми повинні скористатися для початку парою ключових методів класу ActiveForm – це методи begin і end, які вказують на початок і кінець форми. Весь код між ними, відповідно, буде генерувати вже поля форми. Також метод begin створить примірник форми, який ми використовуємо для створення полів.

Якщо тепер оновити сторінку в браузері і подивитися її вихідний код, то в ньому ми повинні виявити код порожній поки що форми.

Yii2 ActiveForm. Частина 1

Як бачимо, форма має кілька атрибутів за умовчанням, які нам можуть бути цікаві: id, action, method. Значення цих і інших атрибутів можна змінити, передавши масив параметрів метод begin. Давайте спробуємо:

‘test-form’,
‘action’ => ‘/site/login’,
‘options’ => [
‘class’ => ‘form-inline’,
‘enctype’ => ‘multipart/form-data’
]
]); ?>

Отже, ми переопределили ідентифікатор форми і її action. Також додатково в масиві options передали додаткові налаштування форми: клас і атрибут enctype, який дозволить передавати через форму файли при необхідності. Такої необхідності у нас зараз немає, і даний атрибут я вказав просто для прикладу. До речі, в останніх версіях фреймворку даний атрибут зовсім не обов’язковий, Yii сам поставить його, якщо у формі поле для завантаження файлу. В результаті ми отримаємо приблизно таку картину:

Yii2 ActiveForm. Частина 1

Точно таким же чином ми при необхідності можемо змінити і метод передачі даних з post get, передавши його параметром масиву метод begin. У наступній статті ми продовжимо знайомство з методами ActiveForm, створюючи необхідні нам поля. Ну а поки що все.

Більше про фреймворку ви можете дізнатися з наших безкоштовних або платних уроків. Також створення найпростішого блогу на Yii2 можна подивитися в цьому циклі уроків.