📜  拉拉维尔 |查看基础知识

📅  最后修改于: 2022-05-13 01:56:38.160000             🧑  作者: Mango

拉拉维尔 |查看基础知识

Laravel 是一个基于MVC的PHP框架。在 MVC 架构中, V代表View视图是要在浏览器上显示给用户的数据,用户可以与之交互。它只是提供给用户进行交互的界面。

Laravel 使用了一个强大的模板引擎Blade 。此处使用的此文件的扩展名为filename.blade。 PHP尽管刀片使用了一些指令和布局格式来利用这个模板引擎,但它仍然允许我们在视图文件中编写普通的PHP 。

使用Blade Templating Engine的主要优点是它提供了模板继承。有了这个,我们可以创建一个主布局页面,它将成为其他页面的基础。因此,母版页成为我们将其扩展到的所有子页的父页。在本文中,我们将介绍以下主题:

  • 检查视图是否存在
  • 创建第一个可用视图
  • 在视图中创建和显示数据
  • 与所有视图共享数据
  • 查看作曲家
  • 查看创作者

1. 检查视图是否存在:要检查视图是否存在,有一个方法叫做“ exists() ”。

  • 句法:
    View::exists('gfg');

    代替“ gfg ”,您可以指定要查看它是否存在的视图的名称。如果视图存在,这将输出' true ',否则输出' false '。

  • 例子:
    • 在“ resources/views ”目录中创建一个名为“ gfg.balde”的视图。 PHP '.在里面写下下面的代码。
      
      
      
          GeeksforGeeks
      
      
          

      This is my View

    • 使用以下命令“ PHP artisan make:controller GfGController ”创建一个名为GfGController的控制器,并在其中编写以下代码。
      注意: View 外观使用 Illuminate\Support\Facades\View;应该在控制器文件中定义。
      
      
    • 把下面的代码写在' web. 'route' 目录中的PHP ' 文件。
      Route::get('/', 'GfGController@index');

      注意:评论或删除任何先前定义的路线。

  • 输出:
    • 如果视图是:
    • 如果视图不存在:

2. 创建第一个可用视图如果 Laravel 应用程序中有很多视图,然后使用 ' first() ' 方法,我们可以创建第一个可用的视图。

  • 句法:
    view()->first(['main', 'gfg', 'article']);
  • View::first(['main', 'gfg', 'article']);

    注意:对于这种语法,您需要使用 Illuminate\Support\Facades\View 指定 View 外观;在控制器文件中。

  • 例子:
    • 资源/视图gfg.balde 中创建一个视图。 PHP在里面写下下面的代码。
      
      
      
          GeeksforGeeks
      
      
          

      This is the First Available View

    • 使用以下命令PHP artisan make:controller GfGController创建一个名为GfGController的控制器,并在其中编写以下代码。
      注意: View 外观使用 Illuminate\Support\Facades\View;应该在控制器文件中定义。
      
      
    • 在 web.xml 中编写下面的代码路径目录中的PHP文件。
      注意:评论或删除任何先前定义的路线。
      Route::get('/', 'GfGController@index');
  • 输出:

