2014-01-18 4 views
0

Как достичь того же, как показано ниже, стандартный PHP, но с использованием Symfony 2эквивалент simplexml_load_file в Symfony 2

$xml = simplexml_load_file($_FILES['updates']['tmp_name']); 
+0

Используйте его так! Может быть, поставить '\' впереди, например '\ simplexml_load_file()' из-за пространств имен. –

ответ

1

Вы всегда можете использовать стандартный PHP код в Symfony2 проектов, но вы должны попытаться использовать структурные модули. В противном случае вам не нужна фреймворк.

Вы можете получить доступ запросов в контроллер с помощью

$this -> getRequest() 

Запрос состоит из параметров запроса (отправляется через POST) и параметры запроса (GET, отправленного). Итак, сначала попробуйте найти запрос getRequest() -> request или getRequest() ->. Я не думаю, что вы найдете там файл tmp, но можете попробовать.

Следующая идея: Symfony поддерживает формы и файл типа формы. Представьте, что вы есть класс контейнера, такие как:

use Symfony\Component\HttpFoundation\File\UploadedFile; 

// ... 
class Document 
{ 
    /** 
    * @Assert\File(maxSize="6000000") 
    */ 
    private $file; 

    /** 
    * Sets file. 
    * 
    * @param UploadedFile $file 
    */ 


    public function setFile(UploadedFile $file = null) 
    { 
     $this->file = $file; 
    } 

    /** 
    * Get file. 
    * 
    * @return UploadedFile 
    */ 
    public function getFile() 
    { 
     return $this->file; 
    } 

}

Построить форму для этого контейнера класса и обработать запрос:

/** 
* @Template() 
*/ 
public function uploadAction(Request $request) 
{ 
    $document = new Document(); 
    $form = $this->createFormBuilder($document) 
     ->add('name') 
     ->add('file') 
     ->getForm(); 

    $form->handleRequest($request); 

    if ($form->isValid()) { 
     // here you can access the file via $document -> getFile() 
     // entity manager must only be used if the container class is managed 
     $em = $this->getDoctrine()->getManager(); 

     $em->persist($document); 
     $em->flush(); 

     return $this->redirect($this->generateUrl(...)); 
    } 

    return array('form' => $form->createView()); 
} 

После создания объекта, можно напрямую обращаться к файл.