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