Руководство по Laravel 8 для начинающих: как создать своё первое приложение

В этом руководстве по Laravel для начинающих мы расскажем, как установить Laravel и создать своё первое приложение на нём. В этом руководстве мы простым языком объясним все необходимые понятия, чтобы вы могли легко изучить Laravel и лучше его понять.

Введение

Laravel – это элегантный, выразительный и гибкий PHP-фреймворк с упором на чистый код и скорость. Он позиционирует себя как «PHP-фреймворк для веб-мастеров». Это бесплатный PHP-фреймворк с открытым исходным кодом, созданный Тейлором Отвелом на основе архитектурной модели Model View Controller (MVC).

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

Введение

Фреймворк Laravel предоставляет различные PHP-библиотеки и вспомогательные функции. Он обеспечивает общие функции и логику, чтобы упростить и ускорить разработку, а также помочь вам сосредоточиться на более важных вещах.

Сначала придется уделить немного времени обучению, особенно если вы новичок и не имеете опыта работы с какими-либо веб-фреймворками. Но поверьте мне, если вы наловчитесь, вы не только полюбите, но и пристраститесь к Laravel. Этот фреймворк поддерживает творчество в разработке. Он использует слово «Веб-мастер», чтобы указать на креатив, скрытый в сердце разработчика. Результат - эффективное приложение с меньшим количеством строк и хорошо продуманным кодом.

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

Что вы должны знать перед использованием этого руководства по Laravel?

  • HTML/CSS (Естественно).
  • Понимание базового PHP.
  • Владение PHP на среднем уровне – это не обязательно, но если у вас есть время, изучите некоторые рядовые вещи: ООП в PHP, абстракцию и т. д.
  • Базовое понимание фреймворка MVC.
  • Усидчивость – несмотря на то, что изучать Laravel довольно легко, спустя какое-то время вам всё же придется испытать собственное терпение. По крайней мере, у меня были некоторые проблемы из-за того, что я знал PHP, но совсем не разбирался в фреймворках. Когда я изучал фреймворк или успешно завершал проекты, я всё равно путался с базовыми вещами, которые лежат в основе фреймворка MVC. Но я не сдавался.
  • Увлечение – да ладно вам, ведь веб-разработка – это весело! По крайней мере, когда используешь Laravel. Лучше всего получать наслаждение от своего познавательного путешествия.

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

Laravel предлагает различные способы установки на Windows или Mac. Лучший и самый простой способ установить Laravel – через Composer. Composer - это менеджер зависимостей для PHP, который вы можете установить на свой веб-сервер.

Требования для установки Laravel 8

Перед установкой Laravel на вашу локальную платформу (Localhost) вам необходимо установить следующие программы:

  • Веб-сервер – Apache или nginx
  • >= PHP 7.3
  • Некоторые расширения PHP, которые можно установить заранее:
  1. BCMath
  2. Ctype
  3. Fileinfo
  4. JSON
  5. Mbstring
  6. OpenSSL
  7. PDO
  8. Tokenizer
  9. XML
  • MySQL (или другие системы управления базой данных, вы даже можете использовать SQLite).
  • Composer
  • IDE (интегрированная среда разработки) будет очень полезна для разработки на Laravel. Я рекомендую VS Code или Atom. И то, и другое можно использовать совершенно бесплатно.

Пошаговая установка Laravel на локальном хосте:

Шаги для пользователей Mac:

  1. Убедитесь, что все компоненты установлены.
  2. Установите Composer, используя следующую команду (если у вас уже установлен и настроен Composer, пропускайте этот шаг).
    brew install composer
  3. Запустите Composer, чтобы проверить, успешно ли он установлен глобально, как показано ниже.
  4. Шаги для пользователей Mac:
  5. Теперь установите Laravel Installer (это отличный CLI-инструмент для создания новых проектов в Laravel с множеством параметров конфигурации!), используя следующую команду:
    composer global require “laravel/installer”
  6. Теперь выполните команду, приведенную ниже, чтобы поместить папку Composer / vendor / bin в переменную $ PATH (если у вас уже был установлен и настроен Composer, пропустите этот шаг).
  7. Чтобы создать проект после успешного завершения установки, вам нужно сделать следующее:
  • Перейти в нужную папку;
  • Выполнить команду laravel new projectname.

