具有多种功能的控制器

时间:2017-06-28 15:00:57

标签: php laravel model-view-controller laravel-5

我目前是laravel的新手,我非常高兴真正开始使用它。当我通过网站从非框架标准过渡到Laravel时,我希望尽可能地跟踪组织。

根据我的理解,控制器应仅用于一个主要目的,以便您可以将其作为:

运行
Route::get("/", "TestController@run"); //example

此控制器应仅为该特定功能生成数据。

我的问题是,在我的网站上,我将有两个独立的脚本需要将数据传送到我的前端。

在一个控制器中连接两个数据是否可以接受,或者这是不好的做法? 有更清洁的方法吗?

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;

class TestController extends Controller
{
    protected $data1 = [];
    protected $data2 = [];

    public function __construct()
    {
        $this->middleware('auth');
    }

    public function run() 
    {
        return view("welcome", array_merge($this->data1, $this->data2));
    }

    protected function getData1 
    {
        $this->data1 = [somedata..]
    }

    protected function getData2 
    {
        $this->data2 = [somedata..]
    }
}

1 个答案:

答案 0 :(得分:0)

这是可以接受的。为了便于阅读,我个人会分开。您还可以使用with方法绑定数据。

return view('welcome')
               ->with('data1', $this->getData(1))
               ->with('data2', $this->getData(2));

https://laravel.com/docs/5.4/views