伙计们,我是一个部分的_create-note-modal.blade.php,我试图与所有的页面共享这个部分,这是因为我把它包含在main.blade.php模板中。
问题:
这个_create-note.blade.php部分文件使用雄辩器从数据库中获取所有用户。这个用户变量需要与所有其他视图共享,因为它会出现错误。
我试过的是:
我试着在我的Controller.php上写这个。
$users = User::all();
View::share('users', $users);问题是:
这是最好的方法吗?如果我有一个我想要分享的全部功能呢?
备注:
$users = User::all()拥有所有的用户,但实际上我的项目是一家公司的客户关系管理,它有25个用户,将来的用户不会超过100个,这是很难实现的。
此外,我返回所有的用户只是为了查看他们在<select>和<option>选择。
有更好的解决办法吗?
谢谢
发布于 2017-01-22 07:05:40
实际上,我不建议您无限制地调用所有用户的数据。但你有几个选择。其中之一,您已经提供了,使用construct您可以在视图中调用您的用户变量。
选项1:
public function __construct(){
$users = User::all();
View::share('users', $users);
}选项2
在controller.php中,您可以创建一个简单的函数
protected function getUsers(){
return User::all();
}然后,您可以在控制器中调用$this->getUsers。在此选项中,此查询将在您调用它时工作。
选项3
只需制作一个中间件并将其返回给控制器即可。
class getUsers {
public function handle($request, Closure $next)
{
$users = User::all();
$request -> attributes('users' => $users);
return $next($request);
}
}在你的控制器里
return Request::get('users');更新
如果希望在属于此控制器的所有视图中的select下拉列表中加载用户,则可以使用第一个选项。但是您的查询应该是这样的:
$users = Users::pluck('name', 'id');
View::share('users', compact('users'));您可以轻松地在选择下拉列表中加载所有用户:
Form::select('users', $users, null);如果要将用户的id标记为selected,则可以将其替换为null。
但是,如果您想在某些视图中调用用户查询,我建议您使用第二个选项。
发布于 2017-01-22 06:56:03
这是个相当宽泛的问题。我不认为版主会接受它。要回答这个问题,你需要更多地了解这个应用程序。在一个只有几个视图的应用程序中,这段代码可能是可以的,在这个应用程序中,您总是显示该表单,并且假设总是有几个用户。这句话:
$users = User::all();如果你有大量的用户存储,可能会非常有害。因此,我们可以谈论一天关于在视图中共享一些东西,另一天关于在所有视图中包含相同的形式,另一天总是发送所有用户的集合(这是一个选择器吗?自动完成?就为了把他们列出来?每一种情况都可能有不同的解决方案)
发布于 2017-01-22 07:29:52
在正式文档中有一节描述了这个确切的场景。
见:与所有视图共享数据。App\Providers\AppServiceProvider.php应该已经存在于您的项目结构中,它是在安装程序运行时默认创建的。但是,我会非常小心,除非您确实需要在每个页面上使用这个查询,否则如果您添加了这样的几个全局数据库查询,它可以很容易地减缓站点的速度。
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
View::share('key', 'value');
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
//
}
}https://stackoverflow.com/questions/41788104
复制相似问题