Laravel 5.4 官方文档摘记:View类
来源:互联网 发布:永无止境 知乎 编辑:程序博客网 时间:2024/06/02 00:46
视图
调用视图
调用视图只需要view()
方法就可以了,该方法的第一个参数是所要调用的视图,第二个参数则是传入该视图的参数:
Route::get('users/{name}',function($name){ return view('viewName',['name'=>$name]);});
判断视图是否存在
直接使用函数exists()
。
if(view()->exists('viewName')){ //code...}
视图间传递数据
视图间传递数据可以使用函数share()
。
view()->share('key','value');
注意上面不是数组形式!!!
视图结构
默认的视图文件是放在resource/views
目录下的,但是如果你想嵌套更深一层的目录,那么可以在调用视图时使用.
表示目录结构:
如你的视图文件是resource/views/admin/show.blade.php
文件,那么你在调用视图的时候就要这么写,这里拿在路由中设置调用视图为例:
Route::get('user/',function(){ return view('admin.show');});
定义视图统一处理函数
想为某一视图创建一个全局有效的处理函数,就需要为该视图注册一个服务提供者。所以接下来会先介绍服务提供者相关信息,再来是如何在该服务提供者中视图处理函数。
服务提供者
创建服务提供者文件
所有的服务提供者文件都被保存在app\Providers
下,所有的服务提供者都继承自Illuminate\Support\ServiceProvider
类,且都会自动调用其中的boot()
方法。所以你先创建一个自定义的服务提供者文件,这里就拿文档上的ComposerServiceProvider
为例,创建该文件,namespace App\Providers;
注册新建的服务提供者文件
所有的服务提供者文件都被配置在config/app.php
中,具体代码可以看下面:
/* |-------------------------------------------------------------------------- | Autoloaded Service Providers |-------------------------------------------------------------------------- | | The service providers listed here will be automatically loaded on the | request to your application. Feel free to add your own services to | this array to grant expanded functionality to your applications. | */ 'providers' => [ //这里随便举一个例子 Illuminate\Auth\AuthServiceProvider::class, ]
所以这里把我们新建的服务提供者加入进配置文件中。
到此为止,自建的服务提供者就能运行了,当Laravel
开始运行之后,我们自建的服务提供者中的boot()
方法就会自动调用。
接下来就是如何使这个新建的服务提供者和我们的视图扯上关系了。
视图view类
这里我的能力暂时解决不了,但是先看文档上写在服务提供者的boot()
方法中。
public function boot() { // 使用基于类的composers... View::composer( 'profile', 'App\Http\ViewComposers\ProfileComposer' ); // 使用基于闭包的composers... View::composer('dashboard', function ($view) {}); }
看这段代码的时候我是没有弄懂他到底干了啥,于是接下来的内容纯属我猜测的。
首先来看View::composer
,我看过View
类的源码了,如下:
<?phpnamespace Illuminate\Support\Facades;/** * @see \Illuminate\View\Factory */class View extends Facade{ /** * Get the registered name of the component. * * @return string */ protected static function getFacadeAccessor() { return 'view'; }}
根本就没有composer
类的静态方法,于是我就去看他继承的父类Facade
,但是发现这里面的内容已经超越我现有的知识水平了。结合我们所需要调用的类:'App\Http\ViewComposers\ProfileComposer'
的源码:
<?phpnamespace App\Http\ViewComposers;use Illuminate\View\View;use Illuminate\Repositories\UserRepository;class ProfileComposer{ protected $users; //这里的UserRepository类不是重点,只是为了表示能在其中传入任何参数 public function __construct(UserRepository $users) { $this->users = $users; } public function compose(View $view) { $view->with('count', $this->users->count()); }}
我们发现其中也有一个composer
方法,来处理业务逻辑。所以接下来就是我的猜测了:
- View类中根本没有
composer
这个方法 - 在服务提供者中设置的
View::composer( 'profile','App\Http\ViewComposers\ProfileComposer' );
表示调用App\Http\ViewComposers\ProfileComposer
中的composer
方法来进行处理 profile
表示的是将Illuminate\View\View
类的一个实例profile
传入该方法中作为参数
既然都说是猜了,那就很有可能是错误的,迟一点研究一下Facade
类的原理,再来详细解释这个,这里,就当给自己立个Flag吧。
- Laravel 5.4 官方文档摘记:View类
- Laravel 5.4 官方文档摘记:路由
- Laravel 5.4 官方文档摘记:中间件
- Laravel 5.4 官方文档摘记:CSRF保护
- Laravel 5.4 官方文档摘记:控制器
- Laravel 5.4 官方文档摘记:请求实例
- Laravel 5.4 官方文档摘记:响应
- Laravel 5.4 官方文档摘记:验证
- Laravel 5.4 官方文档摘记:视图
- Laravel 5.4 官方文档摘记:Eloquent ORM
- Laravel 5.4 官方文档摘记:Laravel操作数据库
- Vue.js官方文档摘记
- Vue.js 官方文档摘记:Vue 实例
- Vue.js 官方文档摘记:模板语法
- Vue.js 官方文档摘记 计算属性
- React.js 官方文档摘记:表单
- Laravel 5.4 官网资料摘记:Session
- Vue.js 官方文档摘记 class和style绑定
- SSD 之WA写入放大
- jQuery中 $(this) 和 this的区别
- 洛谷P3371【模板】单源最短路径
- hibernate.hbm.xml详解
- 笨方法学Python笔记(8)
- Laravel 5.4 官方文档摘记:View类
- 在mac上配置Zookeeper
- 查看logrotate生效时间
- eclipse jrebel热部署
- JavaScript开发工具大全
- 使用Jsoup操作html字符串
- 服务器搭建mysq
- c语言中变量在内存中的本质
- unity c#如何检测一串字符串中的汉字数与英文字母 标点符号数