哪里可以放置Controller的可重用功能

时间:2017-11-30 16:26:27

标签: php laravel-5.5

我创建了一个类似于getAllCitiesOfLocations()。这个功能为我提供了一系列城市。我希望这个功能可重复使用,例如用于ServiceController的索引功能。在index函数中,我想调用函数getAllCitiesOfLocations()来获取信息,然后将其传递给视图。

然而,我是红色的,从另一个控制器调用函数是不合适的风格。而且,我是红色的,我应该创建一个帮助类。不幸的是,当我搜索有关如何创建帮助程序类的信息时,我只找到有关为视图创建帮助程序类的信息。你能告诉我吗

1。)我应该把功能放在哪里,如果需要,应该由不同的控制器调用,

2。)如果函数不在同一个控制器内,我以后如何调用该函数?

  public function getAllCitiesOfLocations(){
    $cities = DB::table('locations')
                ->select('city')
                ->groupBy('city')
                ->get();
    return $cities;
  }

3 个答案:

答案 0 :(得分:2)

这种功能属于模型,而不属于控制器。通常,如果它处理数据库,你就把东西放在模型中。

答案 1 :(得分:1)

你可以使用像这样的辅助类

 namespace App\Services;

 class Helper {

      public static function getAllCitiesOfLocations(){
           // Code goes here
      }

 }

我通常将它存储在app / services文件夹中,但您可以随意使用它。然后在您的控制器中,您可以像这样访问它们:

 App\Services\Helper::getAllCitiesOfLocations();

您还可以将laravel自动加载此类,方法是将其添加到config/app.php

中的别名数组中
 'Helper' => App\Services\Helper::class

然后在从Helper类调用方法时,只需

  Helper::getAllCitiesOfLocations();

答案 2 :(得分:1)

您要做的是拥有模型。然后,您可以在您想要的任何控制器中使用该模型。

请阅读http://requiremind.com/a-most-simple-php-mvc-beginners-tutorial/以开始使用MVC模型。