PHP Symfony 4에서 POST 글로벌 변수를 가져오는 방법은 무엇입니까?
Symfony 4의 POST 글로벌 변수 결과를 얻는 데 매우 이상한 문제가 있습니다.
저는 다음과 같이 시도했습니다.
$date = $request->request->get('date');
캘린더 입력 날짜가 변경되었을 때 실제로 AJAX 요청을 보내는 방법은 다음과 같습니다.
onSelect: function(date, instance) {
$.ajax({
url : 'home',
type : 'POST',
data : {'date':date},
dataType : 'html',
success : function(code_html, statut){
console.log(statut);
},
error : function(resultat, statut, erreur){
},
complete : function(resultat, statut){
}
});
onSelect 콜백이 원하는 날짜 값을 성공적으로 수신합니다.
그리고 이 결과는 날짜 변수에 대한 올바른 값을 가진 200개의 성공 코드를 보여줍니다.
그렇지만$date
이라null
.
당신의 코드에서 헤더나 그와 유사한 것에는 문제가 없으며, jQuery 요청은 그대로 맞습니다(당신의 코드를 테스트했습니다).
질문에 없는 PHP 코드에 문제가 있을 수 있습니다.
물체를 올바르게 주입하는 경우 쉽게get()
포스트 변수를 검색합니다.
예:
namespace App\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class VeryDefaultController extends AbstractController
{
/**
* @Route("/very/default", name="very_default")
* @param Request $request
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function index(Request $request)
{
$date = $request->get('date');
}
}
당신의 예에서 당신은 하고 있습니다.$request->request->get('date')
또는 요청에는 괜찮지만, 당신이 주입하지 않기 때문에 아마도 실패할 것입니다.Request
정확하게 반대합니다.
위의 코드는 당신의 jQuery AJAX POST 요청으로 테스트되었으며 작동합니다.그 부분은 본질적으로 잘못된 것이 없습니다.그리고 다음을 사용하여 POST 변수에 액세스할 수 있습니다.get()
.
JSON 문자열을 보내고 있으므로 다음을 사용해야 합니다.
$content = $request->getContent();
그리고 나서 당신은 그것을 해석해야 할 것입니다.json_decode
.
가능한 해결책은 다음과 같습니다.
$post_data = json_decode($request->getContent(), true);
$date = $post_data['date'];
당신이 직면할 수 있는 문제는 PHP가 변수를 포스트바디에서 로 변환하기 위해 사용하는 Accept HTML 헤더와 관련이 있습니다.$_POST
및 Symfony 사용$_POST
요청 개체 데이터를 채웁니다.
이 동작을 가져오려면 헤더를 사용해야 합니다.application/x-www-form-urlencoded
또는multipart/form-data
.
코드를 사용해야 하는 경우를 확인하려면 다음과 같이 하십시오.
dump($request->getContent());
변수로 가득 찬 경우 PHP가 변수를 다음으로 변환하지 않음을 의미합니다.$_POST
MIME 불일치로 인해, 그렇지 않으면 요청이 올바르지 않음을 의미합니다.
포스트 변수에 액세스하는 일반적인 방법은 다음과 같습니다.
public function index(Request $request)
{
dump($request->getContent()); // get raw body of http request
dump($request->request->get('date')); //get converted variable date by php and then by symfony
}
확인할 수 있는 유용한 링크:
- http://php.net/manual/en/reserved.variables.post.php
- https://symfony.com/doc/current/introduction/http_fundamentals.html#symfony-request-object
컨텐츠 유형을 추가하고 json 데이터를 문자열화하고 다음과 같은 기존 직렬화를 사용해 보십시오.
onSelect: function(date, instance) {
var data = {'date':date};
$.ajax({
url : 'home',
type : 'POST',
data : JSON.stringify(data),
contentType: "application/json; charset=utf-8",
traditional: true,
dataType : 'html',
success : function(code_html, statut){
console.log(statut);
},
error : function(resultat, statut, erreur){
},
complete : function(resultat, statut){
}
});
컨트롤러 코드를 게시하지 않으므로 다음 사항을 확인하는 것이 좋습니다.
- 다음과 같은 사용 설명서가 있습니다.
\Symfony\Component\HttpFoundation\Request;
- 요청을 다음과 같이 주입하고 있습니다.
public function post( Request $request )
- 를 다과같데를읽있습다니고터이이음과 같이 .
$data = json_decode( $request->getContent(), true);
이 예에서는 데이터를 연결 배열로 사용합니다.
언급URL : https://stackoverflow.com/questions/54889646/how-to-get-post-global-variable-in-php-symfony-4
'programing' 카테고리의 다른 글
서버 이벤트 시 서버에서 클라이언트로 알림 전송 (0) | 2023.08.17 |
---|---|
okhttp3 mockserver java.dll.NoClassDefFoundError: okhttp3/내부/동시/TaskRunner$RealBackend (0) | 2023.08.17 |
UIStatusBarStyle이 Swift에서 작동하지 않음 (0) | 2023.08.17 |
Iframe 없이 외부 페이지를 포함하시겠습니까? (0) | 2023.08.17 |
jquery를 사용하여 드롭다운에서 첫 번째 요소를 선택하는 방법은 무엇입니까? (0) | 2023.08.17 |