【问题标题】:Pass variable from one controller to another laravel 5.4将变量从一个控制器传递到另一个 laravel 5.4
【发布时间】:2017-05-01 23:51:41
【问题描述】:

我正在尝试将请求变量从表单请求传递到另一个控制器(第二个控制器中会有很多代码,所以我想用它来保持主控制器的清洁),但是当我尝试并将变量传递过来,没有任何反应,变量数据没有发送过来。

这是我当前的代码:

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。

【问题讨论】:

  • “数据未发送过来”是什么意思?你有错误吗? null?
  • @louisfischer 没有错误或任何东西,只是一个空白页。
  • 好吧,你没有返回任何东西。但是您的代码应该可以正常工作。尝试在$otherClass = (new secondController... 之后添加dd($otherClass);
  • @louisfischer 在我的主控制器上,如果我返回请求,它会正常返回,但是当我尝试在第二个控制器上返回请求时,什么也没有发生。
  • 我想我明白了。您可以在下面看到我的详细答案。

标签: laravel laravel-5.4


【解决方案1】:

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

  1. new secondController 实例化secondController

  2. createDBEntry($request)调用方法createDBEntry通过 $request

  3. 返回值存放在变量$otherClass

就是这样!没有什么(并且将会)发生。如果您想查看 $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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多