2017-06-12 89 views
0

Atm我正在創作這個視圖作曲家以獲得樂趣。它正在收集.js文件名,然後將其傳遞給要鏈接的佈局。使用的文件名取決於當前頁面。例如像Slides這樣排名較低的頁面不包含用戶管理中使用的Ajax請求。請不要問我爲什麼要這樣做xD。我正在計劃驗證請求。只是無聊。Laravel:從視圖作曲家的控制器中獲取數據

無論如何,因爲我對拉拉維爾還很陌生,我仍然在尋找更有效的方法來做事。 Atm Im靜態訪問文件名。該控制器現在看起來是這樣

class Controller extends BaseController 
{ 
    public static $js_file_names = []; 
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 
} 

在的PageController我構建的文件名:

class SlidesController extends Controller 
{ 
    public function __construct() 
    { 
     parent::$js_file_names = ['ccs', 'ajax-updates']; 
    } 

而且finaly我retreive他們註冊Viewcomposer裏面是這樣的: (在開發$ use_filenames擁有所有的文件默認)

public function __construct() 
{ 
    $filenames = Controller::$js_file_names; 
    if(!empty($filenames)) 
     $this->use_filenames = $filenames; 

    var_dump($this->use_filenames);die; 
} 

這一切似乎工作正常,但最大的問題是,有沒有更好的方式來訪問控制器數據f在一個視圖組合器裏面?每次我嘗試谷歌這個,我得到的結果像'傳遞數據視圖'等,這不是問題。

更新: 我的另一個想法是將所有文件名存儲在viewcomposer本身的數組中,並檢查當前頁面是否存在於該數組中。這將保持控制器更清潔。

回答

1

使用視圖作曲家在這種情況下並不合理。由於你的控制器已經「知道」哪些文件,他們的意圖分享,你可能也只是將它們傳遞到視圖像這樣:

class SlidesController extends Controller 
{ 
    public function __construct() 
    { 
     View::share('user_filenames', ['ccs', 'ajax-updates']); 
    } 
} 

作曲家更分享具體的元素,如用戶的集合,一個服務提供者或其他類實例。

+0

ic,所以每次都有不同的js文件數組,這不是具體的嗎?我喜歡View :: share()的想法,我只需要想辦法來默認它。也許我可以在Controller中實例化一個關注View :: share的類,因爲它被頁面控制器 –

+0

擴展了,這些鏈接甚至不是它自己的視圖,而僅僅是它的一部分--.O爲什麼我不認爲這是'觀' - 作曲家 –

相關問題