Laravel5.5 视图 - 创建视图和数据传递示例
创建视图
视图包含应用的HTML代码,并将应用的控制器逻辑和表现逻辑进行分离。视图文件存放在resources/views目录中。下面是一个简单的视图示例:
Hello,{{$name}}
可以通过辅助函数view,返回这个视图响应:
Route::get('/',function(){ returnview('greeting',['name'=>'jack']); });
view方法的第一个参数是resources/views目录下相应的视图文件的名称,第二个参数是一个数组,表示传递给视图文件的数据。
在这个例子中,我们传递了一个name变量,在视图中通过使用Blade语法将其显示出来。
当然,视图还可以存放在resources/views的子目录中,用“.”号来引用子目录中的视图。
例如,如果视图存放路径是resources/views/admin/profile.blade.php,那么我们可以这样引用它:
returnview('admin.profile',$data);
判断视图是否存在
如果需要判断视图是否存在,可调用View门面上的exists方法,如果视图存在则返回true:
useIlluminate\Support\Facades\View; if(View::exists('emails.customer')){ // }
创建第一个有效视图
调用View门面上的first方法,可以用于创建给定视图数组中的第一个存在的视图:
useIlluminate\Support\Facades\View; returnView::first(['custom.admin','admin'],$data);
这个功能在应用或扩展包允许视图被自定义或覆盖时很有用。
传递数据到视图
可以简单通过数组方式将数据传递到视图:
returnview('greeting',['name'=>'jack']);
除此之外,还可以通过with方法传递独立的数据片段到视图:
$view=view('greeting')->with('name','jack');
在视图间共享数据
有时候,我们需要在所有视图之间共享数据片段,这时可以使用视图门面的share方法,通常,需要在某个服务提供者的boot方法中调用share方法,你可以将其添加到AppServiceProvider或生成独立的服务提供者来存放这段代码逻辑:
视图Composer
视图Composer是当视图被渲染时的回调函数或类方法。
如果你有一些数据需要在视图每次渲染时都做绑定,可以使用视图Composer将逻辑组织到一个单独的地方。
在本例中,首先要在某个服务提供者中注册视图Composer,我们将会使用View门面来访问Illuminate\Contracts\View\Factory的底层实现,记住,Laravel不会包含默认的视图Composer目录,我们可以按照自己的喜好组织其路径,例如可以创建一个app/Http/ViewComposers目录:
注:如果创建一个新的服务提供者来包含视图Composer注册,需要添加该服务提供者到配置文件config/app.php的providers数组中。
现在我们已经注册了视图Composer,每次profile视图被渲染时都会执行ProfileComposer@compose方法,接下来我们来定义该Composer类:
users=$users; } /** *绑定数据到视图. * *@paramView$view *@returnvoid */ publicfunctioncompose(View$view) { $view->with('count',$this->users->count()); } }视图被渲染前,Composer类的compose方法被调用,同时Illuminate\View\View实例被注入该方法,从而可以使用其with方法来绑定数据到视图。
注:所有视图Composer都通过服务容器被解析,所以你可以在Composer类的构造函数中声明任何你需要的依赖。
添加Composer到多个视图
你可以传递视图数组作为composer方法的第一个参数来一次性将视图Composer添加到多个视图:
View::composer( ['profile','dashboard'], 'App\Http\ViewComposers\MyViewComposer' ); composer方法还支持*通配符,允许将一个Composer添加到所有视图: View::composer('*',function($view){ // });视图创建器
视图创建器和视图Composer非常类似,不同之处在于前者在视图实例化之后立即失效而不是等到视图即将渲染。
使用View门面的creator方法即可注册一个视图创建器:
View::creator('profile','App\Http\ViewCreators\ProfileCreator');以上这篇Laravel5.5视图-创建视图和数据传递示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。