Добавление данных в базу данных

Автор: Илья Остапенко /

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

Сохранение данных в базу даных

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

 

Создание тулбара

Для начала, как я уже говорил, мы будем создавать тулбар, который будет содержать название компонента и кнопку добавления задания.  Для начала нам необходимо изменить файл отображения данных нашего вида. Следовательно, идем в папку views/название вида/tml/ (views/adm/tmpl) и добавляем в файл default.php следующие строчки:

Данные строчки нужно разместить сразу же после defined('_JEXEC') or die('Restricted access') но чтобы они были до закрывающего php тега ?>. Что значат эти строчки? Ну, те, кто уже смекнул, догадались, что первая будет выводить в тулбаре надпись «Создание задания» и рядом будет картинка. Вторая будет отображать с правой стороны тулбара кнопку «создать».

Теперь в админке компонента появился заголовок и кнопка «создать», но пока что толку от кнопки нет никакого, так как при нажатии на неё ничего не происходит. Сейчас мы это исправим. За каждой кнопкой должна быть закреплена задача, которую будет выполнять контроллер. Но чтобы кнопка работала, нужно чтобы в коде присутствовала скрытая строка.

Поместите её в том же файле default.php, где-нибудь в самом конце. Об этой строчке я расскажу немного позже.

Сейчас нам нужно задать функцию для кнопки «создать». Эта функция будет вызывать страничку для добавления задания. Поэтому открываем наш контроллер, controller.phpкоторый находиться в корне папки нашего компонента, и добавляем его в него новую функцию add. Расположите её до функции display.

Код функции add говорит о том, будет вызываться вид create, а потом вызывается функцияdisplay для отображения вида. Но при нажатии на кнопку «создать», опять ничего не произойдет. Все потому, что я забыл в прошлом уроке добавить одну строчку в файлеdefault.php. Давайте, это исправим:

Добавьте эту строчку сразу после закрывающего php тега ?>. Данная строчка обязательна для вызова функций кнопок тулбара.

Теперь если мы нажмем на кнопку «создать» у нас выскочит ошибка 500, которая будет сообщать нам, что не нашла вид create.

 

Создание вида create

Переходим в папку views и создаем папку create. Ну и давайте сразу создадим все файлы вида, чтобы потом их просто редактировать. В папке create создаем папку tmpl и файлview.html.php, а в папке tmpl создаем файл default.php. Теперь давайте откроем файлview.html.php и добавим в него следующий код:

Тут удивляться собственно нечему. Данный файл нужен нам для объявления класса, не больше, так как каких-то особых функций в добавлении задания нет. Следовательно, теперь переходим к файлу вывода данных default.php. Его код будет выглядеть так:

Здесь опять в основном html, который должен быть вам понятен. Отдельно хочу обратить ваше внимание на подключение кнопок «сохранить» и «отменить». Они как вы уже наверно догадались, вызываются этими строчками

Так же обязательно присваивайте параметру «name» в тегах <input> и <textarea>название ячейки таблицы. Параметр name предназначен для того, чтобы обработчик формы смог идентифицировать имя поля (в данном случае name) К примеру:

Этой строке мы с помощью php присваиваем ячейку name, следовательно, имя поля параметра name в теге input должно быть name. Если вы оставите параметр name пустым или напишете в нем что-нибудь другое, то данные, которые вы напишете в поле «Названия» не передадутся в базу данных.

Строчка <input type="hidden" name="task" value="" />, как мы уже знаем нужна для правильной работы кнопок на тулбаре, а вот <?php echo JHTML::_('form.token'); ?> для нас новая строка и сейчас я опишу её поподробнее. Токен позволяет защититься от повторяющихся атак (CSRF атак). На примере это будет выглядеть так:  для пользователя создается сессия, в которой будет ряд случайных чисел, который при обновлении страницы будет меняться. В итоге пользователь не сможет отправить запрос дважды с одной страницы.

Теперь нам все должно быть понятно, а при нажатии на кнопку «Создать», должна появляться форма для заполнения задания. Но кнопка сохранения работать не будет, так как, нам уже известно, что для её работы нужно прописать функцию в контроллере. Так же для добавления данных в базу данных, нам понадобиться изменить модель. Давайте начнем с контроллера. Сразу после функции add добавьте следующий код:

Тут в принципе все предельно просто и сейчас я вам все расскажу.

Этой строчкой мы проверяем токен. Как я и писал выше, не получиться отправить данные дважды с одной и той же страницы.

Получаем данные, которые мы ввели в форму добавления задания.

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

Как видно из кода, если сохранение прошло успешно, тогда выведется фраза из переменной$message «Задание сохранено». Иначе, из этой же переменной выведется фраза «Произошла ошибка», а так же получим информацию об ошибке из модели.

Ну и естественно перенаправление на главную страницу компонента, в которой вы увидите только что сохраненные данные, если конечно все прошло успешно.

Код функции Save в контроллере мы рассмотрели, теперь давайте перейдем к модели, в которой и будет происходить добавление данных в базу данных. Открываем папкуmodels и редактируем в ней файл название компонента.php (в моем случае lesson.php). Добавляем в него ниже приведенный код после функции getTeach()

Давайте я сразу приступлю к комментариям кода.

Соединяемся с таблицей нашего компонента.

Привязываем поля формы к таблице.

Если нам это не удастся, то выведется сообщение об ошибке и возвращаемся на главную страницу компонента.

Если все удачно, тогда выполняется условие проверки данных. Хотя в принципе проверять у нас нечего, так как мы не выставляли особых условий для сохранения данных. К примеру, название урока должно содержать только русские буквы.

Если данные прошли проверку (а в нашем случае они её точно пройдут), тогда выполняется условие сохранения данных.

Естественно если данные не пройдут проверку или возникнет ошибка при сохранении данных, тогда будет выводиться ошибка и перенаправление на главную страницу компонента.

Если все операции прошли успешно, тогда мы перенаправляемся на главную страницу компонента и увидим сохраненные данные.

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

Если вам понравилась статья, буду очень благодарен вам за лайки, я их очень люблю! Появились вопросы или нашли ошибку в коде или тексте, пишите в комментариях. Обновленные файлы компонента админки, вы можете скачать в приложении, которое находиться внизу сразу под тегами.

 

Скачать файлы компонента можно по ссылке ниже
com_lesson_3
Интимный подарок для любимой жены http://fl-catering.ru/podarki/dlya-muzha-zhenyi/int как нравиться себе.

Оставить комментарий

Это не спам.