相当于symfony 2中的simplexml_load_file

时间:2014-01-18 12:04:56

标签: symfony request

我如何实现与以下相同的标准PHP,但使用symfony 2

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

1 个答案:

答案 0 :(得分:1)

您始终可以在Symfony2 Projects中使用标准PHP代码,但您应该尝试使用框架模块。否则你不需要框架。

您可以通过

访问控制器中的请求
$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());
}

创建对象后,您可以访问该文件。