模拟控制器内的请求

时间:2017-06-06 10:00:13

标签: symfony

我在symfony项目中工作,我的控制器中有两个功能:

function1Action ($request Request, $product) {
    $quantity = $request->request->get('quantity')
    //dothingshere
}
function2Action($product, $value) {
    $em = $this->getDoctrine()->getManager();
    $pattern = $em->getRepository('repo')->find($value)
    //return an array ['quantity'=>x]
    $this->function1Action($pattern, $product)
}

通常用户使用良好的请求参数调用函数1(post request)。所以这里一切都很好。我的问题有时候,功能2将被呼叫,当我需要呼叫功能1但我没有正确的请求而我想发送$pattern

所以我找到了3个解决方案

解决方案1: 创建function1bis,它与function1执行相同的操作,但将数组作为参数

解决方案2:在我的第一个函数

中启动一个空值
function1 ($request Request, $product, $patt=null) {
    if(!$patt){
        $quantity = $request->request->get('quantity')
    }
    else {
        $quantity = $patt['quantity']
    }
    //dothingshere
}
function2($product, $value) {
    $em = $this->getDoctrine()->getManager();
    $pattern = $em->getRepository('repo')->find($value)
    //return an array ['quantity'=>x]
    $this->function1Action(null, $product, $pattern);
}

解决方案3: 在function2中创建一个对象Request。

我试图做解决方案3,但我无法找到并且我想知道希望一个人是最好的'如果解决方案3是不错的编程

1 个答案:

答案 0 :(得分:1)

我终于做了选项1.似乎更合乎逻辑,并且可以在其他时刻使用它。解决方案2似乎有风险,因为null参数可能导致其他地方的问题而解决方案3会占用更多的资源,因为我必须在我的function2中做一个foreach。所以我的解决方案看起来像这样:

function1Action ($request Request, $product) {
    $quantity = $request->request->get('quantity')
    //dothingshere
}
function1bis($pattern, $product) {
    $quantity = $pattern['quantity']
    //dothingshere
}

function2Action($product, $value) {
    $em = $this->getDoctrine()->getManager();
    $pattern = $em->getRepository('repo')->find($value)
    //return an array ['quantity'=>x]
    $this->function1bis($pattern, $product)
}