zoukankan      html  css  js  c++  java
  • laravel compact的用法

    向视图中传递变量

    我们在开发web应用当中,通常都不是为了写静态页面而生的,我们需要跟数据打交道,那么这个时候,问题就来了,在一个MVC的框架中,怎么将数据传给视图呢?比如我们要在 ArticleController 的 index 方法的视图输出一个 $title 的变量,在Laravel中,有下面几种常见的方法:

    使用with()方法

    1  public function index()
    2  {
    3       $title = '文章标题1';
    4       return view('articles.lists')->with('title',$title);
    5   }

    这样的 with('title',$title) 中,第一个 'title' 就是key,第二个 $title 就是值,这样我们就可以在我们的 articles/lists.blade.php 中输出这个变量了:

    <body>
    <h1><?php echo $title; ?></h1>
     
    </body>

    刷新我们的 blog.dev ,就可以看到类似这样的页面了:

    而在blade引擎中,我们也可以这样输出变量:

    <body>
    <h1>{{ $title }}</h1>
     
    </body>
    

    其实在blade引擎中, {{ $title }} 会被解析为类似 这样的输出 <?php echo $title; ?> ,不过这里的 {{ }} 符号会将数据原样输出,比如你将 $title 写成这样:

    1  public function index()
    2  {
    3        $title = '<span style="color: red">文章</span>标题1';
    4        return view('articles.lists')->with('title',$title);
    5  }

    这个时候你用 {{ $title }} 输出,会看到类似下面这样(红框里):

    如果你想将 $title 作为页面元素渲染输出,你需要这样写:

    <h1>{!! $title !!}</h1>

     结果如下(红框里):

    这里的 {{ }} 和 {!! !!} 是blade的最基础的用法,这两个我们会用得特别多,后面我会详细说说blade的用法。

    直接给view()传参数

    使用这个方法的时候,你可以这样写:

    1 public function index()
    2 {
    3       $title = '<span style="color: red">文章</span>标题1';
    4       return view('articles.lists',['title'=>$title]);
    5 }

    刷新页面,你依然会看到一样的输出。这里需要说明一下,如果你传多个变量,比如:

    1  public function index()
    2 {
    3     $title = '<span style="color: red">文章</span>标题1';
    4     $intro = '文章一的简介';
    5     return view('articles.lists',['title'=>$title,'introduction'=>$intro]);
    6 }

    在传递的数组中:

    ['title'=>$title,'introduction'=>$intro]

    每一个key会在视图中作为变量,而 value 就作为变量的值。所以在视图中我们需要这样输出:

    <body>
    <h1>{!! $title !!}</h1>
    <p>{{ $introduction }}</p>
    </body>
    

    这里应写成 {{ $introduction }} ,而不是 {{ $intro }} 。

    使用compact

    使用compact是这样写的:

    1  public function index()
    2  {
    3       $title = '<span style="color: red">文章</span>标题1';
    4       $intro = '文章一的简介';
    5       return view('articles.lists',compact('title','intro'));
    6  }

    compact() 的字符串可以就是变量的名字,多个变量名用逗号隔开。这个时候注意更改视图的变量输出。

    使用外部组装JSON格式的方法

     1 public function times(){
     2     $head = [
     3          'title' => "时间轴_子钦加油个人博客 - 一个站在web前端设计之路的技术员个人博客网站",
     4          'keywords' =>"个人博客,子钦加油个人博客,个人博客模板,子钦",
     5          'description' => "子钦加油个人博客,是一个站在web前端设计之路的程序员个人网站,提供个人博客模板免费资源下载的个人原创网站。",
     6      ];
     7     $assign = [
     8            'head' => $head,
     9      ];
    10         
    11     return view('home.index.time',$assign);
    12 }

    其实这种方法就是第二种方法,只是做了个技巧而已

    以上就是Laravel中常用的几种向视图传递变量的方法,选择一种你喜欢的方式并坚持这一种写法就可以了,我是使用第最后一种。

  • 相关阅读:
    Unique Binary Search Trees 解答
    Unique Paths II 解答
    Unique Paths 解答
    Maximum Subarray 解答
    Climbing Stairs 解答
    House Robber II 解答
    House Robber 解答
    Valid Palindrome 解答
    Container With Most Water 解答
    Remove Duplicates from Sorted List II 解答
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/10194340.html
Copyright © 2011-2022 走看看