【问题标题】:Laravel routing: how to pass parameter/arguments from one controller to controllerLaravel 路由:如何将参数/参数从一个控制器传递到控制器
【发布时间】:2015-01-21 13:18:29
【问题描述】:

我有两个控制器,一个控制器调用另一个控制器。我在控制器 1 上完成了一些处理,并希望将数据传递给控制器​​ 2 进行进一步处理。

控制器 1:

public function processData() 
  {
    $paymenttypeid = “123”;
    $transid = “124”;
    return Redirect::action('Controller2@getData');
  }

控制器 2:

public function getData($paymenttypeid, $transid ) 
{
}

错误:

Missing argument 1 for Controller2::getData() 

如何将参数从控制器 1 传递到控制器 2?

【问题讨论】:

    标签: laravel laravel-4


    【解决方案1】:

    这确实不是一个好方法。

    但是,如果您真的想重定向和传递数据,那么像这样会更容易:

    <?php
    
    class TestController extends BaseController {
    
        public function test1()
        {
            $one = 'This is the first variable.';
            $two = 'This is the second variable';
    
            return Redirect::action('TestController@test2', compact('one', 'two'));
        }
    
        public function test2()
        {
            $one = Request::get('one');
            $two = Request::get('two');
    
            dd([$one, $two]);
        }
    
    }
    

    注意我不需要控制器方法中的参数。

    给猫剥皮的方法有很多,而你试图做的不是一个好方法。我建议先看看如何使用服务对象,如this video 和无数教程中所述。

    如果您不小心,很快您的控制器就会变得笨拙。更糟糕的是,当您想从另一个控制器调用控制器方法时会发生什么?哎呀!一种解决方案是使用服务对象,将我们的域与 HTTP 层隔离。

    -杰弗里·韦

    【讨论】:

    • 谢谢,我正在查看服务对象。
    猜你喜欢
    • 2021-01-28
    • 2019-07-10
    • 1970-01-01
    • 2019-06-18
    • 2017-05-14
    • 1970-01-01
    • 2013-08-15
    • 2016-05-16
    • 2017-01-12
    相关资源
    最近更新 更多