如何解决OroPlatform:将文件关系添加到实体
上下文
我目前正在尝试将文件关系添加到我的 OroPlatform 项目的实体。 目标是让用户有机会在特定实体的创建/更新视图上上传文件。
我在 OroPlatform 文档中读到我必须创建一个新的迁移:https://doc.oroinc.com/master/backend/bundles/platform/AttachmentBundle/attachment-bundle-config/#attachment-bundle-file-types
这是我创建的迁移:
<?PHP
namespace Baltimore\Bundle\AppBundle\Migrations\Schema\v1_1_1;
use Doctrine\DBAL\Schema\Schema;
use Oro\Bundle\AttachmentBundle\Migration\Extension\AttachmentExtension;
use Oro\Bundle\AttachmentBundle\Migration\Extension\AttachmentExtensionAwareInterface;
use Oro\Bundle\MigrationBundle\Migration\Migration;
use Oro\Bundle\MigrationBundle\Migration\QueryBag;
class AddAttachmentToBusinessUnit implements Migration,AttachmentExtensionAwareInterface
{
/** @var AttachmentExtension */
protected $attachmentExtension;
/**
* {@inheritdoc}
*/
public function setAttachmentExtension(AttachmentExtension $attachmentExtension)
{
$this->attachmentExtension = $attachmentExtension;
}
/**
* {@inheritdoc}
*/
public function up(Schema $schema,QueryBag $queries)
{
$this->attachmentExtension->addFileRelation(
$schema,'oro_business_unit','document',[],15
);
}
}
并且我已将此行添加到我的实体的 update.html.twig
中:form_row(form.document)
问题
"Neither the property "document" nor one of the methods "document()","getdocument()"/"isdocument()"/"hasdocument()" or "__call()" exist and have public access in class "Symfony\Component\Form\FormView"."
我已预热缓存以便为我的类生成访问器,并且方法 getDocument()
存在于生成的文件 EX_OroOrganizationBundle_BusinessUnit.PHP
解决方法
要添加新的表单域,首先必须在表单类型扩展中定义它,然后才能从模板访问它。
见How to Create a Form Type Extension。
,终于我的需求变了,但我想我有解决这个问题的答案了。
这是我要做的:
/**
* {@inheritdoc}
*/
public function up(Schema $schema,QueryBag $queries)
{
$this->attachmentExtension->addFileRelation(
$schema,'oro_business_unit','document',[
'extend' => [
'owner' => ExtendScope::OWNER_CUSTOM,'is_extend' => true
],'entity' => ['label'=>'oro.organization.businessunit.entity_label'],],15
);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。