튜토리얼을 통해가는 심포니와 속도 일어나려고,이 페이지 (symfony.com/doc/current/forms.html)에서 다음 샘플입니다 : 내가 빨리 전에이 구문을 본 적이 데PHP 구문
$form = $this->createFormBuilder($task)
->add('task', TextType::class)
->add('dueDate', DateType::class)
->add('save', SubmitType::class, array('label' => 'Create Post'))
->getForm();
return $this->render('default/new.html.twig', array(
'form' => $form->createView(),
));
외면적으로 보이는 전화 연쇄를 배제하고, "벌거 벗은"화살 각각을 $form
의 방법을 가리키는 것으로 해석하는 것이 대부분 정확하다는 것을 알았다. 이 버전에서 올바르게 작동하게되었습니다.
$formBuilder = $this->createFormBuilder($task);
$formBuilder->add('task', TextType::class);
$formBuilder->add('dueDate', DateType::class);
$formBuilder->add('save', SubmitType::class, array('label' => 'Create Post'));
$form = $formBuilder->getForm();
return $this->render('default/new.html.twig', array(
'form' => $form->createView(),
));
원본 샘플을 이해하려고합니다. 겉보기에는 연결이 끊긴 화살표의 올바른 해석이 "첫 번째 줄에 명명 된 개체의 메서드 호출"이면 "->getForm();
"줄을 제외한 모든 내용을 설명합니다. 그러나 동일한 규칙이 해당 줄에 적용되면 해당 줄은 "$formBuilder->getForm();
"이되며 $ form에 대한 할당이 부족하기 때문에 render() 줄에서 실패합니다. (즉, 빌더의 이름을 $ form으로 유지함).
자습서에 실수가 있습니까? 아니면 누락 된 구문의 미묘한 차이가 있습니까?
("php", "arrow", "syntax", ...)의 조합을 광범위하게 검색했지만 일련의 메소드 호출에서 객체 이름을 생략하는 것에 대해서는 아무 것도 발견하지 못했습니다.
'FormBuilder :: add'의 정의를 찾아 내서 chaining 된 것을 확인하면 수정 된'FormBuilder' 객체를 반환합니다. 그런 다음 그 집합의 마지막 줄은 반환 형식이 다르긴하지만 마지막 줄이므로 동일한 이름을 사용하면'$ form'이 모두 정의되기 때문에 영리한 트릭입니다. 나는 여전히 코드 내에서 가독성을 위해이 메소드를 변경하고 있으므로 독자는 메소드 정의를 검색 할 필요가 없으므로 튜토리얼은 빠른 설명과 함께 더 낫다. –