Lavarel View

HTTP视图

视图view包含应用程序app所要渲染的HTML代码,目的是将应用的显示逻辑和控制逻辑进行分离,即分离控制器controller和网页呈现上的逻辑。Laravel的视图存放在resources/views/目录下,视图文件以.php作为后缀。

视图辅助函数

view()定义在vendor\laravel\framework\src\Illuminate\Foundation\helpers.php中的,调用了Factorymake()对传入的参数做处理并用这些参数初始化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;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容