Создание базового приложения To-Do на Symfony 3 — Часть 2

В этом уроке мы будем опираться на то, что мы начали в первая часть учебника. Итак, я буду объяснять некоторые концепции Symfony, пока буду создавать Todo-приложение. Некоторые из этих понятий включают пучок , конфигурации , организация упомянуть лишь некоторые. Итак, продолжим.

Создать новый пакет

В Symfony примечательным термином Symfony является bundle и, как следует из названия, это коллекция, включающая такие папки, как Контроллер , Организация , Инъекции зависимостей , Форма , Ресурс и так далее. Итак, нам нужно создать пакет для нашего приложения To-Do с помощью приведенных ниже команд.

php bin/console generate:bundle

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

Проверить src папку, и вы увидите наш новый пакет с именем TodoBundle . Вы можете проверить папки в комплекте и проверить файлы там. Прежде чем мы продолжим, вам нужно сделать 4 вещи

  • Удалить AppBundle в src папка
  • Перейти к /app/AppKernel.php затем удалите new AppBundle\AppBundle(), из файла, чтобы потом не вызывать проблем. AppKernel.php файл регистрирует пакеты, используемые в приложении.
  • Перейти к app/config папка. Здесь хранятся все файлы конфигурации приложения. Затем перейдите к routing.yml file , очистите все в файле и сделайте его таким, как показано ниже.
todo: resource: "@TodoBundle/Controller/" type: annotation prefix: /

Бежать php bin/console server:run в вашей консоли, если ваш сервер не работает, а затем запустите браузер. Вы должны увидеть это

Настройка базы данных

Чтобы иметь возможность сохранить наш список задач, нам нужно настроить нашу базу данных, и для этого вам нужно перейти на parameters.yml файл в app/config/ папку и настроить параметры вашей базы данных.

database_host: 127.0.0.1 database_port: 3306 database_name: todo-app database_user: root database_password: null

Как только вы введете правильные данные, конфигурация вашей базы данных будет полностью настроена, но если вы крутой разработчик и вы хотите использовать другой движок базы данных, вы можете изменить это в app/config/config.php файл.

Создать сущность

В symfony вместо моделей, как в Ларавель или другие рамки, у нас есть организация и это очень важно при создании веб-приложений, которые предполагают сохранение и чтение данных с помощью Symfony. Итак, мы создадим объект с именем Todo и для простоты этого руководства этот объект будет содержать столбец с именем title. Создание сущностей в Symfony супер удивительно, так как вы можете сделать это с помощью простой команды ниже, и она создаст getter а также setter методы для вас. Ответьте на интерактивные вопросы после запуска команды

php bin/console generate:doctrine:entity

Итак, как только это будет сделано, проверьте свой TodoBundle папка, и вы увидите 2 новые созданные папки: Entity а также Repository.

Использование базы данных

Теперь мы хотим создать новую базу данных и обновить базу данных. Это можно сделать с помощью простых команд в Symfony.

php bin/console doctrine:database:create

Эта команда создаст базу данных с именем, заданным в вашем parameters.yml файл

php bin/console doctrine:schema:update --force

Пока эта команда обновит базу данных с созданными сущностями.

Создание формы для приложения Todo

Одной из уникальных особенностей symfony является то, что вам не нужно вручную создавать формы. Формы создаются с помощью только одной команды терминала и нескольких кодов. Давайте создадим форму для нашего приложения. Обратите внимание, что последним аргументом в команде является имя пакета а затем имя сущности e вы хотите создать форму из

php bin/console generate:doctrine:form TodoBundle:Todo

Проверьте свои src/TodoBundle. Вы увидите папку с именем Form с файлом TodoType.php в этом. Это показывает, что команда сработала.

Настройка представления

Йиппи!!! мы писали коды и запускали команды в терминалах, но не трогали вид приложения. Мы собираемся сделать это через несколько минут. Symfony использует механизм шаблонов под названием Веточка и это очень мощно. Так что мы увидим это в действии в нашем коде.

  • Во-первых, перейдите к app/Resources/views/base.html.twig файл. Это макет, с которым мы будем работать в уроке. Это должно выглядеть так.
