Laravel 5如何在我的简单控制器逻辑中遵循DRY?
问题描述:
我在我的控制器中有一些简单的逻辑。但我经常以其他方法使用它。这是一个例子。Laravel 5如何在我的简单控制器逻辑中遵循DRY?
在我的控制器中。
public function method1()
{
if(isset(Auth::user()->showroom->name)){
$showroomName = Auth::user()->showroom->name;
}else{
$showroomName = "Belum Ada Izin";
}
return view('method1view', compact('showroomName'));
}
public function method2()
{
if(isset(Auth::user()->showroom->name)){
$showroomName = Auth::user()->showroom->name;
}else{
$showroomName = "Belum Ada Izin";
}
return view('method2view', compact('showroomName'));
}
... so on
我如何在我的情况下遵循DRY原则?
任何帮助将不胜感激。
在此先感谢。
答
更清洁和更短的语法控制器引用它,使用data_get
帮手:
data_get(Auth::user(), 'showroom.name', 'your default value');
这在大多数情况下,来得心应手,但并不总是最好的方法。
然而,在你的例子看来,也许其实你想简单地share this variable across your views - 使用share
或文档中描述的View Composer
。
答
在你的陈列室模型,你可以包括以下功能:
public function getNameAttribute($value)
{
return isset($value) ? $value : 'Belum Ada Izin';
}
这是假设你想要的行为随处可见showroom->name
使用。如果没有,请功能getNameWithDefaultAttribute
,在身体检查$this->name
,并在像Auth::user()->showroom->name_with_default
任何意见我应该在哪里放'data_get()'函数?所以我可以在我的控制器中调用像'$ showroomName = dataGetShowroomName()'而不是'$ showroomName = data_get(Auth :: user(),'showroom.name','您的默认值');' –
只要把它放在哪里你需要它。控制器并不坏,除非它是一个'全局'变量 - 那么你可以在'app/helpers.php'文件中注册一个函数(你将添加到作曲者'autoload - > files'数组中) –