Laravel - 视图:初学者指南

你好,未来的 Laravel 开发者们!今天,我们将深入 Laravel 最激动人心的部分之一——视图。如果你之前从未编写过代码,也不用担心;我会一步步带你了解所有内容。在本教程结束时,你将能够像专业人士一样创建美丽的网页!

Laravel - Views

视图是什么?

在 Laravel 中,视图就像是你的应用程序的漂亮面孔。它们负责用户在访问你的网站时实际看到的内容。可以把视图想象成以用户友好的方式展示数据的 HTML 模板。

创建你的第一个视图

让我们从一个简单的例子开始。想象我们想为我们的网站创建一个欢迎页面。下面是我们如何操作:

  1. 导航到 Laravel 项目中的 resources/views 目录。
  2. 创建一个名为 welcome.blade.php 的新文件。
  3. 添加以下代码:
<!DOCTYPE html>
<html>
<head>
<title>欢迎来到我的网站</title>
</head>
<body>
<h1>你好,世界!</h1>
<p>欢迎来到我的 Laravel 网站。</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>欢迎来到我的网站</title>
</head>
<body>
<h1>你好,{{ $name }}!</h1>
<p>欢迎来到我的 Laravel 网站。</p>
</body>
</html>

{{ $name }} 语法是 Blade 用于输出数据的方式。当你现在访问页面时,你会看到 "你好,Sarah!" 而不是 "你好,世界!"。

传递多个变量

我们可以传递尽可能多的变量。让我们添加更多:

Route::get('/', function () {
$data = [
'name' => "Sarah",
'age' => 28,
'hobbies' => ['阅读', '编程', '徒步']
];
return view('welcome', $data);
});

并更新我们的视图:

<!DOCTYPE html>
<html>
<head>
<title>欢迎来到我的网站</title>
</head>
<body>
<h1>你好,{{ $name }}!</h1>
<p>欢迎来到我的 Laravel 网站。</p>
<p>你今年 {{ $age }} 岁。</p>
<p>你的爱好有:</p>
<ul>
@foreach($hobbies as $hobby)
<li>{{ $hobby }}</li>
@endforeach
</ul>
</body>
</html>

在这里,我们引入了 Blade 指令 @foreach 来遍历爱好数组。Blade 使得在视图中处理数据变得非常简单!

向所有视图共享数据

有时,你可能希望与应用程序中的所有视图共享某些数据。例如,你可能在每个页面的导航栏中显示当前用户的姓名。

使用视图合成器

Laravel 提供了一个名为视图合成器的特性来实现这个目的。以下是如何使用它:

  1. 创建一个新文件 app/Providers/ViewServiceProvider.php(如果它还不存在)。
  2. 添加以下代码:
<?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');
});
}
}
  1. config/app.php 中注册这个提供者:
'providers' => [
// 其他提供者...
App\Providers\ViewServiceProvider::class,
],

现在,$currentUser 将在所有视图中可用!

结论

视图是 Laravel 应用程序用户界面的核心。它们允许你将展示逻辑与业务逻辑分离,使你的代码更干净、更易于维护。记住,熟能生巧,所以不要害怕尝试不同的布局和数据传递技术!

以下是我们在本教程中介绍的方法的快速参考表:

方法 描述
view('name') 返回一个视图
view('name', ['key' => 'value']) 返回一个带有数据的视图
View::composer('*', function) 与所有视图共享数据

快乐编码,愿你的视图总是令人叹为观止!?

Credits: Image by storyset