yii2 форма без activeform

Будет ли работать валидация в yii2 без ActiveForm?

Доброго времени суток! Будет ли работать валидация в модели без использования класса ActiveForm? Дело в том, что я использую ajax, а встроенный в ActiveFrom pjax меня не устраивает. Если без ActiveForm не получится тогда вопрос поставлю по другому. Если я повешу событие на форму и буду отправлять ajax-запрос в контроллер данные попадут в модель в её публичные свойства?

Читал, что валидация полностью завязана на ActiveFrom. Вот я и думаю попытаться использовать встроенную в yii валидацию или забить и каждый параметр проверять на голом php? Не давно начал изучать yii, и пока не понимаю будет ли работать валидация, если форму отправить аяксом.

Нашёл способ решить свою проблему. Мне помогло массовое присвоение. Удобная штука)

cc99e15d6c7f45bcb0c11d8dc795c4a5

5a0220270eb6f214997434

. данные попадут в модель в её публичные свойства?

. и пока не понимаю будет ли работать валидация, если форму отправить аяксом.

5a0220270eb6f214997434

7f82fc5ce24c4c54bbe8b8c7739f2d26

80797f32605a4bb1a72cf1ea5f2b06a8

Читал, что валидация полностью завязана на ActiveFrom

Источник

Создание форм ¶

Основным способом использования форм в Yii является использование yii\widgets\ActiveForm. Этот подход должен быть применён, когда форма основана на модели. Кроме того, имеются дополнительные методы в yii\helpers\Html, которые используются для добавления кнопок и текстовых подсказок к любой форме.

Форма, которая отображается на стороне клиента в большинстве случаев соответствует модели. Модель, в свою очередь, проверяет данные из элементов формы на сервере (смотрите раздел Валидация для более подробных сведений). Когда создаётся форма, основанная на модели, необходимо определить, что же является моделью. Модель может основываться на классе Active Record, который описывает некоторые данные из базы данных, или же на базовом классе Model (происходит от yii\base\Model), который позволяет использовать произвольный набор элементов формы (например, форма входа).

В следующем примере показано, как создать модель формы, основанной на базовом классе Model:

В контроллере будем передавать экземпляр этой модели в представление для виджета ActiveForm, который генерирует форму.

Для создания в форме элемента с меткой и любой применимой валидацией с помощью JavaScript, вызывается ActiveForm::field(), который возвращает экземпляр yii\widgets\ActiveField. Когда этот метод вызывается непосредственно, то результатом будет текстовый элемент ( input type=»text» ). Для того, чтобы настроить элемент, можно вызвать один за другим дополнительные методы ActiveField:

Подсказка: Если в форме только одна модель, и вы хотите упростить имена полей ввода, то можете сделать это, переопределив метод formName() модели так, чтобы он возвращал пустую строку. Это может пригодиться для получения более красивых URL при фильтрации моделей в GridView.

Специфический атрибут модели может быть задан более сложным способом. Например, при загрузке файлов или выборе нескольких значений из списка, в качестве значений атрибуту модели нужно передать массив, для этого к имени можно добавить [] :

Имена элементов форм следует выбирать, учитывая, что могут возникнуть конфликты. Подробнее об этом в документации jQuery:

Дополнительные HTML-элементы можно добавить к форме, используя обычный HTML или методы из класса помощника Html, как это было сделано с помощью Html::submitButton() в примере, приведённом выше.

Подсказка: Если вы используете Twitter Bootstrap CSS в своём приложении, то воспользуйтесь yii\bootstrap\ActiveForm вместо yii\widgets\ActiveForm. Он добавит к ActiveForm дополнительные стили, которые сработают в рамках bootstrap CSS.

Подсказка: для добавления «звёздочки» к обязательным элементам формы, воспользуйтесь следующим CSS:

Создание выпадающего списка ¶

Для создания выпадающего списка можно использовать метод ActiveForm dropDownList():

Текущее значение поля модели будет автоматически выбрано в списке.

Работа с Pjax ¶

