На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Урок 4. Работа с формами в Yii2


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

<?php

namespace app\controllers;

use yii\web\Controller;
use app\models\Notes;

class NotesController extends Controller
{
    public function actionCreate(){
       $model = new Notes(); // модель созданной нами таблицы
       return $this->render('create',['model'=>$model]); // вьюшка
   }

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

<?php
    use yii\widgets\ActiveForm;
    use yii\helpers\Html;
 ?>
<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>

<?= $form->field($model, 'title')
    ->hint("Please enter the tittle")
    ->textInput(['autofocus' => true]) ?>

<?= $form->field($model, 'content')
    ->hint("Enter you note content")
    ->textInput(["autofocus"=>true]) ?>

    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
    </div>

<?php ActiveForm::end(); ?>
Результат по адресу http://localhost/web/notes/create:



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

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

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

<?= $form->field($model, 'content')
    ->hint("Enter you note content")
    ->textArea(["autofocus"=>true]) ?>
Теперь у нас есть текстовая область.

Отправка формы

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

use Yii;

public function actionCreate(){
    $model = new Notes();
    if($model->load(Yii::$app->request->post())){
        $model->save();
    }
    return $this->render('create',['model'=>$model]);
}
Выше мы используем функцию load на модели, чтобы получить значения post из нашей представленной формы. Мы используем Yii::$приложения->запрос->POST, чтобы получить данные $_POST, где. Затем мы сохраняем модель.

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



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



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

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

public function actionUpdate($id){
    $model = Notes::findOne(['id'=>$id]);
    if($model->load(Yii::$app->request->post())){
        $model->update();
    }
    return $this->render('create',['model'=>$model]);
}
Мы используем Notes::findOne, чтобы получить сингулярную модель по первичному ключу. Затем мы загружаем наши данные post и используем функцию $model->update для сохранения любых изменений в наших данных.

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

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





Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



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





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




IDE NetBeans: возможности, советы и будущее
Свое вино – из красной рябины, крыжовника и черноплодной рябины


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.