Привет. В этом уроке я объясню основную концепцию Laravel. Что это такое и как им пользоваться.

Мы будем создавать очень простое TODO приложение, приложение, которое позволяет вам создавать, показывать, обновлять, удалять TODO’s. Я все подробно объясню.

TODO - это в основном список задач, которые вы должны сделать, или вещей, которые вы хотите сделать.

ЧТО ТАКОЕ LARAVEL?

Laravel - это бесплатная среда с открытым исходным кодом, разработанная Тейлором Отвеллом и используемая в основном для веб-приложений.

Раньше для создания полноценного веб-приложения требовалось много работы.
😫. Вам приходилось самостоятельно управлять и создавать такие вещи, как - аутентификация (вход / регистрация), управление сеансом, управление базой данных и т. Д. С Laravel вы можете справиться со всем этим без особого стресса 😆

ТРЕБОВАНИЯ

У вас должно быть базовое понимание PHP (поскольку на нем была создана структура).

Проверьте это, чтобы начать работу с объектно-ориентированным программированием с помощью PHP.

  1. Https://www.w3schools.com/php/php_oop_what_is.asp
  2. Https://www.tutorialspoint.com/php/php_object_orient.htm

НАСТРОЙКА LARAVEL

Хорошо, давайте настроим Laravel. Вам понадобятся:

  1. Composer - приложение для управления зависимостями PHP и необходимых библиотек. Загрузить и установить.


2. Laragon - портативная и быстрая среда разработки для PHP. Загрузить и установить



Возможно, вам придется вручную загрузить и установить последнюю версию PHP или версию ›= 7.2.5. в Ларагоне

NB - Вы также можете использовать XAMPP или WAMP.

Установка Laravel (здесь использовалась версия 6)

  • Откройте свой Laragon
  • Нажмите Start All
  • Щелкните правой кнопкой мыши интерфейс ›Щелкните Quick AppLaravel
  • Введите имя проекта - для этого проекта - входные данные - todo
  • Щелкните OK.
  • Расслабьтесь, пока для вас будет создан новый проект Laravel. (Примечание. Это требует подключения к Интернету и может занять около 3 минут).

Если все заработало -

Ваш новый проект будет расположен в C://laragon/www/todo - для пользователей Windows.

Чтобы проверить, сработало ли это, - ›Посетите todo.test в своем браузере.

Вы должны это увидеть

ПОЗДРАВЛЯЕМ! Ваш первый проект Laravel запущен и работает. 😃

Теперь давайте создадим наше простое приложение TODO.

ПРИЛОЖЕНИЕ TODO

В этом приложении вы сможете:

  • Создайте свой собственный Todo (введя имя вашего Todo и описание)
  • Покажите список созданных вами Todos
  • Отредактируйте Todo - измените значение (имя или описание, либо и то, и другое)
  • Удалить Todo - удалить Todo из базы данных

Теперь откройте ваш любимый редактор кода - PhpStorm, VScode и т. Д. Я порекомендую PhpStorm - это, возможно, лучший вариант для проектов PHP. Вы можете использовать кого угодно.

НАСТРОЙКА БАЗЫ ДАННЫХ

Большинству приложений требуется база данных. Мы будем использовать это для хранения записей нашего Todos.

  • Откройте localhost/phpmyadmin/ . Войдите, используя root в качестве имени пользователя и пустой пароль (оставьте поле пустым) - “ ”
  • После открытия нажмите New, введите имя базы данных как todos_app и нажмите Create
  • Откройте свой проект и перейдите к файлу .env. Установленный -
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=todos_app
DB_USERNAME=root
DB_PASSWORD=

Хорошо, наша база данных готова, а как насчет таблиц ?.

Вы можете создавать таблицы через графический интерфейс, предоставляемый PhpMyAdmin. Да! но мы не собираемся этого делать. Для этого мы воспользуемся интерфейсом командной строки Laravel. ПОЧЕМУ? Потому что это упрощает и улучшает управление базами данных при совместной работе.

В Laravel вся эта концепция управления базами данных известна как Migrations.

Подробнее -



Итак, как нам создать нашу таблицу с помощью миграций:

Перейдите к своему терминалу и выполните следующую команду -

php artisan make:migration create_todos_table

Файл миграции будет создан в database/migrations каталоге .
Он будет выглядеть так -
2020_10_12_create_todos_table.php

Хорошо, откройте файл миграции, и вы увидите что-то вроде этого

Функция Up - вызывается при каждом запуске migrate (используется для добавления новых таблиц, столбцов или индексов в вашу базу данных)
Функция down - вызывается всякий раз, когда вы запускаете rollback (отмените операции, выполняемые up методом.)

