Atm我正在创建这个视图作曲家以获得乐趣。它正在收集.js文件名,然后将其传递给要链接的布局。使用的文件名取决于当前页面。例如,像Slides这样排名较低的页面不包括UserManagement中使用的ajax请求。请不要问我为什么要这样做xD。我打算无论如何都要验证请求。只是觉得无聊。
无论如何,因为我对laravel很新,我仍然在寻找更有效的方法来做事。 Atm Im静态访问文件名。 Controller现在看起来像这样
class Controller extends BaseController
{
public static $js_file_names = [];
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
在页面控制器中,我构造了文件名:
class SlidesController extends Controller
{
public function __construct()
{
parent::$js_file_names = ['ccs', 'ajax-updates'];
}
最后我在注册的Viewcomposer中检索它们,如下所示: (在开发过程中,$ use_filenames将所有文件保留为默认值)
public function __construct()
{
$filenames = Controller::$js_file_names;
if( !empty($filenames) )
$this->use_filenames = $filenames;
var_dump($this->use_filenames);die;
}
这一切似乎都运行良好,但最大的问题是,是否有更好的方法从viewcomposer中访问控制器数据?每次我尝试谷歌这个,我得到的结果,如“将数据传递给视图”等,这不是问题。
更新: 我的另一个想法是在viewcomposer本身内存储要在数组中使用的所有文件名,并检查该数组中是否存在当前页面。这样可以使控制器更清洁。
答案 0 :(得分:1)
在这种情况下,使用视图编辑器并没有多大意义。由于您的控制器已经“知道”他们想要共享哪些文件,您可以将它们传递给视图,如下所示:
class SlidesController extends Controller
{
public function __construct()
{
View::share('user_filenames', ['ccs', 'ajax-updates']);
}
}
例如,作曲家更多地用于共享具体元素,例如用户集合,服务提供者或其他类实例。