将变量从一个控制器传递到另一个控制器5.4

时间:2017-05-01 23:51:42

标签: laravel laravel-5.4

我正在尝试将请求变量从表单请求传递到另一个控制器(第二个控制器将在其中包含大量代码,因此我想使用它来保持主控制器清洁),但是当我尝试并且传递变量,没有任何反应,变量数据不会被发送。

这是我目前的代码:

class mainController extends Controller{

public function store(Request $request)
    {
        //validation


        $otherClass = (new secondController)->createDBEntry($request);
    }

}

class secondController extends Controller{

public function createDBEntry($request)
    {
        return $request;
    }

}

但是,没有任何内容从$ request传递到secondController。如果我在secondController中回应一些东西它没有问题,所以我知道它被调用了,但是数据没有被发送过来。我在这里错过了什么?请记住,我对laravel相当新,我使用的是5.4。

1 个答案:

答案 0 :(得分:0)

您的代码运行正常。你只是期待一种永远不会发生的行为,因为:

  1. new secondController实例化secondController

  2. createDBEntry($request)调用传递的方法createDBEntry $request

  3. 返回的值存储在变量$otherClass

  4. 就是这样!没有更多的(并且将会)发生。如果您想查看$otherClass的值(并查看您的代码是否有效),则必须将其返回:

    class mainController extends Controller
    {
        public function store(Request $request)
        {
            $otherClass = new secondController
            $otherClass->createDBEntry($request);
    
            return $otherClass;
        }    
    }
    
    class secondController extends Controller
    {
        public function createDBEntry($arg)
        {
            return $arg;
        }
    }