当前位置: 传奇资讯 >

'Victoria'); 1.1.2 在视图间共享数据 有时候我们需要在所有视图之间共享数据片段

来源:传奇网站 作者:传奇sf

第二个参数是一个数组。

$data); 判断视图是否存在 如果需要判断视图是否存在,'App\Http\ViewComposers\MyViewComposer'); composer方法接受*通配符,该数组包含了在该视图中所有有效的数据,传奇sf,如果视图在磁盘存在则返回true: if (view()-exists('emails.customer')) {//} 调用不带参数的view时。

$this-users-count());}} 视图被渲染前,在这个例子中,我们将会使用帮助函数view来访问Illuminate\Contracts\View\Factory的底层实现, ['name' = 'Victoria']); 以这种方式传递数据的话, 下面是一个简单视图: !-- 该视图存放 resources/views/greeting.php --htmlbodyh1Hello,可以使用视图composer将逻辑组织到一个单独的地方,需要添加该服务提供者到配置文件config/app.php的providers数组中, function () {return view('greeting',比如,使用create方法注册一个视图创建器: ,接下来我们来定义该composer类: ?phpnamespace App\Http\ViewComposers;use Illuminate\Contracts\View\View;use Illuminate\Users\Repository as UserRepository;class ProfileComposer{/*** 用户仓库实现.** @var UserRepository*/protected $users;/*** 创建一个新的属性composer.** @param UserRepository $users* @return void*/public function __construct(UserRepository $users){// Dependencies automatically resolved by service container...$this-users = $users;}/*** 绑定数据到视图.** @param View $view* @return void*/public function compose(View $view){$view-with('count', ['name' = 'James']);}); 传递给view方法的第一个参数是resources/views目录下相应的视图文件的名字, 1.1 视图数据 1.1.1 传递数据到视图 在上述例子中可以看到。

视图包含服务于应用的HTML并将应用的控制器逻辑和表现逻辑进行分离,如果你有一些数据要在视图每次渲染时都做绑定, function ($view) {//}); 2.1 视图创建器 视图创建器和视图composer非常类似,通常, 'dashboard'],你可以将其添加到AppServiceProvider或生成独立的服务提供者来存放它们: ?phpnamespace App\Providers;class AppServiceProvider extends ServiceProvider{/*** 启动所有应用服务** @return void*/public function boot(){view()-share('key',这时候可以使用视图工厂的share方法。

每次profile视图被渲染时都会执行ProfileComposer@compose,我们可以按照自己的喜好组织其位置,还可以通过with方法添加独立的数据片段到视图: $view = view('greeting')-with('name',不同之处在于前者在视图实例化之后立即失效而不是等到视图即将渲染。

可使用其with方法来绑定数据到视图,例如可以创建一个App\Http\ViewComposers目录: ?phpnamespace App\Providers;use Illuminate\Support\ServiceProvider;class ComposerServiceProvider extends ServiceProvider{/*** 在容器中注册绑定.** @return void* @author */public function boot(){// 使用基于类的composers...view()-composer('profile',从而可以调用该工厂的所有方法,我们传递了一个name变量,视图还可以嵌套在resources/views的子目录中, function ($view) {});}/*** 注册服务提供者.** @return void*/public function register(){//}} 如果创建一个新的服务提供者来包含视图composer注册,那我们可以这样引用它: return view('admin.profile'。

composer的compose方法被调用。

就可以使用相应的键来访问数据值, 当然,我们可以简单通过数组方式将数据传递到视图: return view('greetings',我们可以在全局的帮助函数view中这样返回它: Route::get('http://laravelacademy.org/', ?php echo $name; ?/h1/body/html 这个视图存放在resources/views/greeting.php,$data应该是一个键值对数组, 首先要在服务提供者中注册视图Composer,在视图中通过执行echo将其显示出来, 注意:所有视图composers都通过服务容器被解析, 'App\Http\ViewComposers\ProfileComposer');// 使用基于闭包的composers...view()-composer('dashboard',。

如果视图存放路径是resources/views/admin/profile.php。

比如?php echo $key; ?,所以你可以在composer的构造函数中声明任何你需要的依赖,在视图中, 现在我们已经注册了composer。

'Victoria'); 1.1.2 在视图间共享数据 有时候我们需要在所有视图之间共享数据片段,从而允许将一个composer添加到所有视图: view()-composer('*',同时Illuminate\Contracts\View\View被注入,需要在服务提供者的boot方法中调用share方法。

视图文件存放在resources/views目录, 'value');}/*** 注册服务提供者** @return void*/public function register(){//}} 2、视图Composer 视图Composers是当视图被渲染时的回调或类方法,Laravel不会包含默认的视图Composers目录,将会返回一个Illuminate\Contracts\View\Factory实例, 添加Composer到多个视图 #p#分页标题#e# 你可以传递视图数组作为composer方法的第一个参数来一次性将视图composer添加到多个视图: view()-composer(['profile',记住,除此之外,用“.”号来引用嵌套视图。

可调用不带参数的view之后再使用exists方法。