laravel中的視圖默認保存在 resources\views 目錄下。在控制器中,我們通常使用 view() 方法返回一個視圖文件。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { public function test(Request $request) { return view('test'); } }
對於有多層目錄結構的視圖,我們可以通過 (.) 點號進行分隔。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { public function test(Request $request) { //查找 resources\views\test\test\index.blade.php //或 resources\views\test\test\index.php return view('test.test.index'); } }
我們可以通過 view() 的第二個參數 或 with() 方法來給視圖傳遞數據。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { public function test(Request $request) { return view('test', [ 'id' => 1, 'name' => 'test', ]); } }
有些時候我們需要在所有視圖中共享一些變量。讓這些變量在視圖中都可以訪問到。
常用做法是我們創建一個控制器基類,所有其他控制器繼承該基類,然后在該基類的構造方法中使用 view()->share()來設置共享變量。
<?php namespace App\Http\Controllers; class BaseController extends Controller { public function __construct() { view()->share('css_path', ''); view()->share('img_path', ''); view()->share('js_path', ''); } }