伙計們,我創建了一個 Laravel 專案。我有師傅。始終包含用戶資料的布局。因此,例如,我有一個帶有 $user->name 的導航欄。
在每個控制器中,我都需要添加 User 模型以及 where 函式。
$user = User::find(auth()->user()->id)
也許這個例子不好,但我也將公司包括在主控中,所以它顯示在導航欄中。
有沒有辦法,我不需要重復這個程序?所以我不需要它總是在控制器中。
謝謝閱讀。
uj5u.com熱心網友回復:
在 laravel 中,您從主控制器擴展每個類,因此最好在主類中創建這樣的方法
子控制器
class testController extends Controller
{
// as you can see its extending so go into Controller class
}
父類,所以我在這里創建了一個 getName 方法。如果你想通過模式獲取價值
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
private $current_user_name = 'test';
public function getName()
{
return ($this->current_user_name);
}
}
現在回到子控制器并在視圖中傳遞這個方法
class testController extends Controller
{
public function index()
{
return view('', $data = ['name' => $this->getName()]);
}
}
希望這能涵蓋您的查詢。通過這種方式,您無需在每個控制器中重復您的代碼。
uj5u.com熱心網友回復:
您也可以在刀片模板中獲取資料,例如用戶資訊,但是如果您需要更復雜的資料并且不想將邏輯放入刀片中,則可以使用此方法(AppServiceProvider.php):
public function boot()
{
view()->composer('your_mast_layout', function($view)
{
$data = ...
$view->with('variable_name', $data);
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/408030.html
標籤:
上一篇:自動檢測瀏覽器并重定向