Хорошо, у нас есть таблица с некоторыми столбцами по умолчанию (id, timestamps [created_at, updated_at]), автоматически сгенерированными Laravel. Давайте добавим в нашу таблицу еще несколько полей / столбцов - (name, description).

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

Хорошо, наша база данных теперь выглядит отлично. Теперь отметьте localhost/phpmyadmin,, вы должны увидеть свою таблицу и столбцы ..? ВЫ? NOPPE !!
Это потому, что созданная вами миграция просто сидит в вашем проекте Laravel, вы не сказали Laravel, что делать с миграциями.
Здесь команда migrate становится на место.
Чтобы файлы миграции, которые вы создали, повлияли на вашу базу данных, вы должны запустить

php artisan migrate

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

МОДЕЛЬ - ›ПРОСМОТР -› КОНТРОЛЛЕР (MVC)

Модель - Представление - Контроллер (MVC) - это архитектурный шаблон, используемый Laravel, который разделяет приложение на три основных логические компоненты: модель, представление и контроллер.

Каждый из этих компонентов создан для обработки определенных аспектов разработки приложения.

Разъяснил

Используя fig1.

  • Когда пользователь отправляет запрос в браузер, Laravel проверяет routesfile, чтобы увидеть url, который соответствует введенному пользователем, например, пользователь посещает google.com/home. Laravel проверяет папку routes (в основном web.php или api.php в зависимости от того, что вы строите)
  • Если url совпадает с любым, содержащимся в routes, Laravel затем проверяет Контроллер, объявленный для этого маршрута (если он есть), и сообщает браузеру, что делать или отображать.
  • Например, мы посетили google.com/home, мы хотим, чтобы в браузере отображался логотип Google и поле поиска. В нашем контроллере мы объявим метод для возврата представления, содержащего логотип и поле поиска. Все представления в Laravel помещаются в каталог resources/views.
  • Итак, мы показали логотип Google и поле поиска. Большой! Что, если бы мы хотели показать динамические элементы, полученные из базы данных? Например, мы хотели показать список фотографий, загруженных всеми пользователями веб-сайта. В этом случае нам нужно будет связаться с нашей базой данных и написать несколько кодов в нашем controller, имея в виду наш database. Здесь появляется Модель.

МОДЕЛЬ

В Laravel каждая созданная база данных table должна иметь соответствующую модель, которая используется для взаимодействия с этой таблицей.
Для нашей таблицы - todos мы собираемся создать модель Todo. Эта модель будет использоваться для взаимодействия с нашей todos таблицей.

Выполните следующую команду

php artisan make:model Todo
  • Модель будет создана в каталоге app/Models.

Узнайте больше о моделях Eloquent здесь



Узнайте больше, поскольку при создании моделей существует соглашение об именах.

По соглашению, имя класса во множественном числе «змеиный случай» будет использоваться в качестве имени таблицы, если другое имя не указано явно. Таким образом, в этом случае Eloquent будет предполагать, что модель Todo хранит записи в таблице задач, а модель AirTrafficController будет хранить записи в таблице air_traffic_controllers.

ПРОСМОТРЫ

Хорошо, давайте создадим наши представления для нашего приложения Todos.
Для этого мы будем писать наш интерфейсный код, используя HTML и CSS (Bootstrap).

  • Перейдите к resources/views/layouts (если вы не можете найти макеты, создайте новый каталог с именем layouts)
  • Создайте новый файл с именем app.blade.php - здесь будут записаны все связанные общие коды html, необходимые для всех файлов, чтобы избежать ненужного кода шаблона.
  • Напишите там следующий код

Laravel использует движок шаблонов Blade.

Подробнее



Для каждого HTML-кода, который мы собираемся писать, для которого требуется этот набор кодов, мы будем расширять этот app.blade.php .

ПОКАЗАТЬ ВСЕ ПРОСМОТРЫ ТОДОВ

Это будет наш первый просмотр, когда вы посетите главную страницу веб-сайта. По сути, это список всех созданных вами ltodos.

  • Перейдите на resources/views
  • Удалите файл welcome.blade.php. Нам это больше не нужно
  • Щелкните правой кнопкой мыши views - ›Создайте новый файл PHP, назовите его index.blade.php
  • После создания напишите следующий код

Он должен выглядеть так (не волнуйтесь, вы пока не можете получить к нему доступ в своем браузере!)

Я заполнил todos фиктивными данными, они будут заменены именем todo, которое вы скоро создадите.

СОЗДАТЬ ПРОСМОТР

