WebDesignMagazine.ru – Журнал о веб-дизайне

Создание проекта Laravel CRUD в Bootstrap

0

Это 1 часть из 2 серий “Как создать основное приложение Laravel CRUD”.

В этом уроке мы собираемся создать и запустить простое приложение CRUD с нуля, используя Laravel 5.

Установка и настройка

Если вы уже разбираетесь в PHP, то некоторые вещи в этом разделе будут вам знакомы. Мы создаем новую установку Laravel 5, используя Composer. Во-первых, перейдите в выбор директории. Теперь, выполните следующую команду:

Если вы не установили Composer, вам, естественно, необходимо, сделать это сначала, но я рекомендую использовать такую среду, как Homestead Improved для начала вашей разработки – он предустановлен с Composer.

Название “MYPROJECT” будет названием вашей директории приложений. Для этого урока я назвал свой проект “crud”.

Первый запуск и настройка базы данных

Давайте разберемся с базой данных.

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

Перейдите в директорию config, и откройте файл database.php. Измените настройку подключения базы данных по умолчанию на sqlite. Прокрутите немного дальше в этом файле, и вы увидите фактические соединения базы данных. Вы заметите, что SQLite использует database.sqlite файл, который находится в каталоге storage в руте (доступный storage_path ()). У нас еще нет этого файла, так давайте быстро создадим его в командной строке:

Убедитесь, что папка хранения поддается записи на веб-сервере. Если вы используете Homestead Improved, об этом уже позаботились.

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

Небольшое замечание о Artisan CLI

Artisan – интерфейс встроенной командной строки Laravel. Это позволяет нам взаимодействовать с нашим приложением в процессе разработки. Он поставляется с множеством команд, что позволяет нам создавать модели, контроллеры, миграции базы данных, и даже выполнять ручные операции CRUD. Чтобы увидеть список команд, запустите php artisan в командной строке. Я буду использовать команду artisan, почитайте документы, чтобы ознакомиться.

Ресурный маршрут

Внутри app/Http каталога, вы найдете файл под названием routes.php. Он определяет большинство маршрутов в вашем приложении. По умолчанию некоторые маршруты уже определены. Давайте удалим все и начнем с нуля. Для этого урока, давайте запустим наши операции CRUD в простом списке задач. Нам необходимо два основных маршрута для нашего приложения:

  • Главный маршрут, который просто отображает общую домашнюю страницу.
  • Наш маршрут-задача, который будет основой для RESTной структуры для выполнения операций CRUD.

Я предлагаю вам почитать о маршрутизации в Laravel 5. Я буду использовать названные маршруты, а также действия контроллера для управления выходом. Для нашей домашней страницы, мы будем использовать базовый маршрут GET:

Обратите внимание, я использую PagesController, которого у нас еще нет. Не волнуйтесь, мы создадим его в ближайшее время, используя artisan. Прежде, чем забегать вперед, пора почитать о контроллерах RESTных ресурсов и их образованием с помощью интерфейса командной строки artisan. Мы можем зарегистрировать ресурный маршрут к контроллеру так:

По Laravel: этот отдельный маршрут создает несколько маршрутов, чтобы обрабатывать различные RESTные действия на ресурсе.

Со всем этим, мы теперь можем создать два контроллера с помощью командной строки:

Давайте сначала откроем PagesController. Перейдите в app/Http/Controllers/PagesController, и взгляните на файл. Вы заметите, что artisan генерировал кучу методов для нас, что будет полезным для RESTных действий. Мы придержим это для нашего TasksController, но для нашего PagesController, нам нужно один метод – home. Удалите все методы, и создайте домашний метод:

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

Если вы хотите создать контроллер, используя artisan CLI, и хотите, чтобы никаких методов по умолчанию не было, вы можете добавить –plain флаг к команде, как эта:

Двигаемся дальше.

Представления и создание основных шаблонов с Blade

Мы создали несколько маршрутов и вернули бессмысленную строку на экран. Это не много, но это только начало. Вместо того чтобы возвращать строку, давайте вернем представление. Представления обслуживают фронтенд вашего приложения. Они являются чисто презентационными. Мы хотим, чтобы наши представления обслуживали только данные, которые уже были переданы им, и мы увидим, как передать данные в представление чуть позже. Внутри каталога /resources, вы увидите каталог с названием “views”. Вот где мы держим наши представлеения, и здесь также мы сможем ссылаться на них. Давайте предпримем еще несколько шагов:

  1. Давайте создадим подкаталог pages, и в нем создадим новый файл home.blade.php.
  2. Давайте создадим еще один подкаталог layouts, и в нем создадим новый файл master.blade.php.

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

