【问题标题】:Laravel call function from another controller during validation for Paypal payment在验证 Paypal 付款期间从另一个控制器调用 Laravel 函数
【发布时间】:2015-05-17 01:37:21
【问题描述】:

我有一个注册表单(这里使用 Laravel 5),在提交时会调用 BusinessController@postRegister

public function postRegister(Requests\RegisterBusinessRequest $request)
{
#1. get input, fill new class and save to database
#2. call PayPayController@postBusinessProvider
}

我想要做的是调用我的 PayPalController 函数来处理付款,我试过 return Redirect::action('PayPalController@postBusinessProvider'); 但这似乎不起作用。

我是否必须简单地创建一个路由来调用另一个控制器的函数,或者是否有另一种方法而不创建路由?或者我应该把我的 PayPal 代码放在 postRegister 函数中,我认为分开更干净?

【问题讨论】:

    标签: php paypal laravel-5


    【解决方案1】:

    在 MVC 模型(和 Laravel)中,一个控制器不会在一个请求中调用另一个控制器。为了使您的控制器业务更简单,您可以使用以下两个选项之一:

    选项 1

    将控制器逻辑分成小部分,每个部分由同一控制器类的privateprotected 方法解决。这样你的控制器就会是这样的:

    public function postRegister(Requests\RegisterBusinessRequest $request)
    {
        $this->_validateInput();
        $this->_processInput();
        $this->_doWithPaypal();
    }
    

    选项 2

    在这里创建一个存储库类和所有复杂的逻辑。在您的控制器方法中,获取存储库实例并将您的输入数据作为此实例方法的参数传递。您可以在 zizaco/confide 包中查看和示例。你的控制器会是这样的:

    public function postRegister(Requests\RegisterBusinessRequest $request)
    {
        $repo = App::make('PaypalRepositoryClass');
        // process your input
        // ...
        // ...
        $repo->paypalBusiness($data);
    }
    

    【讨论】:

    • 感谢您的澄清,我想我会选择选项 1 :)
    猜你喜欢
    • 2012-04-10
    • 1970-01-01
    • 2016-02-23
    • 2016-04-24
    • 2015-06-19
    • 2023-03-25
    • 2017-08-20
    • 1970-01-01
    • 2019-04-12
    相关资源
    最近更新 更多