Это представление будет обрабатывать создание todos . В основном это будет форма и кнопка отправки.

  • Перейдите на resources/views
  • Щелкните правой кнопкой мыши views - ›Создайте новый файл PHP, назовите его create.blade.php
  • После создания напишите следующий код

У вас получится что-то вроде этого. (Опять же, вы еще не можете просмотреть это в своем браузере)

ПРОСМОТР TODOS DETAILS

В этом представлении при нажатии отображается подробная информация о todo.

  • Создайте новый файл php в resources/views
  • Назовите файл details.blade.php
  • Напишите там следующий код

Это должно выглядеть так

ИЗМЕНИТЬ / ОБНОВИТЬ ТОДОВЫЙ ПРОСМОТР

Представление, которое позволяет вам вносить изменения в todo - это в основном то же представление, что и при создании todo, но с заполнением формы уже созданными полями имени и описания.

  • Создайте новый файл в папке resources/views - ›Назовите этот файл edit.blade.php
  • Напишите следующий код

Вы получите что-то вроде этого

Хорошо. Мы закончили со всеми видами, необходимыми для этого приложения,
ПРОСМОТРЫ - ›✔️

КОНТРОЛЛЕРЫ

Прежде чем говорить о контроллерах, зайдите на routes/web.php

Что это за файл? - ›Это файл, определяющий маршруты для вашего веб-интерфейса. Имеет ли это смысл? 😶

Хорошо, рассматривайте это как место, где обрабатывается вся логика, лежащая в основе всех "urls", доступных на вашем веб-сайте.

Например - В нашем приложении - Если кто-то посетил todo.test (Что должно произойти? Какой вид должен отображаться? Какая логика должна выполняться?)

Все эти вопросы рассматриваются в файле routes/web.php.

Из fig a выше, этот код просто означает следующее - ›

  • Когда пользователь делает get запрос через браузер, посещая корневой каталог / (в нашем случае todo.test)
  • Выполнить функцию - эта функция возвращает представление welcome.blade.php, которое в основном будет находиться в каталоге resources/views.

Если вы войдете в браузер и запустите todo.test - ›Вы должны получить сообщение об ошибке - потому что мы ранее удалили файл welcome.blade.php.

Теперь мы хотим показать список todos на нашей домашней странице.

  • Отредактируйте routes/web.php файл
  • В блоке объявления функции измените welcome на index
  • Зайдите в свой браузер, вы должны увидеть фиктивные todo списки, которые мы создали ранее.

Это нормально. А теперь представьте, что у вас есть сложная логика, которая должна быть реализована, когда пользователь посещает эту страницу, многократное написание функции может сделать файл routes беспорядочным. Здесь появляется контроллер.

Контроллер позволяет сегментировать логику файла маршрутов в один класс.

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

СОЗДАТЬ КОНТРОЛЛЕР

Этот контроллер обрабатывает логику нашего приложения todos

  • Запустите команду
php artisan make:controller TodoController
  • Контроллер будет создан под app/Http/Controllers
  • Теперь откройте файл routes/web.php
  • Измените код на этот
Route::get('/', [TodoController::class, 'index']);

Термин «индекс» - это метод, который мы создадим в классе TodoController, который поможет нам отобразить список todos

НАПИСАНИЕ ЛОГИКИ

  • Откройте TodoController, который вы только что создали
  • Напишите функцию, которая будет обрабатывать отображение списка всех todos, которые вы создали
public function index(){
   return view('index');
}
  • Зайдите в браузер и загрузите todo.test
  • Вы все равно должны увидеть список созданных пустышек todos

Отлично, теперь наш код выглядит чище

Проделав то же самое с другими нашими представлениями, наш окончательный код будет выглядеть так:

routes / web.php

Route::get('/', [TodoController::class, 'index']);

Route::get('create', [TodoController::class, 'create']);

Route::get('details', [TodoController::class, 'details']);
Route::get('edit', [TodoController::class, 'edit']);
Route::post('update', [TodoController::class, 'update']);

Route::get('delete', [TodoController::class, 'delete']);

TodoController.php

public function index(){

    return view('index');

}
public function create(){
    return view('todos.create');
}
public function details(){

    return view('details');

}

public function edit(){

    return view('edit');

}
public function update(){

    //we will write codes for updating a todo here

}
public function delete(){

    //we will write codes for deleting a todo here

}

Зайдите в свой браузер, все представления должны отображаться правильно.

Хорошо ... Но мы еще не взаимодействуем с нашей базой данных, все элементы были созданы нами вручную в нашем html

ВЗАИМОДЕЙСТВИЕ С НАШЕЙ МОДЕЛЬЮ

