2017-06-12 88 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为什么我不认为这是'观' - 作曲家 –

相关问题