我正在修复一个运行在PHP 8.0.18上的现有Symfony 5.4网站。后台由EasyAdmin 3.4处理。
我不知道出了什么问题。就像标题说的,当我编辑一个事件时实体,保存按钮将不工作,除非我重新上传一个不同的事件图片。对其他字段进行任何编辑都不起作用,即使我没有对实体进行任何修改,我也可以在其他实体上使用保存按钮。我已经看过我的配置和实体设置,但到目前为止,我不明白。编辑:其他实体与ImageField也拒绝更新,除非我重新上传的东西。我通过在事件crud配置中使用setRequired(false)
找到了一个临时修复,但是在这种情况下肯定需要映像,所以如果我没有弄错的话,我只是为自己设置了一种不同类型的失败。这真的是唯一的办法吗?
事件实体:
<?php
namespace AppEntity;
use AppRepositoryEventRepository;
use DoctrineORMMapping as ORM;
/**
* @ORMEntity(repositoryClass=EventRepository::class)
*/
class Event
{
// ...
/**
* @ORMColumn(type="string", length=255)
*/
private $src;
// ...
public function getSrc(): ?string
{
return $this->src;
}
public function setSrc(string $src): self
{
$this->src = $src;
return $this;
}
// ...
}
事件控制器:
<?php
namespace AppControllerAdmin;
use AppEntityEvent;
use AppEntityTranslationString;
use AppEntityTranslationText;
use EasyCorpBundleEasyAdminBundleConfigCrud;
use EasyCorpBundleEasyAdminBundleControllerAbstractCrudController;
use EasyCorpBundleEasyAdminBundleFieldBooleanField;
use EasyCorpBundleEasyAdminBundleFieldDateField;
use EasyCorpBundleEasyAdminBundleFieldImageField;
use EasyCorpBundleEasyAdminBundleFieldIntegerField;
use EasyCorpBundleEasyAdminBundleFieldTextField;
use EasyCorpBundleEasyAdminBundleFieldTextareaField;
class EventCrudController extends AbstractCrudController
{
public static function getEntityFqcn(): string
{
return Event::class;
}
public function configureCrud(Crud $crud): Crud
{
return $crud
->setSearchFields([
'date',
'end',
'title.fr',
'title.en',
'body.fr',
'body.en',
'alt.fr',
'alt.en',
])
->setDefaultSort(['archived' => 'ASC','date' => 'DESC',]);
}
public function configureFields(string $pageName): iterable
{
return [
DateField::new('date'),
DateField::new('end'),
TextField::new('titleFr'),
TextField::new('titleEn')->hideOnIndex(),
BooleanField::new('isShow'),
BooleanField::new('archived'),
TextareaField::new('bodyFr'),
TextareaField::new('bodyEn')->hideOnIndex(),
ImageField::new('src')
->setBasePath('img/events')
->setUploadDir('www/img/events'),
TextareaField::new('altFr')->hideOnIndex(),
TextareaField::new('altEn')->hideOnIndex(),
];
}
public function createEntity(string $Fqcn): Event
{
return (new Event)
->setAlt(new TranslationText)
->setTitle(new TranslationString)
->setBody(new TranslationText);
}
}
我有同样的问题,我认为下面的代码将帮助
public function configureFields(string $pageName): iterable {
$imageField = ImageField::new('image', 'Image')->setUploadDir('public/uploads/images/')->setBasePath('uploads/images/');
if ($pageName != 'new') {
$imageField->setRequired(false);
}
return [
TextField::new('title'),
$imageField,
TextEditorField::new('description')->setNumOfRows(20),
UrlField::new('ticketOfficeLink'),
AssociationField::new('eventStates')
];
}