Шаги для пользователей Windows:

  1. Скачайте Composer и установите его.
  2. После успешного завершения установки необходимо проверить, установлен ли он глобально. Откройте командную строку и введите команду «Composer», как показано ниже.
  3. Шаги для пользователей Windows:
  4. Поместите путь к папке ~ / .composer / vendor / bin в переменную среды PATH
  5. Теперь выполните следующую команду –
    composer global require “laravel/installer”
  6. Чтобы создать проект после установки, вам нужно сделать следующее:
  • Перейти в нужную папку;
  • Зажать клавишу Shift + щелкнуть правой кнопкой мыши и выбрать пункт «Открыть командную строку здесь»;
  • Выполнить команду laravel new projectname/

В нашем примере выполняем:

laravel new todo

Руководство по созданию простого CRUD-приложения для составления списка дел на Laravel

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

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

Изучение структуры папок

Laravel - приложения следуют шаблону проектирования архитектуры MVC (Model-View-Controller).

Изучение структуры папок
  • Модели (Models) представляют сущности в базе данных, помогают запрашивать базу данных и возвращать данные.
  • Представления (View) – это страницы, которые будут отображаться при доступе к приложению. Элементы представлений используются для пользовательского интерфейса приложения.
  • Контроллеры (Controllers) обрабатывают запросы пользователей, получают необходимые данные от моделей и передают их представлениям. Контроллеры действуют как посредники между компонентами модели и представления для обработки бизнес-логики, а также входящего запроса.

После того как вы установили Composer и создали свое первое веб-приложение на основе Laravel, вы могли заметить папку приложения с разными файлами и папками внутри. Я знаю, если вы новичок, у вас может возникнуть много вопросов о том, для чего нужны эти папки и т. д. и т. п.

Давайте разберём некоторые из них

app

    Console

    Exceptions

    Http

    Models

    Providers

bootstrap

config

database

    migrations

    seeds

public

resources

    css

    js
    
    lang  
  
    views

routes

storage

    app

    framework

    logs

tests

vendor
  • App: эта папка является ядром приложения и содержит основной код.
    • Console: эта папка содержит все пользовательские команды Artisan, созданные с помощью make: command
    • Exceptions: эта папка содержит обработчик исключений приложения. Это хорошее место для добавления пользовательских классов исключений, чтобы обработать различные исключения, создаваемые вашим приложением.
    • Http: этот каталог содержит все ваши контроллеры, промежуточное программное обеспечение и запросы.
    • Models: это новая папка, добавленная в версии Laravel 8 для хранения файлов моделей. Раньше модели хранились в папке App, но теперь их можно хранить и в папках App / Models.
    • Providers: эта папка содержит всех поставщиков услуг для вашего приложения. Вы можете узнать больше о поставщиках услуг здесь.
  • Bootstrap: эта папка содержит загрузочную программу фреймворка и файлы конфигурации. Она также содержит папку с файлами кеша, сгенерированными фреймворком.
  • Config: эта папка содержит все файлы конфигурации вашего приложения.
  • Database: эта папка содержит все миграции и начальные данные базы данных. Вы также можете хранить здесь файлы базы данных SQLite.
  • Public: эта папка содержит такие ресурсы, как изображения, JavaScript и CSS-файлы.
  • Resources: эта папка содержит все файлы представления, а также файлы CSS, LESS и SASS. Здесь также находится папка lang для хранения языковых файлов.
  • Routes: эта папка содержит все маршруты приложения, а файл php получает все запросы к вашему приложению, и здесь вы можете перенаправить запросы на соответствующие методы контроллера.
  • Storage: эта папка содержит все шаблоны Blade, файлы сеансов, файлы кеша и другие.
  • Tests: эта папка содержит все тестовые файлы.
  • Vendor: эта папка содержит все Composer-зависимости.

Пошаговое создание вашего первого приложения на Laravel

Создайте ваш проект

Если вы не создали свой проект в разделе установки, создайте его сейчас, выполнив следующую команду:

laravel new todo

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

Для нашего приложения нам понадобится база данных, поэтому лучше всего создать её в первую очередь. Laravel поддерживает четыре СУБД:

  • MySQL
  • Postgres
  • SQLite
  • SQL Server

