我的工作是與包含約像用戶名,電子郵件,圖像URL等用戶細節的頂欄的控制面板的項目這頂欄運行在幾乎所有的控制面板視圖。現在,在每一個ControlPanel控制控制器我做這樣的事情的最佳方式 - Laravel 5
/***** PostController *********/
class PostController extends Controller
{
protected $user;
public function __construct()
{
$user = Auth::user(); // Note: here $user is not a global variable
$this->user['user_name'] = $user->name;
$this->user['user_email'] = $user->email;
$this->user['user_role'] = $user->getRolesName()->first();
$this->user['user_image'] = $user->image;
}
然後在指數控制器我會通過當前用戶與角色,以及職位的細節是這樣的。
public function index()
{
$user = $this->user;
$posts = json_decode(Post::with('author')->get()->toJson());
return view('globaladmin.posts.viewposts',compact('posts'), $user);
}
我覺得可能是這樣做的更好的方法(可能是設計模式像庫),像往常任何幫助,將不勝感激。
我喜歡這種方式,我也是d編寫一些讀取將其添加到AppServiceProvider的引導方法但問題是這些控制器和服務提供者在Auth方法之前被實例化。所以把代碼放在controller.php中什麼也不做。我想將這些代碼將是驗證控制器自身內部的最佳場所 –
驗證::用戶()應該如果你登錄內Controller.php這樣返回數據,你得到任何錯誤,當您試圖將代碼放在那裏,還是它只是一個空值? –
是它只是一個空,它不處理if語句。我認爲問題是,這個代碼需要等待Controller.php這樣先處理身份驗證控制,因爲如果我們只是把一個構造在Controller.php這樣它將運行此代碼之前甚至實例的身份驗證控制器。不管怎麼說共享方法幫了不少忙,我結束了創建一個的ServiceProvider,然後用所有的意見分享吧:) –