|
3 | 3 | - [创建视图](#creating-views)
|
4 | 4 | - [向视图传递数据](#passing-data-to-views)
|
5 | 5 | - [与所有视图共享数据](#sharing-data-with-all-views)
|
6 |
| -- [视图 Composer](#view-composers) |
| 6 | +- [视图合成器](#view-composers) |
7 | 7 |
|
8 | 8 | <a name="creating-views"></a>
|
9 | 9 | ## 创建视图
|
|
87 | 87 | }
|
88 | 88 |
|
89 | 89 | <a name="view-composers"></a>
|
90 |
| -## 视图 Composer |
| 90 | +## 视图合成器 |
91 | 91 |
|
92 |
| -视图 Composer 是在渲染视图时调用的回调或者类方法。如果你每次渲染视图时都要绑定视图的数据,视图 Composer 可以帮你将这些逻辑整理到特定的位置。 |
| 92 | +视图合成器是在渲染视图时调用的回调或者类方法。如果你每次渲染视图时都要绑定视图的数据,视图合成器可以帮你将这些逻辑整理到特定的位置。 |
93 | 93 |
|
94 |
| -在下面这个例子中,我们会在一个 [服务提供器](/docs/{{version}}/providers) 中注册视图 Composer,使用 `View` Facade 来访问底层的 `Illuminate\Contracts\View\Factory` 契约实现。默认情况下,Laravel 没有存放视图 Composer 的目录,你需要根据喜好来重新建立目录,例如:`App\Http\ViewComposers`。 |
| 94 | +在下面这个例子中,我们会在一个 [服务提供器](/docs/{{version}}/providers) 中注册视图合成器,使用 `View` Facade 来访问底层的 `Illuminate\Contracts\View\Factory` 契约实现。默认情况下,Laravel 没有存放视图合成器的目录,你需要根据喜好来重新建立目录,例如:`App\Http\ViewComposers`。 |
95 | 95 |
|
96 | 96 | <?php
|
97 | 97 |
|
|
131 | 131 | }
|
132 | 132 | }
|
133 | 133 |
|
134 |
| -> {note} 注意,如果你创建了新的一个服务提供器来存放你视图 composer 的注册项,那么你需要将这个服务提供器添加到配置文件 `config/app.php` 的 `providers` 数组中。 |
| 134 | +> {note} 注意,如果你创建了新的一个服务提供器来存放你注册视图合成器的代码,那么你需要将这个服务提供器添加到配置文件 `config/app.php` 的 `providers` 数组中。 |
135 | 135 |
|
136 |
| -到此我们已经注册了视图 composer,每次渲染 `profile` 视图时,都会执行 `ProfileComposer@compose` 方法。那么下面我们来定义这个 composer 类吧。 |
| 136 | +到此我们已经注册了视图合成器,每次渲染 `profile` 视图时都会执行 `ProfileComposer@compose` 方法。那么下面我们来定义视图合成器的这个类吧: |
137 | 137 |
|
138 | 138 | <?php
|
139 | 139 |
|
|
175 | 175 | }
|
176 | 176 | }
|
177 | 177 |
|
178 |
| -在渲染视图之前,使用 `Illuminate\View\View` 实例调用 Composer 的 `compose` 方法。你可以使用 `with` 方法将数据绑定到视图。 |
| 178 | +视图合成器的 `compose` 方法会在视图渲染之前被调用,并传入一个 `Illuminate\View\View` 实例。你可以使用 `with` 方法将数据绑定到视图。 |
179 | 179 |
|
180 |
| -> {tip} 所有的视图 composers 都会通过 [服务容器](/docs/{{version}}/container) 进行解析,所以你可以在 composer 的构造函数中类型提示需要注入的依赖项。 |
| 180 | +> {tip} 所有的视图合成器都会通过 [服务容器](/docs/{{version}}/container) 进行解析,所以你可以在视图合成器的构造函数中类型提示需要注入的依赖项。 |
181 | 181 |
|
182 |
| -#### 在多个视图中加入 Composer |
| 182 | +#### 将视图构造器添加到多个视图 |
183 | 183 |
|
184 |
| -通过将一组视图作为第一个参数传入 `composer` 方法在多个视图中加入视图 Composer: |
| 184 | +通过将一组视图作为第一个参数传入 `composer` 方法,将一个视图合成器添加到多个视图: |
185 | 185 |
|
186 | 186 | View::composer(
|
187 | 187 | ['profile', 'dashboard'],
|
188 | 188 | 'App\Http\ViewComposers\MyViewComposer'
|
189 | 189 | );
|
190 | 190 |
|
191 |
| -`composer` 方法同时也接受通配符 `*`,可以让你将一个 composer 添加到所有视图: |
| 191 | +`composer` 方法同时也接受通配符 `*`,表示将一个视图合成器添加到所有视图: |
192 | 192 |
|
193 | 193 | View::composer('*', function ($view) {
|
194 | 194 | //
|
195 | 195 | });
|
196 | 196 |
|
197 | 197 | #### 视图构造器
|
198 | 198 |
|
199 |
| -视图**构造器**和视图 composer 非常相似。而不同之处在于:视图构造器在视图实例化之后立即执行,而视图 composer 是在视图渲染时执行。要注册视图构造器,可以使用 `creator` 方法: |
| 199 | +视图**构造器**和视图合成器非常相似。唯一不同之处在于:视图构造器在视图实例化之后立即执行,而视图合成器在视图即将渲染时执行。使用 `creator` 方法注册视图构造器: |
200 | 200 |
|
201 | 201 | View::creator('profile', 'App\Http\ViewCreators\ProfileCreator');
|
202 | 202 |
|
|
205 | 205 | | 用户名 | 头像 | 职能 | 签名 |
|
206 | 206 | |---|---|---|---|
|
207 | 207 | | [@JokerLinly](https://laravel-china.org/users/5350) | <img class="avatar-66 rm-style" src="https://dn-phphub.qbox.me/uploads/avatars/5350_1481857380.jpg"> | Review | Stay Hungry. Stay Foolish. |
|
| 208 | +| [@shamiao](https://laravel-china.org/users/7034) | <img class="avatar-66 rm-style" src="https://dn-phphub.qbox.me/uploads/avatars/7034_1480130781.jpg"> | 修正 | Make developers great again. | |
208 | 209 |
|
209 | 210 | ---
|
210 | 211 |
|
|
0 commit comments