В этом примере мы будем пользоваться SQLite, так как её проще настроить и использовать. И вам не придется ничего устанавливать – нужно будет всего лишь создать один пустой файл. Другие СУБД должны быть установлены в вашей системе, только потом их можно настраивать соответствующим образом. Laravel позволяет файлу config/database.phpнастраивать базу данных, но лучше не хранить в нем учетные данные. Вместо этого вы можете использовать файл .env, в котором можно хранить различные типы учетных и других данных.

В корневой папке Laravel по умолчанию находится файл .env.

В этом файле вы найдете код, похожий на следующий:

•	DB_CONNECTION=mysql
•	
•	DB_HOST=127.0.0.1
•	
•	DB_PORT=3306
•	
•	DB_DATABASE=homestead
•	
•	DB_USERNAME=homestead
•	
•	DB_PASSWORD=secret

Замените все шесть строк, приведенные выше на одну строку, указанную ниже, то есть измените значение db_connection на sqlite и удалите остальные строки db, как здесь:

DB_CONNECTION=sqlite

Теперь в папке базы данных создайте файл database.sqlite (это файл базы данных с расширением .sqlite)

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

Создайте аутентификацию

Laravel также предоставляет «скелет» для аутентификации. Это означает, что всё, связанное с аутентификацией: вход пользователя, регистрация, потеря пароля, двухфакторная аутентификация и т.д. будет создаваться заранее, если вам это необходимо. Это называется Laravel Jetstream.

Есть два способа добавить Jetstream в ваше новое Laravel-приложение. Если вы еще не создали проект, добавьте флажок

--jet

для новой команды Laravel:

laravel new todo --jet

Так как выше мы уже создали проект, вы можете установить его с помощью установочного пакета. Сначала установите пакет Jetstream, используя следующую команду:

composer require laravel/jetstream

Jetstream в Laravel поддерживает два стека ~ Liveware или Inerta. Поскольку мы хотим, чтобы этот проект был простым, давайте воспользуемся Livewire и установим Jetstream с помощью следующей команды:

php artisan jetstream:install livewire
Создайте аутентификацию

Затем запустите «npm install && npm run dev», чтобы создать свои объекты.

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

Миграции

Первый шаг в разработке любого приложения – это создание базы данных. Laravel предлагает отличный способ разработки таблиц и схемы базы данных, а также даёт возможность легко переносить их в разные системы, которые называются «Миграции».

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

Ничего страшного, если это объяснение показалось вам непонятным. Поверьте, скоро у вас всё получится. Просто читайте дальше.

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

php artisan make:migration create_tasks_table --create=tasks

Вы найдёте только что созданную миграцию в папке /database/migrations.

Миграции

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

...
public function up()
{
    Schema::create('tasks', function (Blueprint $table) {
	  $table->bigIncrements('id');
	  $table->string('description');
	  $table->integer('user_id')->unsigned()->index();
	  $table->timestamps();
    });
}
..

В новом столбце с именем «description» будет храниться описание задачи, а в столбце с именем «user_id» будет храниться идентификатор пользователя, создавшего задачу. Мы добавили «-> unsigned () -> index ()» после user_if, потому что это внешний ключ из таблицы пользователей.

Теперь мы закончили с созданием схемы базы данных. Чтобы использовать эту схему для создания таблиц в базе данных, выполните следующую команду. Команда migrate обновит изменения, внесенные в схему, в базе данных.

php artisan migrate

Модели -Eloquent

Eloquent – это ORM (система объектно-реляционного отображения) для Laravel, которая позволяет свободно применять active-record для работы с базой данных. Каждая таблица базы данных может иметь соответствующую модель Eloquent. Модель Eloquent представляет объекты базы данных. Она может использоваться для запроса данных, а также для вставки и обновления данных в таблице. Итак, давайте с помощью команды make: model создадим модель для нашей таблицы задач.

php artisan make:model Task

Эта команда создаст модель задачи в папке приложения, как показано ниже.

Модели -Eloquent

Отношение «один-ко-многим»

Отношения используются для соединения таблиц. Eloquent даёт возможность связать свои модели через отношения Eloquent. Отношение «один ко многим» означает, что одна модель владеет несколькими объемами другой модели. В нашем примере: у одного пользователя может быть много задач, поэтому между таблицей пользователей и таблицей задач существует связь «один ко многим». Отношения Eloquent очень легко определить и использовать. И преимущество заключается в том, что вам вообще не нужно запускать запросы. Eloquent свяжет модели между собой, поэтому вам придется использовать только функции.

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