3. 在视图中创建和显示数据:为了显示存储在变量中的任何类型的数据, Blade提供了一种方法来做到这一点,那就是使用' {{}} ',即双花括号。这里的语句是通过PHP 的 htmlspecialchars函数发送的,该函数将特殊字符转换为 HTML 实体。这样做是为了防止XSS(跨站点脚本)攻击,这是由Blade自动完成的。

  • 句法:
    My name is {{ $name }} and my age is {{ $age }}

    变量$name$age将被存储在这些变量中的值替换。如果我们不希望数据被转义,那么我们可以使用{!! !!} .这将防止数据被转义,但现在它不受XSS 攻击的保护。

  • 句法:
    My name is {!! $name !!} and my age is {!! $age !!}
  • 例子:
    • 在 web.xml 中编写以下代码路由目录中的PHP文件。
      Route::get('/', function () {
        return view('gfg')->with('name' => 'Aakash')->with('age' => '21');
      }
      
    • 现在,让我们创建一个视图文件gfg.blade。resources/views目录中使用上一步中路由文件中指定的名称PHP ,并在其中写入以下代码。
      
      
      
          GeeksforGeeks
      
      
          

      My name is {{ $name }} and my age is {{ $age }}

  • 输出:

4. 与所有视图共享数据:如果您想在 Laravel 应用程序中的所有不同视图之间共享数据,那么您可以使用share方法来实现。这是一个View 外观方法,因此您需要添加use Illuminate\Support\Facades\View;这条线。

  • 句法:
    View::share(‘data’, ‘This is Shared Data’);

    这里,函数中的第一个参数是键,函数中的第二个函数是值。

  • 例子:
    • resources/views目录中创建三个不同的视图文件,名称分别为gfgmainarticle ,并为各自的视图文件编写下面的代码。
      注意: @include是一个 Laravel 指令,用于在视图中包含另一个视图。
    • gfg.blade。 PHP
      
      
      
          GeeksforGeeks
      
      
          @include('shared')
          

      This is GfG View

    • 主刀片。 PHP
      
      
      
          Main | GeeksforGeeks
      
      
          @include('shared')
          

      This is the Main View

    • 文章.blade。 PHP
      
      
      
          Article | GeeksforGeeks
      
      
          @include('shared')
          

      This is the Article View

  • 现在,创建另一个名为shared.blade 的视图。 PHP并在下面编写代码。

    Welcome, {{ $data }}

  • 现在,打开文件AppServiceProvider。 PHP /Providers目录下的php.ini文件。在引导函数中,编写以下代码。
    
    

    在这里,我们将键作为数据传递,值为“这是共享数据”。这样做是因为我们在shared.blade中指定了变量$dataPHP文件。在上一步中。 $data变量将被替换为This is Shared Data

  • 现在,为之前在 web.xml 中创建的所有视图指定路由路径目录中的PHP文件。
    Route::get('/', function () {
        return view('gfg');
    });
    
    Route::get('main', function () {
        return view('main');
    });
    
    Route::get('article', function () {
        return view('article');
    });
  • 输出:
    • 相同的视图没有导航到另一个视图。
    • 如果我们导航到另一个视图,那么第一行将是相同的,但第二行会改变。

5. View Composer:当我们想在调用时输出一个带有另一个视图的视图时使用View Composer 。这可以用作 Laravel 中的另一种数据共享方法。

  • 句法:
    View::composer('shared', function($view) {
      //
    });

    在这里,代替shared我们可以编写我们想要共享的任何其他视图。我们可以使用数组在作曲家中指定多个视图。我们可以传递一组视图。

  • 句法:
    View::composer(['shared', 'sharedNew'], function($view) {
    $view->with('data', 'This is Shared Data');
    });

    我们也可以写一个' * '星号来让所有的视图都传入作曲家。

  • 句法:
    View::composer(*, function($view) {
      $view->with('data', 'This is Shared Data');
    });
  • 例子:
    • 在 ' resources/views ' 目录中创建三个不同的视图文件,名称分别为 gfg、main 和 article,并为各自的视图文件编写下面的代码。
      注意: @include是一个 Laravel 指令,用于在视图中包含另一个视图。
    • gfg.blade。 PHP
      
      
      
          GeeksforGeeks
      
      
          @include('shared')
          

      This is GfG View

    • 主刀片。 PHP
      
      
      
          Main | GeeksforGeeks
      
      
          @include('shared')
          

      This is the Main View

    • 文章.blade。 PHP
      
      
      
          Article | GeeksforGeeks
      
      
          @include('shared')
          

      This is the Article View

  • 现在,创建另一个名为“ shared.blade”的视图。 PHP ' 并在下面编写代码。

    Welcome, {{ $data }}

  • 现在,打开文件' AppServiceProvider. ' app/Providers ' 目录中的PHP '。在引导函数中,编写以下代码。

    在这里,我们将键作为“数据”传递,值作为“这是共享数据”。这样做是因为我们在“ shared.blade ”中指定了变量“ $data ”。 PHP ' 文件。在上一步中。 ' $data ' 变量将被替换为 ' This is Shared Data '。

  • 现在,为在前面步骤中创建的所有视图指定路由 ' routes ' 目录中的PHP ' 文件。
    Route::get('/', function () {
        return view('gfg');
    });
    
    Route::get('main', function () {
        return view('main');
    });
    
    Route::get('article', function () {
        return view('article');
    });
  • 输出:

    6. View Creator: View Creator和我们之前看到的View Composer一样,语法也差不多。唯一的区别是它不等待视图渲染,而是在找到视图后立即执行。

    • 句法:
      View::creator('shared', function($view) {
        $view->with('data', 'This is Shared Data');
      });

    参考: https://laravel.com/docs/6.x/views