Symfony2 요청 객체의 POST 값에 액세스
좋습니다. 이것은 초보자 질문이지만 어디에서도 답을 찾을 수 없습니다. Symfony2의 컨트롤러에서 내 양식 중 하나에서 POST 값에 액세스하고 싶습니다. 컨트롤러에는 다음이 있습니다.
public function indexAction()
{
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
$form = $this->get('form.factory')->create(new ContactType());
$form->bindRequest($request);
if ($form->isValid()) {
$name_value = $request->request->get('name');
불행히도 $name_value
아무것도 반환하지 않습니다. 내가 뭘 잘못하고 있죠? 감사!
심포니 2.2
이 솔루션은 2.3부터 사용되지 않으며 3.0에서 제거됩니다. 문서를 참조하십시오.
$form->getData();
양식 매개 변수에 대한 배열을 제공합니다.
symfony2 책 162 페이지 에서 (12 장 : 양식)
[...] 때로는 클래스없이 양식을 사용하고 제출 된 데이터의 배열을 다시 가져오고 싶을 수 있습니다. 이것은 실제로 정말 쉽습니다.
public function contactAction(Request $request) {
$defaultData = array('message' => 'Type your message here');
$form = $this->createFormBuilder($defaultData)
->add('name', 'text')
->add('email', 'email')
->add('message', 'textarea')
->getForm();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
// data is an array with "name", "email", and "message" keys
$data = $form->getData();
}
// ... render the form
}
다음과 같이 요청 객체를 통해 직접 POST 값 (이 경우 "이름")에 액세스 할 수도 있습니다.
$this->get('request')->request->get('name');
그러나 대부분의 경우 getData () 메서드를 사용하는 것이 더 나은 선택입니다. 양식 프레임 워크에 의해 변환 된 데이터 (일반적으로 객체)를 반환하기 때문입니다.
양식 토큰에 액세스 하려면 배열에서 요소를 제거 $postData = $request->request->get('contact');
하기 때문에 Problematic의 답을 사용해야합니다.getData()
심포니 2.3
2.3부터 다음 handleRequest
대신 사용해야 합니다 bindRequest
.
$form->handleRequest($request);
양식 게시 값은 요청의 양식 이름으로 저장됩니다. 예를 들어 getName()
"contact"를 반환하도록 ContactType () 메서드를 재정의 한 경우 다음을 수행합니다.
$postData = $request->request->get('contact');
$name_value = $postData['name'];
여전히 문제가있는 경우 일을하려고 var_dump()
에 $request->request->all()
모든 게시물의 값을 볼 수 있습니다.
나를 위해 일한 것은 이것을 사용하는 것입니다.
$data = $request->request->all();
$name = $data['form']['name'];
There is one trick with ParameterBag::get()
method. You can set $deep
parameter to true
and access the required deep nested value without extra variable:
$request->request->get('form[some][deep][data]', null, true);
Also you have possibility to set a default value (2nd parameter of get()
method), it can avoid redundant isset($form['some']['deep']['data'])
call.
The field data can be accessed in a controller with: Listing 12-34
$form->get('dueDate')->getData();
In addition, the data of an unmapped field can also be modified directly: Listing 12-35
$form->get('dueDate')->setData(new \DateTime());
page 164 symfony2 book(generated on October 9, 2013)
I access the ticketNumber parameter for my multipart post request in the following way.
$data = $request->request->all();
$ticketNumber = $data["ticketNumber"];
I think that in order to get the request data, bound and validated by the form object, you must use :
$form->getClientData();
If you are newbie, welcome to Symfony2, an open-source project so if you want to learn a lot, you can open the source !
From "Form.php" :
getData() getNormData() getViewData()
You can find more details in this file.
참고URL : https://stackoverflow.com/questions/6916324/access-post-values-in-symfony2-request-object
'developer tip' 카테고리의 다른 글
Rails 환경에서 Ruby 파일을 어떻게 실행하나요? (0) | 2020.08.30 |
---|---|
TypeScript 유형 배열 사용 (0) | 2020.08.30 |
AFHTTPClient의 실패 블록에서 http 상태 코드를 얻는 쉬운 방법이 있습니까? (0) | 2020.08.29 |
"this"는 맵 함수 Reactjs 내부에서 정의되지 않았습니다. (0) | 2020.08.29 |
C / C ++ 매크로의 쉼표 (0) | 2020.08.29 |