2013-09-25 2 views
0

먼저 컨트롤러에 일부 문자열을 전송하는 양식이 있습니다. 이 컨트롤러는 먼저 데이터베이스의 해당 엔터티에 액세스 한 다음 해당 엔터티의 해당 문자열을 업데이트하려고합니다. 내가이 줄을 넣어 테스트 목적으로symfony2에서 데이터베이스에 대한 요청 문자열이 지속되지 않습니까?

$message = $request->request->get('message'); 

이 : 다음과 같이

나는 매개 변수를 검색

echo '<script>alert("the message is: ' . $message . '");</script>'; 

가 예상 메시지를 경고 - 그래서 내가 가서 가정> 그 $ 메시지 변수는 실제로 내 컨트롤러에 "올바르게"만듭니다.

$entity->setMessage($message); 

이 데이터베이스에서 빈 값 결과 :

다음, 나는 엔티티 정보를 업데이트합니다. 오류가없고 서버가 손상되지 않습니다. $message은 결코 운명에 도달하지 않습니다.
내 다음 가정은 엔티티 함수 setMessage에 문제가있을 수 있으므로 가능하면 모든 가능한 조합에서 (문자열) 캐스팅을 사용했습니다.

다음으로 나는 var_dump을 모든 곳에 적용 할 수 있습니다. 그리고 심지어는 엔티티 속성 메시지가 "string(x)" xxxx

그래서 나는 아마

$em->persist($entity); 

$em->flush(); 

을 잊어하지만 가진 것 같았다 심지어 가정 것이 지금까지

을 "잘가 제대로 할당됩니다"생각 넣어

나는 새로운 시험을 생각했다. 나는 $ test라는 새로운 변수를 만들었고, 임의의 문자열을 할당하고, setMessage를 호출했다. 당연히 이것이 가능하지 않을 수도 있다고 가정했다. 그게했다. 그것은 부드럽게 지속되었습니다.

요약하자면, 정확한 엔티티를 얻고, 문자열이로드되고 컨트롤러 내에 실제로 존재하며, 엔티티 메소드가 완벽하게 작동합니다. 엔티티 관리자는 계속해서 원하는 방식으로 플러시합니다.

무엇이 잘못 되었나요? 내 $test 문자열과 $message 문자열 사이의 유일한 차이점은 내가 알 수있는 것은 $message이라는 요청에 따른 것입니다. 그 문제에 대한 나의 지식이 제한적인 것 같습니다.

답변

0

문제의 해결책을 찾았습니다. 나는 보편적 인 문제 해결사 인 것처럼 보인다. 컴퓨터를 종료하고, 집에 돌아가서 다음날 다시 오면 작동합니다.

상황에 따라 컨트롤러의 이전 실행에서 $ 메시지를 저장하고 올바르게 지우지 않은 브라우저/심포니 캐시 문제/버그/오류 - 사용자 대신 일종의 브라우저가 있어야한다고 생각합니다. $ 메시지 문자열은 항상 컨트롤러에 정확히 도달했지만 영구적 인 것은 아닙니다. 그래서 (캐시 문제 일 경우) $ 메시지가 컨트롤러에서 엔티티 메소드/엔티티 자체로가는 도중에 어딘가에 캐시되었거나 엔티티 관리자 자체가 캐시 된 버전의 엔티티를 가지고 $ message가 사용될 때마다이를 사용했습니다 .

내가 생각해 낸 설명입니다. 누군가가 교육을 통해 추측을하거나 실제로 어떤 일이 발생했는지 알고 있다면 알려주십시오.

관련 문제