Laravel:从视图生成器内部从控制器获取数据

Laravel:从视图生成器内部从控制器获取数据,laravel,laravel-5.4,Laravel,Laravel 5.4,我创建这个视图生成器是为了好玩。它收集.js文件名,然后将其传递给要链接的布局。使用的文件名取决于当前页面。例如,级别较低的页面(如幻灯片)不包括用户管理中使用的ajax请求。请不要问我为什么要做这个xD。我计划无论如何验证请求。只是觉得无聊 不管怎么说,因为我对拉威尔还很陌生,所以我仍然在寻找更有效的方法来做事。 Atm Im静态访问文件名。控制器现在看起来像这样 class Controller extends BaseController { public static $js_f

我创建这个视图生成器是为了好玩。它收集.js文件名,然后将其传递给要链接的布局。使用的文件名取决于当前页面。例如,级别较低的页面(如幻灯片)不包括用户管理中使用的ajax请求。请不要问我为什么要做这个xD。我计划无论如何验证请求。只是觉得无聊

不管怎么说,因为我对拉威尔还很陌生,所以我仍然在寻找更有效的方法来做事。 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'];
    }
最后,我在注册的Viewcomposer中检索它们,如下所示: 在开发过程中,$use\u文件名将所有文件作为默认文件

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

    var_dump($this->use_filenames);die;
}
这一切似乎都很好,但最大的问题是,有没有更好的方法从viewcomposer内部访问控制器数据?每次我尝试用谷歌搜索这个,我都会得到类似“将数据传递给视图”之类的结果,这不是问题所在

更新:
我的另一个想法是将要在viewcomposer自身内部的数组中使用的所有文件名存储,并检查该数组中是否存在当前页面。这将使控制器更干净。

在这种情况下,使用视图生成器是没有意义的。由于您的控制器已经“知道”它们要共享哪些文件,您也可以将它们传递到视图,如下所示:

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

composer更适合于共享具体元素,例如用户集合、服务提供商或其他类实例。

ic,那么每次不同的js文件数组不是具体的吗?我喜欢View::share的想法,我只需要想一种默认方法。也许我可以在控制器内引用一个负责View::share的类,因为它是由页面控制器扩展的。链接本身甚至不是一个视图,只是它的一部分