$ form-> bind($ request)Symfony2.3中的错误

时间:2016-01-05 12:51:35

标签: php web-services symfony

我是Symfony的新手,并尝试修复错误。我通过restApi插入数据时出现 Access-Control-Allow-Origin标头出现在请求的资源上错误。

这是一个以给定格式发送数据的restful api:

{"default_runs":["24"],"date":1451932200,"driver":107}

控制器

public function postScheduleAction(Request $request)
{   
    $user = $this->getUser();
    $user_id = $user->getId();
    $entity = new Schedule();
    $form = $this->createForm(new ScheduleType(), $entity);
    $now = time();

    $data = json_decode($request->getContent(), true);
    $data["is_default"] = true;
    $data["status"] = 0;            

    $finalData = array_merge($data,array("created_time"=>$now,"created_by"=>$user_id));
    $request->request->replace(is_array($finalData) ? $finalData : array());

    //I have checked, code is working fine till this line,
    //but after bind the form it gives me error

    $form->bind($request);

    if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($entity);
        $em->flush();

        return array(
            'id' => $entity->getId(),
        );
    }

    return array(
        'form' => $form,
    );

}

Conclusion after debugging

我搜索了很多,转储到每一行,最后我用自定义的php-msql插入查询更改了symfony的插入功能,然后它工作正常。

所以现在我知道$form->bind($request);行有任何错误,通过错过Access-Control-Allow-Origin标题的任何胎儿错误,我都会收到错误。

有人可以帮助我抓住$form->bind($request);中的错误,以便我可以解决该错误。

由于

3 个答案:

答案 0 :(得分:0)

我认为您的错误不同,并说:

"请求的资源上没有Access-Control-Allow-Origin标头"

并出现错误,因为您想从服务器所在的其他域发出AJAX请求。

它与Same Origin Policy相关联,您可能需要实施CORS

同时检查以下链接:

答案 1 :(得分:0)

Access-Control-Allow-Origin: *

必须位于RESTful api响应的标题中,或者它需要与您的域名一起使用,否则它是跨源资源共享(大多数站点都不允许)。

您仍然可以在域内的服务器上代理外部资源(甚至包括标题),然后使用您的控制器点击它。

答案 2 :(得分:0)

我找到了问题并且问题已经解决,感谢所有人的回答。

实际上问题不在于Access-Control-Allow-Origin标题(CORS)。数据库外键关系存在问题。子表中存在与父表无关的错误条目。

因此,在绑定表单$form->bind($request);时,它正在检查外键关系,并且由于该错误的条目而失败,并且它返回未格式化的错误(带有Access-Control-Allow-Origin标头)。这就是它向我显示Access-Control-Allow-Origin header is present on the requested resource错误的原因。