В частности, обратите внимание на часть @yield(‘content’). Это позволит нам ссылаться на раздел содержания на любых страницах шаблона, и ввести любой контент. В нашем файле home.blade.php у нас есть что-то вроде этого:

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

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

Обновите браузер, и вот!

14316024741-home-page

Давайте сейчас направимся к TasksController. На этот раз, мы сохраним методы, которые были автоматически сгенерированы с помощью командной строки artisan, и вот почему:

  1. Они уже названы RESTными.
  2. Маршруты уже подключены к соответствующим методам из-за ресурсной маршрутизации Laravel.

Если мы перемещаемся в /tasks, мы увидим пустую страницу. Это потому, что наше приложение использует индексный метод, и в нем еще ничего нет. Простой логической дедукцией, мы можем выяснить, что каждый из других методов должен быть ответственным за то, чтобы вписаться в строку с RESTной структурой:

  • create будет методом для генерации страницы, где мы можем создать новые задачи
  • store будет методом для обработки POST данных от создания задач и хранения их в базе данных
  • show будет методом для показа одной задачи
  • edit будет методом, разрешающим нам изменить существующую задачу
  • update будет методом для обновления существующей задачи
  • destroy будет методом для задачи уничтожения или удаления

Сейчас давайте просто сосредоточимся на методе index. В каталоге представлений, я собираюсь создать новый файл под tasks/index.blade.php. Вот шаблон:

Вот скриншот прогресса.

14316024792-tasks

Я хочу, чтобы вы заметили, что я жестко кодировал ссылку, чтобы создать задачу. Если вы читали ссылки документации, которые я упоминал ранее, вы уже знакомы с названными маршрутами. Ресурная маршрутизациия автоматически называет маршруты для нас, и вы можете увидеть их все в командной строке artisan:

Теперь мы можем дать ссылку на создание маршрута в наших blade шаблонах как это:

Давайте также обновим нашу навигацию, таким образом мы можем легко кликнуть:

Хорошо, наше приложение рабтает. Мы готовы начать добавление задач и создать наш метод create и представление, но мы не совсем еще там. Мы хотим, чтобы наши задачи хранились в базе данных, но мы еще не создали таблицу. К счастью, Laravel делает создание и поддержание таблицы легким. Давайте углубимся.

Миграции базы данных

Давайте направимся в документацию миграций и почитаем.

Миграции – тип управления версиями для базы данных. Они позволяют команде модифицировать схему базы данных и оставаться в курсе текущего состояния схемы.

Создание миграции легко с artisan. Вот то, что мы будем делать, чтобы создать нашу таблицу задач миграции:

Есть две дополнительные опции, которые мы можем использовать в нашей команде миграции:

  • –create – позволяет artisan узнать, что мы хотим, чтобы наша миграция создала таблицу
  • –table – позволяет artisan узнать, на какую таблицу мы хотим, чтобы наша миграция ссылалась

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

Перейдите к вновь генерированной миграции – это будет в каталоге /database/migrations. Запуск команды migrate будет инструктировать Laravel заглянуть внутрь этого каталога, и следуйте миграции баз данных, которые еще не произошли. Каждый миграция имеет две функции:

  • up – команда миграции вызывается
  • down – миграция возвращается

В нашем случае, наша функция up создаст таблицу задач с необходимыми полями, а команда down сбросит ее. Мы, наверное, захотим, чтобы наши задачи имели название и описание тоже, так что давайте добавим их. Вот как теперь наша функция up должна выглядеть, как сейчас:

Теперь, давайте запустим нашу миграцию, чтобы установить базу данных:

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

Первая запускает SQLite интерфейс командной строки, а вторая выпускает наши таблицы. Если ваша миграция прошла успешно, вы должны увидеть перечисленные tasks. Теперь мы готовы выполнить наши операции CRUD.

Модели и Eloquent ORM

Теперь, когда наша база данных установлена, пора поговорить о выразительных моделях и Laravel Eloquent ORM. Зайдем в документацию, и, в частности, примем к сведению следующее:

Eloquent ORM, включенный в Laravel обеспечивает красивую, простую реализацию ActiveRecord для работы с базой данных. Каждая таблица базы данных имеет соответствующую “модель”, которая используется для взаимодействия с этой таблицей.

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

По умолчанию, нам не нужно указывать с какими таблицами мы хотим взаимодействовать. Laravel прочитает Task и автоматически загрузит таблицу tasks. Чтобы использовать пользовательскую таблицу, просто укажите ее, как в классе модели:

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

Вывод

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

Поделиться: