代码之家  ›  专栏  ›  技术社区  ›  senty

是否可以添加数据以查看来自控制器构造函数的数据

  •  0
  • senty  · 技术社区  · 6 年前

    我有一个数据,我想在我所有的控制器方法中返回,我认为从控制器的构造函数返回会更干净;因为现在只是重复的返回码。

    protected $data;
    
    public function __construct() {
       $this->data = "Test";
    }
    
    public function index() {
       // Stuff
    
       return view('test')->with([
           'testData' => $this->data
            // other view data
       ]);
    }
    
    public function store() {
       // Stuff
    
       return redirect()->back()->with([
           'testData' => $this->data
            // other view data
       ]);
    }
    

    这只是一个伪例子。

    5 回复  |  直到 6 年前
        1
  •  1
  •   Jaime Rojas    6 年前

    是的,那是可能的。完全按照你展示的方式来做。

    然而,我不认为这是最好的办法。你可能想看看 ViewComposers ,这有助于在控制器之后但在视图最终提供给用户之前向视图(或多个视图)提供数据集。

        2
  •  1
  •   Devon Bessemer    6 年前

    您可以编写一个控制器方法来为您附加数据属性:

    protected function view($name, $data = []) 
    {
        return view($name, $data + $this->data);
    }
    
    public function index() {
        ...
        return $this->view('view', ['other' => 'data']);
    }
    
        3
  •  1
  •   Yves Kipondo    6 年前

    ViewComposer 它允许您在每次渲染某些视图时将数据附加到视图

    namespace App\ViewComposers;
    class DataComposer
    {
    
        protected $data = ['1', '2', '3']; // This data is just for sample purpose
    
        public function compose(View $view)
        {
            $view->with('data', $this->data);
        }
    }
    

    并将此编写器注册到所有视图的列表中,这些视图上的数据必须附加在 boot 方法关闭 AppServiceProvider

    View::composer(
        ['view1', 'view2', 'view3', '....'],
        'App\ViewComposers\DataComposer'
    );
    
        4
  •  0
  •   Jignesh Joisar    6 年前

    创建 after middleware 但是,该中间件将在应用程序处理请求之后执行其任务

        5
  •  0
  •   Paras    6 年前

    是的,这是非常有可能与你的代码

    ['testData' => $this->data] 从所有的控制器方法,然后您可以使用 view composers .

    one view