Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 使用Sonata Admin和Doctirne上载文件时出错_Symfony_Doctrine_Sonata - Fatal编程技术网

Symfony 使用Sonata Admin和Doctirne上载文件时出错

Symfony 使用Sonata Admin和Doctirne上载文件时出错,symfony,doctrine,sonata,Symfony,Doctrine,Sonata,我正在遵循关于处理原则上传和sonata管理的指南。 我仅使用id、路径和文件(图像)设置实体: 为了更好地阅读实体,我删除了一些字段。 对于这个实体,我遵循symfony食谱。 web/uploads下的文件夹具有777权限 然后我添加到sonata admin: protected function configureFormFields(FormMapper $formMapper) { $formMapper->add('title', 'text'); $form

我正在遵循关于处理原则上传和sonata管理的指南。
我仅使用id、路径和文件(图像)设置实体:

为了更好地阅读实体,我删除了一些字段。
对于这个实体,我遵循symfony食谱。
web/uploads下的文件夹具有777权限

然后我添加到sonata admin:

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper->add('title', 'text');
    $formMapper->add('text', 'text');
    $formMapper->add('startDate', 'date');
    $formMapper->add('endDate', 'date');
    $formMapper->add('active', 'checkbox', array('required' => false));
    $formMapper->add('file', 'file');
}

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper->add('text');
}

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper->addIdentifier('title');
    $listMapper->add('text');
}
现在我登录sonata管理页面并尝试创建新实体。
所有作品都是正确的,除了文件,我在数据库的所有字段中都是正确的。
web/uploads/documents下没有文件,数据库中的path字段中也没有路径(如果未设置路径,则我在SetFile函数中设置了“initial”。


我不知道我错在哪里。感谢您的帮助。

问题是您从未调用实体的
上传方法

将以下方法添加到您的管理类(sonata):

它应该是有效的

这将在持久化/更新实体之前调用实体的
upload
方法

参见奏鸣曲的相应部分。

您必须添加

* @ORM\HasLifecycleCallbacks
阻挡

/**
 * @ORM\Entity
 * @ORM\Table(name="viaggio_perfetto")
*/
供使用

/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
/**
 * @ORM\Entity
 * @ORM\Table(name="viaggio_perfetto")
*/
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/