<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 視圖 ## 創建視圖 > {tip} 如果你想找到有關如何編寫 Blade 模板的更多信息?從查看完整的[Blade 文檔]入手。 視圖包含應用程序的 HTML,并且將控制器/應用程序邏輯與演示邏輯分開。視圖文件存放于`resources/views`目錄下。一個簡單的視圖如下所示: ~~~php <!-- 此視圖文件位置: resources/views/greeting.blade.php --> <html> <body> <h1>Hello, {{ $name }}</h1> </body> </html> ~~~ 該視圖文件位于`resources/views/greeting.blade.php`, 可以使用全局輔助函數`view`來返回: ~~~php Route::get('/', function () { return view('greeting', ['name' => 'James']); }); ~~~ 如你所見,`view`函數中,傳入的第一個參數對應著`resources/views`目錄中視圖文件的名稱,第二個參數是可在視圖文件中使用數組。在示例中,我們傳遞`name`變量,該變量可以使用[Blade 模板語言](https://laravel-china.org/docs/laravel/5.7/blade)在視圖中顯示。 當然,視圖文件也可以嵌套在`resources/views`目錄的子目錄中。「點」符號可以用來引用嵌套視圖。例如,如果你的視圖存儲在`resources/views/admin/profile.blade.php`,則可以這樣引用它: ~~~php return view('admin.profile', $data); ~~~ #### 判斷視圖文件是否存在 如果需要判斷視圖文件是否存在,可以使用`View Facade`上的`exists`方法。如果視圖文件存在,該方法會返回 true : ~~~php use Illuminate\Support\Facades\View; if (View::exists('emails.customer')) { // } ~~~ #### 創建第一個可用視圖 使用`first`方法,你可以創建存在于給定數組視圖中的第一個視圖。 如果你的應用程序或開發的第三方包允許定制或覆蓋視圖,這非常有用: ~~~php return view()->first(['custom.admin', 'admin'], $data); ~~~ 當然,你也可以通過`View`[facade]調用這個方法: ~~~php use Illuminate\Support\Facades\View; return View::first(['custom.admin', 'admin'], $data); ~~~ ## 向視圖傳遞數據 如上述例子所示,你可以使用數組將數據傳遞到視圖: ~~~php return view('greetings', ['name' => 'Victoria']); ~~~ 當用這種方式傳遞數據時,作為第二個參數的數據必須是鍵值對數組。在視圖文件中,你可以通過對應的鍵獲取相應的值,例如`<?php echo $key; ?>`。作為將完整數據傳遞給輔助函數`view`的替代方法,你可以使用`with`方法將單個數據片段添加到視圖: ~~~php return view('greeting')->with('name', 'Victoria'); ~~~ #### 與所有視圖共享數據 如果需要共享一段數據給應用程序的所有視圖,你可以在服務提供器的`boot`方法中調用視圖 Facade 的`share`方法。例如,可以將它們添加到`AppServiceProvider`或者為它們生成一個單獨的服務提供器: ~~~php <?php namespace App\Providers; use Illuminate\Support\Facades\View; class AppServiceProvider extends ServiceProvider { /** * 引導任何應用程序服務。 * * @return void */ public function boot() { View::share('key', 'value'); } /** * 注冊服務提供商。 * * @return void */ public function register() { // } } ~~~ ## 視圖合成器 視圖合成器是在渲染視圖時調用的回調或者類方法。如果你每次渲染視圖時都要綁定視圖的數據,視圖合成器可以幫你將這些邏輯整理到特定的位置。 在下面這個例子中,我們會在一個[服務提供商]中注冊視圖合成器,使用`View`Facade 來訪問底層的`Illuminate\Contracts\View\Factory`契約實現。默認情況下,Laravel 沒有存放視圖合成器的目錄,你需要根據需求來重新建立目錄,例如:`App\Http\ViewComposers`。 ~~~php <?php namespace App\Providers; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; class ComposerServiceProvider extends ServiceProvider { /** * 在容器中注冊綁定。 * * @return void */ public function boot() { // 使用基于類的 composer... View::composer( 'profile', 'App\Http\ViewComposers\ProfileComposer' ); // 使用基于閉包的 composers... View::composer('dashboard', function ($view) { // }); } /** * 注冊服務器提供者。 * * @return void */ public function register() { // } } ~~~ > {note} 注意,如果你創建了新的一個服務提供器來存放你注冊視圖合成器的代碼,那么你需要將這個服務提供器添加到配置文件`config/app.php`的`providers`數組中。 到此我們已經注冊了視圖合成器,每次渲染`profile`視圖時都會執行`ProfileComposer@compose`方法。那么下面我們來定義視圖合成器的這個類吧: ~~~php <?php namespace App\Http\ViewComposers; use Illuminate\View\View; use App\Repositories\UserRepository; class ProfileComposer { /** * 用戶 repository 實現。 * * @var UserRepository */ protected $users; /** * 創建一個新的 profile composer。 * * @param UserRepository $users * @return void */ public function __construct(UserRepository $users) { // 依賴關系由服務容器自動解析... $this->users = $users; } /** * 將數據綁定到視圖。 * * @param View $view * @return void */ public function compose(View $view) { $view->with('count', $this->users->count()); } } ~~~ 視圖合成器的`compose`方法會在視圖渲染之前被調用,并傳入一個`Illuminate\View\View`實例。你可以使用 with 方法將數據綁定到視圖。 > 所有的視圖合成器都會通過[服務容器], 進行解析,所以你可以在視圖合成器的構造函數中類型提示需要注入的依賴項。 #### 將視圖構造器添加到多個視圖 通過將一組視圖作為第一個參數傳入`composer`方法,將一個視圖合成器添加到多個視圖: ~~~php View::composer( ['profile', 'dashboard'], 'App\Http\ViewComposers\MyViewComposer' ); ~~~ `composer`方法同時也接受通配符`*`,表示將一個視圖合成器添加到所有視圖: ~~~php View::composer('*', function ($view) { // }); ~~~ #### 視圖構造器 視圖**構造器**和視圖合成器非常相似。唯一不同之處在于:視圖構造器在視圖實例化之后立即執行,而視圖合成器在視圖即將渲染時執行。使用`creator`方法注冊視圖構造器: ~~~php View::creator('profile', 'App\Http\ViewCreators\ProfileCreator'); ~~~
                  <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>

                              哎呀哎呀视频在线观看