Laravel - Виды: Путеводитель для начинающих
Здравствуйте, будущие разработчики Laravel! Сегодня мы окунемся в одну из самых захватывающих частей Laravel - Виды (Views). Не беспокойтесь, если вы никогда не писали код раньше; я проведу вас через все шаг за шагом. К концу этого руководства вы будете создавать красивые веб-страницы, как профессионал!
Что такое Виды?
Виды в Laravel resemble the pretty face of your application. They're responsible for what your users actually see when they visit your website. Think of views as the HTML templates that present your data in a user-friendly way.
Создание вашего первого Вида
Давайте начнем с простого примера. Представьте, что мы хотим создать приветственную страницу для нашего веб-сайта. Вот как это сделать:
- Перейдите в директорию
resources/views
в вашем проекте Laravel. - Создайте новый файл под названием
welcome.blade.php
. - Добавьте следующий код:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to My Site</title>
</head>
<body>
<h1>Hello, World!</h1>
<p>Welcome to my awesome Laravel website.</p>
</body>
</html>
Это базовая структура HTML степным приветственным сообщением. Расширение .blade.php
говорит Laravel использовать его теговый движок, Blade, который мы рассмотрим подробнее позже.
Отображение Вида
Теперь, когда у нас есть наш вид, давайте 显示 его, когда кто-то посещает наш веб-сайт. В вашем файле routes/web.php
, добавьте следующий код:
Route::get('/', function () {
return view('welcome');
});
Это говорит Laravel: "Когда кто-то посещает домашнюю страницу, покажите им вид 'welcome'."
Передача данных в Виды
Виды хороши, но они становятся真正 мощными, когда мы можем динамически вставлять данные в них. Давайте посмотрим, как это сделать.
Простая передача данных
Представьте, что мы хотим персонализировать наше приветственное сообщение. Мы можем передать данные в наш вид следующим образом:
Route::get('/', function () {
$name = "Sarah";
return view('welcome', ['name' => $name]);
});
Теперь обновим наш welcome.blade.php
, чтобы использовать эти данные:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to My Site</title>
</head>
<body>
<h1>Hello, {{ $name }}!</h1>
<p>Welcome to my awesome Laravel website.</p>
</body>
</html>
Синтаксис {{ $name }}
- это способ Blade выводить данные. Когда вы visited the page now, вы увидите "Hello, Sarah!" вместо "Hello, World!".
Передача нескольких переменных
Мы можем передать столько переменных, сколько нам нужно. Давайте добавим еще несколько:
Route::get('/', function () {
$data = [
'name' => "Sarah",
'age' => 28,
'hobbies' => ['reading', 'coding', 'hiking']
];
return view('welcome', $data);
});
И обновим наш вид:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to My Site</title>
</head>
<body>
<h1>Hello, {{ $name }}!</h1>
<p>Welcome to my awesome Laravel website.</p>
<p>You are {{ $age }} years old.</p>
<p>Your hobbies are:</p>
<ul>
@foreach($hobbies as $hobby)
<li>{{ $hobby }}</li>
@endforeach
</ul>
</body>
</html>
Здесь мы引入или директиву Blade @foreach
для循环 по массиву увлечений. Blade делает очень легко работать с данными в ваших видах!
Передача данных ко всем Варам
Иногда вы можете хотите передать определенные данные ко всем видам в вашем приложении. Например, вы можете хотите отобразить имя текущего пользователя в навигационной панели на каждой странице.
Использование Композиторов Видов
Laravel предоставляет функцию под названием View Composers для этой цели. Вот как вы можете использовать его:
- Создайте новый файл
app/Providers/ViewServiceProvider.php
(если он уже существует). - Добавьте следующий код:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
class ViewServiceProvider extends ServiceProvider
{
public function boot()
{
View::composer('*', function ($view) {
$view->with('currentUser', 'John Doe');
});
}
}
- Зарегистрируйте этого провайдера в
config/app.php
:
'providers' => [
// Другие провайдеры...
App\Providers\ViewServiceProvider::class,
],
Теперь $currentUser
будет доступен во всех ваших видах!
Заключение
Виды являются сердцем интерфейса пользователя вашего приложения Laravel. Они позволяют вам отделить логику представления от деловой логики, делая ваш код чище и более maintainable. Помните, что практика делает perfect, так что не бойтесь экспериментировать с различными макетами и техниками передачи данных!
Вотquick reference table of the methods we've covered:
Method | Description |
---|---|
view('name') |
Возвращает вид |
view('name', ['key' => 'value']) |
Возвращает вид с данными |
View::composer('*', function) |
Делится данными со всеми видами |
Счастливого кодирования, и пусть ваши виды всегда будут захватывающими! ?
Credits: Image by storyset