Laravel 视图


在MVC框架中,字母"V"代表Views,它将业务逻辑和展示逻辑分开,视图保存在resources/views目录。通常,视图包含由应用程序提供的 HTML 页面。

观察下面的例子来了解更多关于视图的信息:

步骤1: 复制以下代码并保存在resources/views/test.php

<html>
    <body>
        <h1>Hello, World</h1>
    </body>
</html>

步骤2: 在app/Http/routes.php文件中为上述视图设置路由:

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

步骤3: 访问以下网址,查看视图的输出:

http://localhost:8000/test

步骤4: 输出将如下图所示:

Understanding Views

将数据传递给视图


在构建应用程序时,可能需要向视图传递数据,传递一个数组给view()辅助函数。传递一个数组后,我们可以在HTML文件中使用键来获取该键的值。

观察以下示例以了解有关将数据传递给视图的更多信息:

步骤1: 复制以下代码并保存在resources/views/test.php

<html>
    <body>
        <h1><?php echo $name; ?></h1>
    </body>
</html>

步骤2: 在app/Http/routes.php文件中为上述视图设置路由:

Route::get('/test', function() {
    return view('test',[‘name’=>’Virat Gandhi’]);
});

步骤3: key 的值会传递到 test.php 文件,$name 会被那个值替换。

步骤4: 访问以下网址,查看视图的输出。

http://localhost:8000/test

步骤5: 输出将如下图所示:

Virat Gandhi

与所有视图共享数据


我们已经知道如何将数据传递给视图,但有时需要将数据传递给所有视图。 Laravel 有一种叫share()的方法可用于此目的,share()方法接受两个参数,键和值。通常share()方法可以从服务提供者的 boot 方法中调用。

观察以下示例以了解有关与所有视图共享数据的更多信息:

步骤1: 在app/Http/routes.php添加以下代码:

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

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

步骤2: 创建两个视图文件:resources/views/test.php 和 resources/views/test2.php,这是共享数据的两个文件,他们使用相同的代码,代码如下所示: 

<html>
    <body>
        <h1><?php echo $name; ?></h1>
    </body>
</html>

步骤3: 修改文件app/Providers/AppServiceProvider.php中boot方法的代码,如下所示(在这里,我们使用了共享方法,我们所传递的数据将与所有的视图共享。) :

<?php

namespace App\Providers;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider {
   
    /**
        * Bootstrap any application services.
        *
        * @return void
    */

    public function boot() {
        view()->share('name', 'Virat Gandhi');
    }

    /**
        * Register any application services.
        *
        * @return void
    */

    public function register() {
        //
    }
}

步骤4:访问以下网址:

http://localhost:8000/test
http://localhost:8000/test2

步骤5: 输出将如下图所示:

Virat Gandhi