如何在Easy Admin中仅在创建时设置字段为必填项
解决EasyAdmin中ImageField更新时无法设为非必填的问题
你可以通过EasyAdmin字段的场景化配置方法,直接在字段定义中针对更新页面取消必填限制,不需要依赖事件。修改后的代码如下:
ImageField::new( 'image', $this->translator->trans('activity.image') ) ->setUploadDir('/public/images/activities') ->setBasePath('/images/activities') ->setUploadedFileNamePattern('[slug]-[timestamp].[extension]') ->whenUpdating(function (ImageField $field) { $field->setRequired(false); })
说明
whenUpdating()方法仅在更新实体的表单中生效,不会影响创建实体时的字段规则- 直接调用
setRequired(false)即可取消字段的必填限制,比通过事件处理更简洁
关于你尝试的事件:AfterEntityBuiltEvent确实只能获取和修改实体本身,无法操作表单字段配置。如果之后有更复杂的表单调整需求,可以考虑使用BeforeFormRenderEvent,但针对当前场景,上述字段链式配置已经足够解决问题。
内容的提问来源于stack exchange,提问作者Toma Tomov
相关产品推荐
相关产品推荐

