2017-12-26 31 views
0

나는 Symfony3에서 데이터를 mysql 데이터베이스에 게시하는 기능을 가지고있다. 이 기능은 다음과 같습니다 Symfony 3로 포스트 요청을 하시겠습니까?

/** 
* @Route("/LegoPieces") 
* @METHOD("POST") 
* @View() 
* 
* @Annotations\QueryParam(
* name="piece", nullable=false, description="piece" 
*) 
* @Annotations\QueryParam(
* name="type", nullable=false, description="type" 
*) 
* @Annotations\QueryParam(
* name="startDate", nullable=false, description="Start Date YYYY-MM-DD HH:MM:SS (Should be in the future)" 
*) 
* @Annotations\QueryParam(
* name="endDate", nullable=false, description="End Date YYYY-MM-DD HH:MM:SS (Should be no more than 3 weeks in the future)" 
*) 
*/ 
public function postAction(ParamFetcherInterface $paramFetcher) 
{ 
    $piece = $paramFetcher->get('piece'); 
    $type = $paramFetcher->get('type'); 
    $start = $paramFetcher->get('startDate'); 
    $end = $paramFetcher->get('endDate'); 
    $startDate = DateTime::createFromFormat('Y-m-d H:i:s', $start); 
    $endDate = DateTime::createFromFormat(' Y-m-d H:i:s', $end); 
    $em = $this->getDoctrine()->getManager('default'); 
    $data = new LegoPieces(); 
    $data->setPiece($piece); 
    $data->setType($type); 
    $data->setStartDate($startDate); 
    $data->setEndDate($endDate); 
    $em->persist($data); 
    $em->flush(); 

    return new JsonResponse("LegoPieces Added Successfully", 200); 
} 

내가 POST 요청 작동 문자열 변수 ($ 조각, $ 유형, $ startDate를, $ endDate가)를 대체

. 그러나 Postman이나 javascript와 같은 것을 통해 게시물 요청을하려고 할 때 :

fetch("http://localhost:8000/LegoPieces", { 
    method: "POST", 
    body: { 
     startDate: this.startDate, 
     endDate: this.endDate, 
     piece: this.piece, 
     type: this.type 
    } 
    }).then(response => response.json()) 
); 
}); 

나는 500 오류가 발생합니다! 너의 도움에 감사한다.

+0

는 심포니 프로파일 결과를 확인 했습니까? – LugiHaue

답변

2

오류가 무엇인지 로그에서 확인하십시오.

하지만 컨트롤러를 개선해야합니다. 당신은 Symfony Form을 사용하지 않으며 당신은 어떠한 검증도하지 않습니다. 500 개의 오류가 없더라도 나중에 엔티티 유형을 존중하지 않으면 나중에 일부 오류가 발생합니다.

게시 요청을 사용하는 이유를 모르며 본인의 모든 매개 변수를 전달하지 않습니다. 당신은 URL에 get 매개 변수만을 사용합니다.

+0

원래 본문을 매개 변수로 전달하는 데 사용 된 본문은 javascript에서 게시 요청을 받았지만 아무 것도 표시하지 않습니다. 오류가 '부울 (boolean)에 대한 멤버 함수 형식() 호출 - 날짜 매개 변수를 얻지 못해서 생각한 것입니다! – Nespony

+0

@Nespony 예 엔터티의 수화를 관리하고 유효성을 검사하는 데 Form 구성 요소를 사용해야합니다. get 매개 변수, 날짜 형식 및 생성에 대해 걱정할 필요가 없습니다. 유효성 검사 후에 엔티티가 db에 유지 될 수 있다고 가정 할 수 있습니다 – Mcsky

-1

예외가 500하게 모르고 - 당신은

시도가 정보없이 응답 본문

을 볼 수 :(아무것도 몰라 -. 내가 하나 개의 아이디어가를

당신이 dev에 작업 ARW 경우 envionment, 다음 youur JS 요청은 단순히 경로 (그리고 다른 것들) 캐시 폴더의

분명 모든 내용을 볼 수 없습니다

rm -rf var/cache/*

php bin/console c:w -e prod