PHP·LaravelLaravel开发实践

Laravel模板传值

2016-09-14  本文已影响245人  JennyGump

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

namespace App\\Http\\Controllers;

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


class HomeController extends Controller

{

}

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

public function home()
{
    //打印'home.blade.php'模板
    return View('home');
}
<!DOCTYPE html>
  <html>
  <head>
        <title>Home</title>
      
    </head>
    <body>
        <div class="container">
            <div class="content">
              Hey Welcome home.
            </div>
        </div>
    </body>
</html>

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

return View('home', ['time'=>date("Y-m-d H:i:s", time()), 'place'=>'Beijing']);
<div>Hey, Welcome to {{$place}}!</div>
<div>{{$time}}</div>
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())]) ;
$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");
上一篇 下一篇

猜你喜欢

热点阅读