视图view
包含应用程序app
所要渲染的HTML代码,目的是将应用的显示逻辑和控制逻辑进行分离,即分离控制器controller
和网页呈现上的逻辑。Laravel的视图存放在resources/views/
目录下,视图文件以.php
作为后缀。
视图辅助函数
view()
定义在vendor\laravel\framework\src\Illuminate\Foundation\helpers.php
中的,调用了Factory
的make()
对传入的参数做处理并用这些参数初始化View
类,再返回View
的实例。
/**
* Get the evaluated view contents for the given view.
*
* @param string $view 对应resources/views目录内视图文件名称
* @param array $data 视图内使用的数据
* @param array $mergeData
* @return \Illuminate\View\View|\Illuminate\Contracts\View\Factory
*/
function view($view = null, $data = [], $mergeData = [])
{
//调用了Factory
$factory = app(ViewFactory::class);
if (func_num_args() === 0) {
return $factory;
}
//对传入的参数做处理并用这些参数初始化View类,再返回View的实例。
return $factory->make($view, $data, $mergeData);
}
视图传参
通常,路由将请求交给控制器,控制器从模型中获取视图所需显示的数据,因此需要在控制器中绑定数据到视图。
- 将数组作为绑定数据传入
$data = ['title'=>'homepage','charset'=>'UTF-8'];
$view = view('home',$data);
- with(key,value)传统方式传递数据到视图
$view = view('home')->with('title','homepage');
- with(key,value)链式绑定数据到视图
$view = view('home')->with('title','homepage')->with('charset','UTF-8');
- withKey(value)魔数方法传递数据到视图
$view = view('home')->withTitle('homepage');
- 通过属性绑定数据
$view = view('home');
$view.title = 'homepage';
- 通过数据访问接口绑定数据
$view = view('home');
$view['title'] = 'homepage';
[案例]
class DemoController extends Controller
{
public function index()
{
$title = 'homepage';
$setting = [
'lang' => 'zh',
'charset' => 'utf-8',
];
//使用compact()将不同类型的变量合并为关联数组
$view = view('demo', compact('title','setting'));
return $view;
}
}