Виджет Pjax позволяет обновлять определённую область страницы вместо перезагрузки всей страницы. Вы можете использовать его для обновления формы после её отсылки.

Значения кнопок отправки и загрузка файлов ¶

В jQuery.serializeArray() имеются определённые проблемы при работе с файлами и значениями кнопок типа submit. Они не будут исправлены и признаны устаревшими в пользу класса FormData из HTML5.

Ещё по теме ¶

Следующая глава Валидация описывает валидацию отправленной формы как на стороне сервера, так и на стороне клиента.

Если вы хотите более подробно изучить информацию по использованию форм, то обратитесь к главам:

Источник

Yii2 формы

Дата публикации: 2017-04-19

100

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. Эту статью мы посвятим теме Yii2 формы. Мы узнаем о том, как происходит создание форм, что такое модель формы, и как происходит ajax отправка формы. Начнем.

Итак, перед нами стоит стандартная задача — принять данные от пользователя. Обычно для этого используются формы и метод передачи данных POST. Что нам потребуется для создания формы? Во-первых, нам необходима модель формы. Далее, потребуется action, который будет отвечать за получение данных. Ну и, конечно же, нам необходим как минимум один вид, в котором и будет выведена форма.

Начнем с создания модели. В папке моделей создадим класс TestForm.

yii

Фреймворк Yii2. Быстрый старт

Получите курс и узнайте, как с помощью фреймворка Yii2 разрабатывать веб-приложения на примере блога

1

Модель наследует класс yii\base\Model, именно он, как правило, используется для работы с формами. В модели мы должны объявить публичные свойства, которые будут соответствовать полям формы. Например, пусть это будет форма с полями для ввода имени и email. Соответственно, объявим оба публичных свойства:

Пока что отложим модель и создадим action для работы со страницей формы и данными из нее. Я воспользуюсь созданным ранее контроллером TestController и его действием actionPage. В этом действии создадим экземпляр модели и передадим его в представление.

yii

Фреймворк Yii2. Быстрый старт

Получите курс и узнайте, как с помощью фреймворка Yii2 разрабатывать веб-приложения на примере блога

2

Осталось в виде \views\test\page.php отрисовать форму. Для этого мы воспользуемся возможностями виджета yii\widgets\ActiveForm и хэлпером yii\helpers\Html.

Теперь обратимся к нужной нам странице, указав имя контроллера и действия: //yii2/index.php?r=test/page. В результате мы должны увидеть нашу форму.

3

Отлично! Полдела сделано. Теперь задача состоит в том, чтобы принять данные из формы. По умолчанию она будет отправлена в это же действие, т.е. TestController::actionPage — там и попробуем принять данные. Для получения данных методом POST мы воспользуемся методом post() класса yii\web\Request. Попробуем загрузить полученные данные в модель с помощью метода load() в действии. Для этого немного изменим код действия:

4

В результате мы увидели, что данные приходят, но вот модель почему-то ими не заполняется, свойства name и email модели оказываются пустыми. Все правильно. Дело в том, что в модель могут быть загружены только проверенные данные, которые прошли валидацию. Для этого в модели нам потребуется создать массив правил валидации. Об этом мы и поговорим в следующей статье. Ну а на этом мы пока что остановимся.

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

yii

Фреймворк Yii2. Быстрый старт

Получите курс и узнайте, как с помощью фреймворка Yii2 разрабатывать веб-приложения на примере блога

yii

Фреймворк YII2. Быстрый старт

Создание блога с использованием фреймворка Yii2!

Источник

Yii2 форма без activeform

Давайте начнем создавать формы, чтобы мы могли создавать, обновлять и удалять записи в базе данных. Сначала мы создаем новый контроллер для нашей таблицы заметок, которую мы только что сделали. Итак, мы создаем NotesController.php и мы добавляем в него приведенный ниже код.

Теперь это маршрут, который мы будем использовать для создания наших заметок. Создайте файл представления по адресу /views/notes/create.php расположение и добавьте содержимое ниже

Результат по адресу http://localhost/web/notes/create:

