在Symfony中路由yml文件时传递构造函数参数

时间:2015-11-26 10:27:29

标签: php ajax symfony yaml

我试图在我的Symfony2项目中调用路由时遇到一些问题,因为我指向的控制器需要参数(即用户名和密码)才能实例化。

以下是这种情况:

我将Kashflow集成到我的项目中,我需要做的一件事就是能够将我的CRM的发票付款发送到Kashflow帐户。当"推付款"单击按钮,它运行一个ajax调用,它将所需数据发送到我的Kashflow控制器中名为prepareInvoicePayment()的方法,并且出于测试目的,只需返回请求,以便我可以看到返回的内容。

我的阿贾克斯:

$('.push-kashflow-payment').on('click', function(e) {
        var answer = confirm('Are you sure?');
        var invoiceID = $(this).attr('id').split("_")[0];
        var accountID = $(this).attr('id').split("_")[1];
        var method = 2;
        var amount = $(this).parent().parent().find('.amount').html();

        if (answer) {
            $.post('/kashflow-push-payment', { invoiceID: invoiceID, method: method, accountID: accountID, amount: amount  }
            ).done( function(response) {
                console.log(response);
            });
        }

        e.preventDefault();

        return false;
    });

问题:

我的路由文件包含以下条目:

app_push_kashflow_payment:
    path: /kashflow-push-payment
    defaults: { _controller: AppBundle:Kashflow:prepareInvoicePayment }

但是Kashflow类需要将用户名和密码传递给构造函数:

function __construct($user, $pass)
    {
        // Set the username and password
        $this->username = $user;
        $this->password = $pass;

        // Hide some simple XML errors we dont want to see
        libxml_use_internal_errors(true);
    }

当ajax请求发送到控制器时,我收到以下错误:

  

警告:缺少参数1   的appbundle \控制器\ KashflowController :: __构建体()

所以,我的问题是,如何在路由文件中传递这些值?这甚至是这样做的方式吗?如果可能的话,我宁愿在我的parameters.yml文件中设置我的用户名和密码,然后引用它 - 但无论哪种方式,我都需要能够传递这些参数才能使调用工作。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

您需要将控制器定义为服务:How to Define Controllers as Services并传递服务定义配置中的所有参数。