Laravel 5 Laravel 5如何在我的简单控制器逻辑中遵循DRY?

Laravel 5 Laravel 5如何在我的简单控制器逻辑中遵循DRY?,laravel-5,Laravel 5,我的控制器中有一些简单的逻辑。但我经常用其他方法。这里有一个例子 在我的控制器里 public function method1() { if(isset(Auth::user()->showroom->name)){ $showroomName = Auth::user()->showroom->name; }else{ $showroomName = "Belum Ada Izin"; }

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

在我的控制器里

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
在我的情况下,我如何遵循干燥原则

任何帮助都将不胜感激


提前感谢。

在您的展厅模型中,您可以包括以下功能:

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

假设您希望在任何地方使用
showroom->name
的行为。如果没有,则使用函数
getNameWithDefaultAttribute
,选中主体中的
$this->name
,并在控制器中引用它,如
Auth::user()->showroom->name_with_default

,在您的展厅模型中,您可以包括以下函数:

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

假设您希望在任何地方使用
showroom->name
的行为。如果没有,则使用函数
getNameWithDefaultAttribute
,选中主体中的
$this->name
,并在控制器中引用它,如
Auth::user()->showroom->name_with_default

要获得更简洁的语法,请使用
data_get
helper:

data_get(Auth::user(), 'showroom.name', 'your default value');
在大多数情况下,这很方便,但并不总是最好的方法


然而,在您的示例中,似乎实际上您只想使用文档中描述的
share
View Composer

对于更简洁的语法,请使用
data\u get
helper:

data_get(Auth::user(), 'showroom.name', 'your default value');
在大多数情况下,这很方便,但并不总是最好的方法


然而,在您的示例中,似乎实际上您只想使用文档中描述的
share
View Composer

我应该在哪里放置
data\u get()
函数?因此,我可以像
$showroomName=dataGetShowroomName()
那样调用我的控制器,而不是
$showroomName=data\u get(Auth::user(),'showroom.name','your default value')只要把它放在你需要的地方。控制器不错,除非它是一个“全局”变量,否则您可以在
app/helpers.php
文件(您将添加到composer
autoload->files
array)中注册一个函数。我应该将
data\u get()
函数放在哪里?因此,我可以像
$showroomName=dataGetShowroomName()
那样调用我的控制器,而不是
$showroomName=data\u get(Auth::user(),'showroom.name','your default value')只要把它放在你需要的地方。控制器不错,除非它是一个“全局”变量,否则您可以在文件中注册一个函数,例如,
app/helpers.php
文件(您将添加到composer
autoload->files
array)