<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 視圖 - [創建視圖](#creating-views) - [傳遞數據到視圖](#passing-data-to-views) - [把數據共享給所有視圖](#sharing-data-with-all-views) - [視圖合成器](#view-composers) <a name="creating-views"></a> ## 創建視圖 視圖的用途是用來存放應用程序中 HTML 內容,并且能夠將你的控制器層(或應用邏輯層)與展現層分開。視圖文件目錄為 `resources/views` ,示例視圖如下: <!-- 此視圖文件位置:resources/views/greeting.php --> <html> <body> <h1>Hello, {{ $name }}</h1> </body> </html> 上述視圖文件位置為 `resources/views/greeting.php` ,我們可以通過全局函數 `view` 來使用這個視圖,如下: Route::get('/', function () { return view('greeting', ['name' => 'James']); }); 如你所見,`view` 函數中,第一個參數即 `resources/views` 目錄中視圖文件的文件名,第二個參數是一個數組,數組中的數據可以直接在視圖文件中使用。在上面示例中,我們將 `name` 變量傳遞到了視圖中,并在視圖中使用 [Blade 模板語言](/docs/{{version}}/blade) 打印出來。 當然,視圖文件也可能存放在 `resources/views` 的子目錄中,你可以使用英文句點 `.` 來引用深層子目錄中的視圖文件。例如,一個視圖的位置為 `resources/views/admin/profile.php` ,使用示例如下: return view('admin.profile', $data); #### 判斷視圖文件是否存在 如果需要測試一個視圖文件是否存在,你可以使用 `View` Facade 上的 `exists` 方法來判定,如果測試的視圖文件存在,則返回值為 `true` : use Illuminate\Support\Facades\View; if (View::exists('emails.customer')) { // } <a name="passing-data-to-views"></a> ## 傳遞數據到視圖 如上述例子中,你可以使用數組將數據傳遞到視圖文件: return view('greetings', ['name' => 'Victoria']); 當使用上面方式傳遞數據時,第二個參數( `$data` )必須是鍵值對數組。在視圖文件中,你可以通過對應的關鍵字( `$key` )取用相應的數據值,例如 `<?php echo $key; ?>`。如果只需要傳遞特定數據而非一個臃腫的數組到視圖文件,可以使用 `with` 輔助函數,示例如下: return view('greeting')->with('name', 'Victoria'); <a name="sharing-data-with-all-views"></a> #### 把數據共享給所有視圖 有時候可能需要共享特定的數據給應用程序中所有的視圖,那這時候你需要 `View` Facade 的 `share` 方法。通常需要將所有 `share` 方法的調用代碼放到 [服務提供者](/docs/{{version}}/providers) 的 `boot` 方法中,此時你可以選擇使用 `AppServiceProvider` 或創建獨立的 [服務提供者](/docs/{{version}}/providers) 。示例代碼如下: <?php namespace App\Providers; use Illuminate\Support\Facades\View; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { View::share('key', 'value'); } /** * Register the service provider. * * @return void */ public function register() { // } } <a name="view-composers"></a> ## 視圖合成器 視圖合成器是在視圖渲染時調用的一些回調或者類方法。如果你需要在某些視圖渲染時綁定一些數據上去,那么視圖合成器就是你的的不二之選,另外他還可以幫你將這些綁定邏輯整理到特定的位置。 下面例子中,我們會在一個 [服務提供者](/docs/{{version}}/providers) 中注冊一些視圖合成器。同時使用 `View` Facade 來訪問 `Illuminate\Contracts\View\Factory` contract 的底層實現。注意:Laravel 沒有存放視圖合成器的默認目錄,但你可以根據自己的喜好來重新組織,例如:`App\Http\ViewComposers`。 <?php namespace App\Providers; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; class ComposerServiceProvider extends ServiceProvider { /** * Register bindings in the container. * * @return void */ public function boot() { // Using class based composers... View::composer( 'profile', 'App\Http\ViewComposers\ProfileComposer' ); // Using Closure based composers... View::composer('dashboard', function ($view) { // }); } /** * Register the service provider. * * @return void */ public function register() { // } } > {note} 注意,如果你創建了新的一個 [服務提供者](/docs/{{version}}/providers) 來存放你視圖合成器的注冊項,那么你需要將這個 [服務提供者](/docs/{{version}}/providers) 添加到配置文件 `config/app.php` 的 `providers` 數組中。 到此我們已經注冊了上面的視圖合成器,效果是每次 `profile` 視圖渲染時,都會執行 `ProfileComposer@compose` 方法。那么下面我們來定義這個合成器類吧。 <?php namespace App\Http\ViewComposers; use Illuminate\View\View; use App\Repositories\UserRepository; class ProfileComposer { /** * The user repository implementation. * * @var UserRepository */ protected $users; /** * Create a new profile composer. * * @param UserRepository $users * @return void */ public function __construct(UserRepository $users) { // Dependencies automatically resolved by service container... $this->users = $users; } /** * Bind data to the view. * * @param View $view * @return void */ public function compose(View $view) { $view->with('count', $this->users->count()); } } 每當視圖渲染時,該合成器的 `compose` 方法都會被調用,并且傳入一個 `Illuminate\View\View` 實例作為參數,在這個過程中,你可以使用 `with` 方法綁定數據到目標視圖。 > {tip} 所有的視圖合成器都會由 [服務容器](/docs/{{version}}/container) 來解析,所以你可以在合成器的構造函數中使用類型提示來注入需要的任何依賴。 #### 將視圖合成器附加到多個視圖 通過將目標視圖文件數組作為第一個參數傳入 `composer` 方法,你可以把一個視圖合成器同時附加到多個視圖。 View::composer( ['profile', 'dashboard'], 'App\Http\ViewComposers\MyViewComposer' ); `composer` 方法同時也接受通配符 `*` ,可以讓你將一個視圖合成器一次性綁定到所有的視圖: View::composer('*', function ($view) { // }); #### 視圖塑造器 視圖 **塑造器** 和視圖合成器非常相似。不同之處在于:視圖塑造器在視圖實例化時執行,而視圖合成器在視圖渲染時執行。如下,可以使用 `creator` 方法來注冊一個視圖塑造器: View::creator('profile', 'App\Http\ViewCreators\ProfileCreator'); ## 譯者署名 | 用戶名 | 頭像 | 職能 | 簽名 | |---|---|---|---| | [@zhwei](https://github.com/zhwei) | <img class="avatar-66 rm-style" src="https://avatars3.githubusercontent.com/u/1446459?v=3&s=100"> | 翻譯 | | | [@summerblue](https://github.com/summerblue) | <img class="avatar-66 rm-style" src="https://avatars2.githubusercontent.com/u/324764?v=3&s=100"> | Review | A man seeking for Wisdom. | | [@NauxLiu](https://github.com/NauxLiu) | <img class="avatar-66 rm-style" src="https://avatars3.githubusercontent.com/u/9570112?v=3&s=100"> | Review | |
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看