Модель задачи (файл task.php находится в app/task.php):

...
use App\Models\User;
class Task extends Model
{    
    public function user()
    {
    	return $this->belongsTo(User::class);
    }

	  
}

Модель пользователя (файл user.php находится в app/user.php):

...
use App\Models\Task;
class User extends Authenticatable
{
    ...
    public function tasks()
    {
    	return $this->hasMany(Task::class);
    }

	  
}

Команда Tinker в Artisan (необязательно)

В Laravel существует интерфейс командной строки, известный как Artisan. Artisan содержит различные команды, и среди них – Tinker, которую мы собираемся обсудить. Tinker позволяет вам взаимодействовать со всем вашим Laravel- приложением через окно консоли без необходимости доступа к веб-интерфейсу. Основным преимуществом Tinker является то, что вы можете тестировать отношения, отлаживать данные и получать доступ к Eloquent ORM, задачам, тестам, событиям и т. д. Поэтому мы также будем использовать команду Tinker в нашем руководстве по Laravel. Допустим, вы зарегистрировались в приложении и создали две задачи. Теперь вы проверяете эти задачи прямо в окне консоли, как показано ниже:

$ php artisan tinker
>App\User::first()->tasks;

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

Контроллеры

Контроллеры используются для распределения трафика между представлениями и моделями. Они могут сгруппировать несколько логических схем обработки запросов в один класс. Таким образом, как правило, они получают весь запрос и, исходя из своей логики, перенаправляют или возвращают соответствующие данные. В нашем примере мы уже подходим к интерфейсу, поэтому мы должны создать контроллеры, через которые сможем обрабатывать запросы, поступающие в наше приложение. Выполните следующую команду, чтобы создать контроллер для задач:

php artisan make:controller TasksController

Таким образом, будет создан TasksController, который вы сможете найти в папке app / Http / Controllers.

Маршрутизация

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

  • Авторизоваться;
  • Зарегистрироваться;
  • Показать список всех наших задач;
  • Добавить новые задачи;
  • Удалить существующие задачи.

Laravel Jetstream добавляет вход и регистрацию, поэтому теперь нам нужно позаботиться только о трех маршрутах.

Laravel предоставляет различные файлы маршрутов внутри папки / routes для разных случаев использования. Например, настройка маршрутизации для API будет находиться в файле «/routes/api.php», а настройка маршрутизации для нашего веб-приложения будет находиться в «/routes/web.php».

Теперь давайте отредактируем файл web.php. Ниже вы увидите отредактированную версию этого файла. Внесите соответствующие изменения:

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TasksController;


/*
|--------------------------------------------------------------------------
| Веб-Маршруты
|--------------------------------------------------------------------------
|
| Здесь вы можете зарегистрировать веб-маршруты для своего приложения. Эти |маршруты загружает RouteServiceProvider внутри группы, которая содержит |группу промежуточного программного обеспечения «web». А теперь создайте что-|нибудь замечательное!
*/

Route::get('/', function () {
    return view('welcome');
});

Route::middleware(['auth:sanctum', 'verified'])->group(function(){
    Route::get('/dashboard',[TasksController::class, 'index'])->name('dashboard');

    Route::get('/task',[TasksController::class, 'add']);
    Route::post('/task',[TasksController::class, 'create']);
    
    Route::get('/task/{task}', [TasksController::class, 'edit']);
    Route::post('/task/{task}', [TasksController::class, 'update']);
});

Здесь мы внесли два изменения:

  1. Мы сгруппировали все маршруты, чтобы можно было применять auth: sanctum и проверенное промежуточное программное обеспечение ко всем маршрутам, тем самым давая доступ к этим страницам только проверенным пользователям, вошедшим в систему.
  2. Мы изменили маршрут для панели управления, который теперь будет передавать запрос в функцию index в TaskController. Также мы создали маршруты для других действий.

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

Представления хранятся в папке resources/views. Представления - это интерфейс Laravel- приложения, который разделяет логику приложения и логику представления. Нам нужно создать и настроить следующие представления:

  1. blade.php (панель управления покажет список задач);
  2. blade.php (форма, которая позволит вам добавить новую задачу);
  3. blade.php (форма, которая позволит вам отредактировать любую задачу).

