当我在控制器中使用该变量时,我有变量设置我在AppServiceProvider
中的所有视图:
未定义的变量
AppServiceProvider.php
View::composer('*', function ($view) {
$ProductSettings = ProductSetting::all();
foreach($ProductSettings as $psetting){
$show_unavailable = $psetting->show_unavailable;
$show_quantities = $psetting->show_quantities;
$product_pagination = $psetting->pagination;
$max_short_desc = $psetting->max_short_desc;
$allow_delivery_time = $psetting->allow_delivery_time;
$addtocart_on_attribute = $psetting->addtocart_on_attribute;
$outofstock_lable = $psetting->outofstock_lable;
$product_orderby = $psetting->orderby;
}
$view->with('show_unavailable', $show_unavailable);
$view->with('show_quantities', $show_quantities);
$view->with('product_pagination', $product_pagination);
$view->with('max_short_desc', $max_short_desc);
$view->with('allow_delivery_time', $allow_delivery_time);
$view->with('addtocart_on_attribute', $addtocart_on_attribute);
$view->with('outofstock_lable', $outofstock_lable);
$view->with('product_orderby', $product_orderby);
});
调节器
//codes...
$products = Product::whereHas('categories', function ($query) use ($slug) {
$query->where('slug', $slug);
})->paginate($product_pagination);
//codes...
基于我的数据库值product_pagination
设置为12
,这意味着我的代码如下:->paginate(12);
知道为什么我会得到未定义的错误吗?
table
根据评论,我将假设这将工作:
$products = Product::whereHas('categories', function ($query) use ($slug) {
$query->where('slug', $slug);
})->paginate(ProductSetting::first()->pagination);
由于您在product_settings
表中只有一行,因此您只需访问该表的第一行,就可以从那里访问您需要的任何列。
根据回应,显然上述“太长”了。 我对这个问题唯一的另一种选择是:
App::singleton('product_settings', function () {
return ProductSetting::first();
});
在AppServiceProvider
方法中,在boot
(或您选择的任何提供者)中编写此方法。
然后,可以使用以下代码在任何地方使用它:
app('product_settings')->pagination;
// or, more simply:
app('product_settings')-><some column name>;
如果您认为代码仍然太多,那么您可以使用singleton
方法使用相同的格式注册原始变量,并在第一次方法调用后添加-><some column name>
。
上面的编辑与原始解决方案没有任何不同,并且仍然会在每次调用app
方法时进行查询。
如果要将数据库调用保持为每个控制器一个,那么可以将ProductSetting::first()
存储到BaseController:
class BaseController extends \Controller
{
protected $product_settings;
public function __construct()
{
// Fetch the Site Settings object
$this->product_settings = ProductSetting::first();
}
}
然后在每个控制器中你可以调用$this->product_settings->pagination
。