csv에서 데이터를 검색하고 데이터베이스에 삽입하기 위해 FileType 양식을 사용하는 방법을 이해하지 못합니다.
일반 형식에서는 문제없이 데이터를 검색합니다.
//Controller.php
$data = new Data();
$form = $this->createFormBuilder($data)
->add('name')
->add('Nbmessage', IntegerType::class)
->add('status')
->add('details')
->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid())
{
$em->persist($data);
$em->flush();
}
---------------------------------------------------------------
// import.html.twig
{{ form_start(form)}}
{{ form_widget(form) }}
<button type="submit" class="btn btn-success">Add</button>
{{ form_end(form)}}
하지만이 데이터 형식을 Symfony Form과 함께 csv에 저장하고 싶습니다.
많은 시도 끝에 지금 내가있는 곳
$form2 = $this->createFormBuilder()
->add('submitFile', FileType::class)
->getForm();
if ($request->getMethod('post') == 'POST') {
$form2->handleRequest($request);
if ($form2->isSubmitted() && $form2->isValid()) {
$file = $form2->get('submitFile');
$file->getData();
}
}
일주일을 찾고 있었는데 어떻게해야하는지 정말 모르겠어요.
호출 getData()
A의 것은 FileType
돌아갑니다 UploadedFile
인스턴스를. 전송 후 서버의 파일을 나타냅니다. 그런 다음 적절하다고 생각하는대로 처리해야합니다. 간단한 업로드 인 경우 폴더로 이동하거나 귀하의 경우와 같이 추가 처리를 수행하십시오.
내장 함수 대신 라이브러리를 사용하기로 결정할 수 있지만,이 방법을 사용하면 다음과 같이 도움이됩니다.
function upload(Request $request, EntityManager $em)
{
// Form creation ommited
$form2->handleRequest($request);
if ($form2->isSubmitted() && $form2->isValid()) {
/** @var UploadedFile */
$file = $form2->get('submitFile')->getData();
// Open the file
if (($handle = fopen($file->getPathname(), "r")) !== false) {
// Read and process the lines.
// Skip the first line if the file includes a header
while (($data = fgetcsv($handle)) !== false) {
// Do the processing: Map line to entity, validate if needed
$entity = new Entity();
// Assign fields
$entity->setField1($data[0]);
$em->persist($entity);
}
fclose($handle);
$em->flush();
}
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다