art854 1

Итак, теперь мы можем создать заметку. Вы можете сделать гораздо больше, чем видели здесь, если почитаете в документации Yii2 о классе ActiveForm.

Создание текстовой области

Вместо textInput для содержимого я буду использовать текстовую область. Поэтому, в view create.php необходимо изменить второе поле, чтобы использовать textArea, а не textInput.

Теперь у нас есть текстовая область.

Мы можем сохранить данные, которые мы отправили в нашу форму. Давайте посмотрим, как это сделать. В нашем NotesController.php давайте изменим роутинг.

Вот и все, наша первая записка была сохранена. Давайте проверим результаты.

art854 2

Теперь мы можем проверить, сохранила ли база данных наши данные.

art854 3

Обновление БД с помощью формы

Давайте обновим строку в БД с помощью формы. Сначала давайте создадим маршрут обновления в нашем NotesController.

Чтобы проверить это, отправляйтесь в http://localhost/web/notes/update?id=1чтобы обновить нашу первую заметку.

Содержимое уже будет загружено для вас, и мы можем изменить значения, если нам это нужно, а затем нажать кнопку Submit, чтобы обновить содержимое.

art854 4

tag 309129 640заметки, yii2, php, фреймворки, уроки по yii2

Источник

Работа с формами ¶

В данном разделе мы обсудим получение данных от пользователя. На странице будет располагаться форма с полями для ввода имени и email. Полученные данные будут показаны на странице для их подтверждения.

Чтобы достичь этой цели, помимо создания действия и двух представлений вы создадите модель.

В данном руководстве вы изучите:

Создание модели ¶

В файле models/EntryForm.php создайте класс модели EntryForm как показано ниже. Он будет использоваться для хранения данных, введённых пользователем. Подробно об именовании файлов классов читайте в разделе «Автозагрузка классов».

Данный класс расширяет класс yii\base\Model, который является частью фреймворка и обычно используется для работы с данными форм.

Создание действия ¶

Создание представления ¶

Для построения HTML-формы представление использует мощный виджет ActiveForm. Методы begin() и end() выводят открывающий и закрывающий теги формы. Между этими вызовами создаются поля ввода при помощи метода field(). Первым идёт поле для «name», вторым — для «email». Далее для генерации кнопки отправки данных вызывается метод yii\helpers\Html::submitButton().

Попробуем ¶

Чтобы увидеть всё созданное в работе, откройте в браузере следующий URL:

Вы увидите страницу с формой и двумя полями для ввода. Перед каждым полем имеется подпись, которая указывает, какую информацию следует вводить. Если вы нажмёте на кнопку отправки без ввода данных или если вы введете email в неверном формате, вы увидите сообщение с ошибкой рядом с каждым проблемным полем.

start form validation

После ввода верных данных и их отправки, вы увидите страницу с данными, которые вы только что ввели.

start entry confirmation

Как работает вся эта «магия» ¶

Вы, скорее всего, задаётесь вопросом о том, как же эта HTML-форма работает на самом деле. Весь процесс может показаться немного волшебным: то как показываются подписи к полям, ошибки проверки данных при некорректном вводе и то, что всё это происходит без перезагрузки страницы.

Информация: В Yii есть множество виджетов, позволяющих быстро строить сложные и динамичные представления. Как вы узнаете позже, разрабатывать новые виджеты очень просто. Многое из представлений можно вынести в виджеты, чтобы использовать это повторно в других местах и упростить тем самым разработку в будущем.

Заключение ¶

В данном разделе вы попробовали каждую часть шаблона проектирования MVC. Вы изучили как создавать классы моделей для обработки и проверки пользовательских данных.

Также, вы изучили как получать данные от пользователя и как показать данные пользователю. Это задача может занимать в процессе разработки значительное время. Yii предоставляет мощные виджеты, которые делают задачу максимально простой.

В следующем разделе вы изучите как работать с базами данных, что требуется в большинстве приложений.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • yii2 отправка формы ajax
  • yii2 модальное окно с формой