Руководство по 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. Теперь установите Laravel Installer (это отличный CLI-инструмент для создания новых проектов в Laravel с множеством параметров конфигурации!), используя следующую команду:
    composer global require “laravel/installer”
  5. Теперь выполните команду, приведенную ниже, чтобы поместить папку Composer / vendor / bin в переменную $ PATH (если у вас уже был установлен и настроен Composer, пропустите этот шаг).
  6. Чтобы создать проект после успешного завершения установки, вам нужно сделать следующее:
  • Перейти в нужную папку;
  • Выполнить команду laravel new projectname.

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

  1. Скачайте Composer и установите его.
  2. После успешного завершения установки необходимо проверить, установлен ли он глобально. Откройте командную строку и введите команду «Composer», как показано ниже.
  3. Поместите путь к папке ~ / .composer / vendor / bin в переменную среды PATH
  4. Теперь выполните следующую команду –
    composer global require “laravel/installer”
  5. Чтобы создать проект после установки, вам нужно сделать следующее:
  • Перейти в нужную папку;
  • Зажать клавишу 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.

Модель задачи (файл 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 и об этом руководстве. А также вы можете делиться в комментариях к этой статье вашими вопросами и проблемами. Будем рады вам помочь. Спасибо.

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

Данная публикация является переводом статьи «Laravel 8 Tutorial for Beginner: Create your First To-Do App» , подготовленная редакцией проекта.

Меню