<!DOCTYPE html>
<html>
<head> <meta charset="UTF-8" /> <title>{% block title %}My To-do Application{% endblock %}</title> {% block stylesheets %}{% endblock %} <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" /> <link rel="stylesheet" href="
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
  • Перейти к src/TodoBundle/Resources/views/Default/index.html.twig и сделайте так, чтобы внутри файла было следующее.
{% extends 'base.html.twig' %}
{% form_theme form 'bootstrap_3_layout.html.twig' %}
{% block body %} <div class="container"> <div class="row"> <div class="col-md-6 col-md-offset-2"> <h1 class="text-center">Add to my To-Do List</h1> {{ form(form) }} </div> </div> </div>
{% endblock %}

Заявление {{ form(form) }} выше отображает форму в браузере после того, как форма должна быть инициализирована в контроллере. {% form_theme form 'bootstrap_3_layout.html.twig' %} Утверждение просто говорит нашей форме использовать тему начальной загрузки.

Обновить контроллер

Таким образом, после настройки представления мы не можем запустить наше приложение, пока у нас не будет полностью настроен метод контроллера. Итак, в контроллере, с которым мы работаем, мы хотим инициализировать форму, которая будет отображаться в представлении, а также обрабатывать запрос формы. Мы сделаем это, зайдя в /src/TodoBundle/Controller/DefaultController.php файл, а затем обновите код с помощью приведенного ниже.

<?php namespace TodoBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\Request;
use TodoBundle\Entity\Todo;
use TodoBundle\Form\TodoType; class DefaultController extends Controller
{ /** * @Route("/", name="todo_create") */ public function indexAction(Request $request) { $todo = new Todo(); $form = $this->createForm(TodoType::class,$todo); $form->add('submit', SubmitType::class, array( 'label' => 'Add To-Do', 'attr' => array('class' => 'btn btn-primary pull-right') )); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($todo); $em->flush(); return $this->redirect($this->generateUrl( 'todo_list' )); } return $this->render('TodoBundle:Default:index.html.twig',['form' => $form->createView()]); }
}

Перед запуском приложения нам нужно создать страницу, на которую мы будем перенаправлены после отправки формы. Мы сделаем это, выполнив следующие действия:

  • Создайте файл с именем list.html.twig в /src/TodoBundle/Resources/views/Default папка
  • Перейдите к контроллеру и убедитесь, что ваш контроллер выглядит так, как показано ниже.
<?php namespace TodoBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\Request;
use TodoBundle\Entity\Todo;
use TodoBundle\Form\TodoType; class DefaultController extends Controller
{ /*** @Route("/", name="todo_create") */ public function indexAction(Request $request) { $todo = new Todo(); $form = $this->createForm(TodoType::class,$todo); $form->add('submit', SubmitType::class, array( 'label' => 'Add To-Do', 'attr' => array('class' => 'btn btn-primary pull-right') )); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($todo); $em->flush(); return $this->redirect($this->generateUrl( 'todo_list' )); } return $this->render('TodoBundle:Default:index.html.twig',['form' => $form->createView()]); } /** * @Route("/my/todos", name="todo_list") */ public function listAction() { return $this->render('TodoBundle:Default:list.html.twig'); }
}
  • Добавить к list.html.twig в /src/TodoBundle/Resources/views/Default папку ниже:
{% extends 'base.html.twig' %}
{% block body %} <div class="container"> <div class="row"> <div class="col-md-6 col-md-offset-2"> <h1 class="text-center">To do list created successfully</h1> </div> </div> <div class="row"> <div class="col-md-6 col-md-offset-2"> <h3 class="text-center">List To-do Here</h3> </div> </div> </div>
{% endblock %}

Запустите приложение

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

Не пропустите другие части руководства

Создание базового приложения To-Do на Symfony 3 — Часть 1
Создание базового приложения To-Do с Symfony 3 — Часть 3

Нравится эта статья? Подпишитесь на @goodnesskayode в Твиттере

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *