idci / simple-metadata-bundle
Symfony SimpleMetadataBundle
v2.0.0
2019-10-10 08:29 UTC
Requires
- php: >=5.3.2
- doctrine/doctrine-bundle: ~1.2
- doctrine/orm: ~2.2,>=2.2.3
- jms/serializer-bundle: >=1.0
- symfony/framework-bundle: >=2.7
- twig/twig: ^1.0||^2.0
This package is auto-updated.
Last update: 2024-09-22 00:14:56 UTC
README
Symfony2 简单元数据包
安装
要安装此包,请按照以下步骤操作
首先在您的 composer.json
文件中添加依赖
"require": { ..., "idci/simple-metadata-bundle": "dev-master" },
然后使用以下命令安装包
php composer update
在您的应用程序内核中启用包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( ... new IDCI\Bundle\SimpleMetadataBundle\IDCISimpleMetadataBundle(), ); }
现在将包配置导入到您的 app/config/config.yml
imports: ... - { resource: @IDCISimpleMetadataBundle/Resources/config/config.yml }
现在包已安装并配置完毕。
如何使用
与元数据的一对一关系
在实体中
/** * @var Metadata * * @ORM\OneToOne(targetEntity="IDCI\Bundle\SimpleMetadataBundle\Entity\Metadata", cascade={"all"}) * @ORM\JoinColumn(name="metadata_id", referencedColumnName="id", onDelete="SET NULL", nullable=true) */ private $metadata;
在此实体表单类型中
public function buildForm(FormBuilderInterface $builder, array $options) { $builder ... ->add('metadata', 'related_to_one_metadata', array( 'data' => $builder->getData()->getMetadata() )) ... ; }
与元数据的多对多关系
在实体中
/** * @var array<Metadata> * * @ORM\ManyToMany(targetEntity="IDCI\Bundle\SimpleMetadataBundle\Entity\Metadata", cascade={"all"}) * @ORM\JoinTable(name="my_entity_metadata", * joinColumns={@ORM\JoinColumn(name="my_entity_id", referencedColumnName="id", onDelete="cascade")}, * inverseJoinColumns={@ORM\JoinColumn(name="metadata_id", referencedColumnName="id", unique=true, onDelete="cascade")} * ) */ private $metadatas;
在此实体表单类型中
public function buildForm(FormBuilderInterface $builder, array $options) { $builder ... ->add('metadatas', 'related_to_many_metadata') ... ; }
无元数据实体关系
在实体中
/** * @var string * * @ORM\Column(name="metadata", type="textarea") */ private $metadata;
在此实体表单类型中
public function buildForm(FormBuilderInterface $builder, array $options) { $builder ... ->add('metadata', 'metadata') ... ; }
高级表单使用
该 metadata
表单类型接受一个 fields
选项,例如
$builder ... ->add('metadata', 'metadata', array( 'fields' => array( 'firstName' => array('text'), 'lastName' => array('text'), 'address' => array('text'), 'city' => array('text'), 'country' => array('text'), 'message' => array('textarea') ) )) ... ;
此包提供了一个 json
表单类型,这对于存储JSON非常有用(必须用于文本映射字段)。
自定义命名空间
您可以在不填写表单的情况下创建自己的命名空间。
首先声明它们如下
idci_simple_metadata: namespaces: [tags, features]
如果您查看 container:debug
,您将看到现在有新的表单类型可用
$ php app/console container:debug ... form.type.form.type.related_to_one_metadata_features container IDCI\Bundle\SimpleMetadataBundle\Form\Type\RelatedToOneMetadataType form.type.form.type.related_to_one_metadata_tags container IDCI\Bundle\SimpleMetadataBundle\Form\Type\RelatedToOneMetadataType form.type.related_to_many_metadata_features container IDCI\Bundle\SimpleMetadataBundle\Form\Type\RelatedToManyMetadataType form.type.related_to_many_metadata_tags container IDCI\Bundle\SimpleMetadataBundle\Form\Type\RelatedToManyMetadataType ...
只需在表单构建器中使用它们即可
$builder ... ->add('features', 'related_to_many_metadata_features') ->add('tags', 'related_to_many_metadata_tags') ... ;