Laravel模板传值

作者: JennyGump | 来源:发表于2016-09-14 12:01 被阅读245次

在TP框架中,模板传值的方式比较简单也很容易理解。Laravel的模板传值跟TP也有相似的地方。

  • 新建一个控制器:app/Http/Controllers/HomeController.php
namespace App\\Http\\Controllers;

use App\\Http\\Controllers\\Controller;


class HomeController extends Controller

{

}
  • 然后新建一个路由,让访问某个url的时候链接到这个控制中的某个方法:

Rtoue::get("/home", "HomeController@home"); // 当get请求到/home这个地址的时候,会执行HomeController中的home方法

  • 现在我们要去HomeController中写home方法的实现:
public function home()
{
    //打印'home.blade.php'模板
    return View('home');
}
  • 去resources/views/ 目录下创建 home.blade.php模板文件:
<!DOCTYPE html>
  <html>
  <head>
        <title>Home</title>
      
    </head>
    <body>
        <div class="container">
            <div class="content">
              Hey Welcome home.
            </div>
        </div>
    </body>
</html>

好了我们去访问路由里面定义的url,就会输出这个模板。

  • 现在给模板传值:
    有三种给模板赋值的方法,其实算是两种:

  • 给View 传一个数组:

return View('home', ['time'=>date("Y-m-d H:i:s", time()), 'place'=>'Beijing']);
<div>Hey, Welcome to {{$place}}!</div>
<div>{{$time}}</div>
  • 使用with
return View('home')-> with('place','Yerusalem') 
                     -> with('time', date("Y-m-d H:i:s", time()));
// 2016年9月23日09:37:46 更新:
# 这种写法会调用两次with函数,而且代码好像不够简洁。实际上with是可以传数组的:
return View('home')-> with(['place'=>'Yerusalem', 'time'=>date("Y-m-d H:i:s", time())]) ;
  • 第三种跟第一种其实是一样的:借助compact
$place = 'Yerusalem';
$time = date("Y-m-d H:i:s", time());
return View('home', compact('place', 'time'));

compact() 在当前的符号表中查找该变量名并将它添加到输出的数组中,变量名成为键名而变量的内容成为该键的值。
与其对应的是 extract() :用来将变量从数组中导入到当前的符号表中。

$ar = ['country' =>'China', 'province'=>'Beijing'];
extract($ar);
var_dump($country. ' '. $province);

$cmpt = compact('country', 'province');
print_r($cmpt);

if($ar === $cmpt){
    echo 'same array';
} else {
    echo "different array";
}

上面三种方式传值 第一种最直观,但是如果需要赋值的变量太多的话,代码不够美观。第二种比较中庸。第三种比较简洁。个人比较喜欢compact的方式。

另外,如果我们要输出的模板不在/resources/views文件夹下,而在其子目录中,这时有三种方式表达这个路径:

// . / \\ 这三个符号 laravel都是识别的
View("directory/template_name");
View("directory.template_name");
View("directory\\template_name");

相关文章

  • php菜鸟笔记,laravel 入门教程

    安装 Laravel: 配置 Laravel: 配置路由: 视图传值: Blade模板: Model操作: 数据库:

  • Laravel模板传值

    在TP框架中,模板传值的方式比较简单也很容易理解。Laravel的模板传值跟TP也有相似的地方。 新建一个控制器:...

  • laravel 向公共模板文件传值

    在 App\Providers\AppServiceProvider 文件中,boot方法中添加 App\Htt...

  • laravel 向公共模板中传值 (view composer)

    网站中,许多页面的侧边栏是相同的。例如: 分类列表页,与文章详情页的侧边栏都包含 最新文章 最新评论 统计计数 这...

  • django模板处理换行

    某个字段需要换行传值 后台: 模板:

  • blade模板的使用

    blade模板简介在之前的laravel的了解过程中,知道怎么去使用laravel中的blade模板,同时也了解到...

  • 4.子路由

    创建xxx和yyy子组件 传值 路由配置 根据题意,加到商品模板

  • laravel Model::all()结果如何赋值到模板

    laravel中获取某模型所有结果并赋值到模板 模板写法:

  • vue属性传值

    在一些后台模板中我们经常可以看到以下的传值形式: 一般的props接收传值直接用props:['item'...]...

  • react基础

    生命周期相关函数 生命周期简单模板 组件之间传值 父组件 向 子组件 传递信息 >>>主要是通过 prop进行传值...

网友评论

  • JennyGump:三种方式本身是没有区别的,最后都会返回一个View对象。
    首先 看第compact和直接传数组的形式:
    我找到了laravel源码中View的实现:

    ```php
    /** * Create a new view instance.
    *
    * @param \Illuminate\View\Factory $factory
    * @param \Illuminate\View\Engines\EngineInterface $engine
    * @param string $view
    * @param string $path
    * @param array $data
    * @Return void
    */
    public function __construct(Factory $factory, EngineInterface $engine, $view, $path, $data = [])
    {
    $this->view = $view;
    $this->path = $path;
    $this->engine = $engine;
    $this->factory = $factory;
    $this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data;
    }
    # compact还是转化为数组,这个数组会赋值给View构造函数的$data参数,最后设置到data属性里。
    ```

    * with()方式

    ```php
    /** * Add a piece of data to the view.
    *
    * @param string|array $key
    * @param mixed $value
    * @Return $this
    */
    public function with($key, $value = null)
    {
    if (is_array($key)) {
    $this->data = array_merge($this->data, $key);
    } else {
    $this->data[$key] = $value;
    }
    return $this;
    }
    # 可以看到return View('home')->with('place','Yerusalem') 这种形式实际上也是将with里面的传进来的参数整合到data属性里。
    ```

    希望能够帮到你。
    e7c8549f810f:@仲夏淑涵 感谢分享。
  • e7c8549f810f:能说说三者的区别吗,比较喜欢用view("/admin",["data"=>$data])
    JennyGump:@Guri 你好,抱歉才回复。看下面。
  • e7c8549f810f:能说说三者的区别吗,比较喜欢用view("/admin",["data"=>$data])

本文标题:Laravel模板传值

本文链接:https://www.haomeiwen.com/subject/cpsvettx.html