Laravel включает в себя довольно удобный макет, который содержит панель навигации под названием app.blade.php, расположенную в папке Views / layouts. С помощью механизма Blade в Laravel вы cможете разделить свои страницы на подсекции, а также использовать раздел панели навигации по умолчанию в новых представлениях.

Теперь в папке / resources / views создайте файлы add.blade.php и edit.blade.php с разметкой, приведенной ниже.

<x-app-layout>
    <x-slot name="header">
        <h2 class="font-semibold text-xl text-gray-800 leading-tight">
            //здесь должен быть header вашей страницы
        </h2>
    </x-slot>

//здесь должно быть содержимое тэга body

</x-app-layout>

В файле dashboard.blade.php также замените весь код на тот, который приведен выше. Представления мы отредактируем позже, после определения функций нашего контроллера с помощью привязки модели к маршруту.

Привязка модели к маршруту (Route-Model Binding)

В Laravel есть множество удивительных функций, которые делают веб-разработку простой, чистой и менее трудоемкой. Одна из наиболее заметных функций подобного рода – привязка модели к маршруту (Route-Model Binding). Это механизм для внедрения экземпляра модели в ваши маршруты. Это значит, вы можете передавать объект модели в маршруты, а также в представления по маршрутам. Эта функция поможет вам легко получить значения объекта в представлении. Ничего страшного, если это объяснение кажется непонятным. Со временем вы все поймёте.

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Task;

class TasksController extends Controller
{
    public function index()
    {
        $tasks = auth()->user()->tasks();
        return view('dashboard', compact('tasks'));
    }
    public function add()
    {
    	return view('add');
    }

    public function create(Request $request)
    {
        $this->validate($request, [
            'description' => 'required'
        ]);
    	$task = new Task();
    	$task->description = $request->description;
    	$task->user_id = auth()->user()->id;
    	$task->save();
    	return redirect('/dashboard'); 
    }

    public function edit(Task $task)
    {

    	if (auth()->user()->id == $task->user_id)
        {            
                return view('edit', compact('task'));
        }           
        else {
             return redirect('/dashboard');
         }            	
    }

    public function update(Request $request, Task $task)
    {
    	if(isset($_POST['delete'])) {
    		$task->delete();
    		return redirect('/dashboard');
    	}
    	else
    	{
            $this->validate($request, [
                'description' => 'required'
            ]);
    		$task->description = $request->description;
	    	$task->save();
	    	return redirect('/dashboard'); 
    	}    	
    }
}

Как вы можете видеть, я передаю в функцию объект «Task $ task», а также объект «Request $ request» с помощью механизма привязки модели маршрута.

Примечание: Не забудьте добавить «use App \ Models \ Task;» иначе вы получите сообщение об ошибке «Класс не найден».

Редактируем представления

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

Страница, отображающая все задачи

Откройте файл dashboard.blade.php и отредактируйте его следующим образом:

<x-app-layout>
<x-slot name="header">
    <h2 class="font-semibold text-xl text-gray-800 leading-tight">
        {{ __('Dashboard') }}
    </h2>
</x-slot>

<div class="py-12">
    <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
        <div class="bg-white overflow-hidden shadow-xl sm:rounded-lg p-5">
            <div class="flex">
                <div class="flex-auto text-2xl mb-4">Tasks List</div>
                
                <div class="flex-auto text-right mt-2">
                    <a href="/task" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Add new Task</a>
                </div>
            </div>
            <table class="w-full text-md rounded mb-4">
                <thead>
                <tr class="border-b">
                    <th class="text-left p-3 px-5">Task</th>
                    <th class="text-left p-3 px-5">Actions</th>
                    <th></th>
                </tr>
                </thead>
                <tbody>
                @foreach(auth()->user()->tasks as $task)
                    <tr class="border-b hover:bg-orange-100">
                        <td class="p-3 px-5">
                            {{$task->description}}
                        </td>
                        <td class="p-3 px-5">
                            
                            <a href="/task/{{$task->id}}" name="edit" class="mr-3 text-sm bg-blue-500 hover:bg-blue-700 text-white py-1 px-2 rounded focus:outline-none focus:shadow-outline">Edit</a>
                            <form action="/task/{{$task->id}}" class="inline-block">
                                <button type="submit" name="delete" formmethod="POST" class="text-sm bg-red-500 hover:bg-red-700 text-white py-1 px-2 rounded focus:outline-none focus:shadow-outline">Delete</button>
                                {{ csrf_field() }}
                            </form>
                        </td>
                    </tr>
                @endforeach
                </tbody>
            </table>
            
        </div>
    </div>