Как было сказано ранее, модель используется для взаимодействия с таблицей базы данных. У нас уже есть наша таблица (todos) и модель (Todo). Наша модель должна взаимодействовать с методами в нашем контроллере для выполнения основных CRUD операций.

ОТОБРАЖЕНИЕ СПИСКА ЗАДАЧ

На данный момент мы не создали ни одной задачи, поэтому записи в нашей базе данных практически пусты. Если вы посмотрите на нашу домашнюю страницу todo.test, она показывает список фиктивных данных, которые мы вручную добавили в наш index.blade.php файл. Теперь мы изменим это и получим данные из нашей todos таблицы.

  • Открыть TodoController.php
  • Перейти к функции index()
  • В блоке объявления добавьте этот код
public function index(){

    $todo = Todo::all();
    return view('index')->with('todos', $todo);

}

Этот код делает следующее: ›Получает все данные в todos таблице. (Помните, что мы взаимодействуем с нашей таблицей через нашу модель - Todo) - ›Передайте их нашему представлению (index.blade.php)

  • Открыть index.blade.php
  • Измените код на эти
  • Теперь откройте браузер и загрузите todo.test. Страница будет пустой. Это ожидается, поскольку мы еще не создали ни одного todo.

СОЗДАНИЕ ЗАДАЧИ

Теперь давайте создадим todos

  • Перейдите на create.blade.php
  • Добавьте action в тег формы и csfr (для обработки атаки с подделкой межсайтовых запросов).
    Теперь должно выглядеть так:
  • Добавьте маршрут для store-data и метод в наш TodoController для обработки создания todos - назовите его store
Route::post('store-data', [TodoController::class, 'store']);

Обратите внимание, что это post запрос, потому что мы отправляем данные на сервер.

  • Откройте TodoController и добавьте метод store()

Вот что мы сделали. - › Проверяем данные, отмечая поля как обязательные, получаем все запросы / данные, поступающие в -› Сохраняем данные в объекте - › Сохранить их в базе данных -› Показать сообщение об успешном завершении - › Вернуться на главную

Теперь, чтобы показать сообщение об успехе, вам нужно отредактировать файл app.blade.php и добавить эту строку в container div

@if(session()->has('success'))
    <div class="alert alert-success">

        {{ session()->get('success') }}

    </div>
@endif
  • Идите вперед и создайте Todo, он должен работать как положено.

ПОКАЗАТЬ ДЕТАЛИ

Здесь мы должны отображать детали конкретного todo при нажатии.

Как мы это делаем? Простой - › Получите id того todo, который вы хотите просмотреть -› Используя этот id, получите запись для этого конкретного todo (имя, описание)

  • Go to index.blade.php
  • Измените ссылку url для просмотра деталей на что-то вроде этого
  • Открыть routes/web.php
  • Измените details маршрут на этот
Route::get('details/{todo}', [TodoController::class, 'details']);
  • Откройте TodoController, измените метод на этот
public function details(Todo $todo){

    return view('details')->with('todos', $todo);

}
  • Откройте details.blade.php и измените его на это
  • Протестируйте в своем браузере, и вы должны увидеть подробную информацию о каждом todo, созданном вами.

ОБНОВЛЕНИЕ ЗАДАЧИ

Итак, вы создали todo, хорошо! что, если вы допустили ошибку и захотите изменить, возможно, имя или описание - вы могли бы сделать это через phpMyAdmin, но СЕРЬЕЗНО? Мы должны иметь возможность изменить это на нашем веб-сайте.

  • Открыть routes/web.php
  • Измените маршрут редактирования задачи на это
Route::get('edit/{todo}', [TodoController::class, 'edit']);
  • Зайдите в свой edit.blade.php и поменяйте его на этот
  • Измените маршрут для "update" на этот
Route::post('update/{todo}', [TodoController::class, 'update']);
  • Теперь откройте TodoController, добавьте их в метод update().
  • Попробуйте отредактировать todo, и он должен работать

УДАЛИТЬ ЗАДАЧУ

Теперь нам нужно удалить todo из таблицы базы данных.

  • Открыть routes/web.php
  • Измените маршрут delete на этот
Route::get('delete/{todo}', [TodoController::class, 'delete']);
  • Откройте details.blade.php, измените удаление url на это:
<a href="/delete/{{$todos->id}}"><span class="btn btn-danger">Delete</span></a>
  • Откройте TodoController и добавьте это в метод delete()
  • Удалите todo, и он должен работать.

НАКОНЕЦ! Мы подошли к концу - к концу этой нескончаемой войны, теперь выйдите на улицу и получите немного витамина D.

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

Спасибо!