Laravel 5如何在简单的控制器逻辑中关注DRY?

时间:2016-09-22 15:56:46

标签: laravel-5

我的控制器中有一些简单的逻辑。但我经常在其他方法中使用它。这是一个例子。

在我的控制器中。

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原则?

任何帮助将不胜感激。

提前致谢。

2 个答案:

答案 0 :(得分:0)

在您的陈列室模型中,您可以包含以下功能:

public function getNameAttribute($value)
{
    return isset($value) ? $value : 'Belum Ada Izin';
}

假设您希望在任何地方showroom->name使用该行为。如果没有,请创建函数getNameWithDefaultAttribute,检查正文中的$this->name,并在控制器中引用它,如Auth::user()->showroom->name_with_default

答案 1 :(得分:0)

要获得更清晰,更短的语法,请使用data_get helper:

data_get(Auth::user(), 'showroom.name', 'your default value');

这在大多数情况下都很方便,但并不总是最好的方法。

但是,在您的示例中,似乎您可能只想share this variable across your views - 使用文档中描述的shareView Composer