</div>
</x-app-layout>

Совет:

Механизм шаблонов Blade позволяет нам использовать PHP внутри HTML, не заключая его в «<? Php?>».

Страница, добавляющая новую задачу

Откройте файл add.blade.php и отредактируйте его следующим образом:

<x-app-layout>
<x-slot name="header">
    <h2 class="font-semibold text-xl text-gray-800 leading-tight">
        {{ __('Add Task') }}
    </h2>
</x-slot>

<div class="py-12">
    <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
        <div class="bg-white overflow-hidden shadow-xl sm:rounded-lg p-5">
        
            <form method="POST" action="/task">

                <div class="form-group">
                    <textarea name="description" class="bg-gray-100 rounded border border-gray-400 leading-normal resize-none w-full h-20 py-2 px-3 font-medium placeholder-gray-700 focus:outline-none focus:bg-white"  placeholder='Enter your task'></textarea>  
                    @if ($errors->has('description'))
                        <span class="text-danger">{{ $errors->first('description') }}</span>
                    @endif
                </div>

                <div class="form-group">
                    <button type="submit" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Add Task</button>
                </div>
                {{ csrf_field() }}
            </form>
        </div>
    </div>
</div>
</x-app-layout>

Совет:

{{csrf_field ()}} используется для генерации токена csrf и вставки в форму. Этот токен используется для проверки того, что запрос в приложении исходит от авторизованного зарегистрированного пользователя. Это стандартная функция безопасности, которую предоставляет Laravel.

Страница, редактирующая задачу

Откройте файл edit.blade.php и отредактируйте его, как показано ниже:

<x-app-layout>
<x-slot name="header">
    <h2 class="font-semibold text-xl text-gray-800 leading-tight">
        {{ __('Edit Task') }}
    </h2>
</x-slot>

<div class="py-12">
    <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
        <div class="bg-white overflow-hidden shadow-xl sm:rounded-lg p-5">
        
            <form method="POST" action="/task/{{ $task->id }}">

                <div class="form-group">
                    <textarea name="description" class="bg-gray-100 rounded border border-gray-400 leading-normal resize-none w-full h-20 py-2 px-3 font-medium placeholder-gray-700 focus:outline-none focus:bg-white">{{$task->description }}</textarea>	
                    @if ($errors->has('description'))
                        <span class="text-danger">{{ $errors->first('description') }}</span>
                    @endif
                </div>

                <div class="form-group">
                    <button type="submit" name="update" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Update task</button>
                </div>
            {{ csrf_field() }}
            </form>
        </div>
    </div>
</div>
</x-app-layout>

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

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

Запускаем проект на Localhost

Чтобы запустить проект, запустите в окне терминала команду php artisan serve. Убедитесь, что вы находитесь в корне вашего приложения в терминале.

Обязательно прочтите инструкции, прежде чем копировать код с github.

Что делать с этим проектом дальше:

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

  • Проверка формы:
  • Разрешение пользователю создавать несколько списков с несколькими задачами;
  • Профиль пользователя;
  • И многое другое.

Заключение

В этом длинном руководстве по Laravel мы узнали, как установить Laravel, настроить базу данных, а также такие основные вещи, как маршруты, модели, представления и контроллеры, а также создали ваше первое приложение на Laravel - приложение для составления списка задач.

Надеюсь, что это руководство по Laravel помогло вам понять основы Laravel, а также мотивировало вас учиться дальше. Пожалуйста, поделитесь своим мнением о Laravel и об этом руководстве. А также вы можете делиться в комментариях к этой статье вашими вопросами и проблемами. Будем рады вам помочь. Спасибо.

Пожалуйста, оставьте свои отзывы по текущей теме материала. За комментарии, лайки, отклики, подписки, дизлайки низкий вам поклон!

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