下面的代碼創建一個自定義窗體類型,將實體轉換爲ID以創建自動填充字段。在窗體中使用DataTransformer後在樹枝中訪問實體屬性
class EntityIdType extends AbstractType
{
/**
* @var EntityManager
*/
private $em;
/**
* @param EntityManager $em
*/
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$transformer = new EntityIdTransformer($this->em,$options['entity_class']);
$builder->addModelTransformer($transformer);
}
}
我也創建一個自定義窗口小部件,以這種形式的類型,我想那代表它是實體的字符串
{% block entity_id_widget %}
{% spaceless %}
<input type="hidden" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
<input autocomplete="off" value="{{ **GET_VALUE_HERE** }}">
{% endspaceless %}
{% endblock %}
UPDATE
的EntityIdTransformer的變換方法只是返回實體的ID並進行反向變換返回與作爲參數傳遞的ID關聯的實體
所有這些目標都是爲具有多行的實體創建自動完成輸入,並在提交表單時保留更改。如果任何其他方法可能對這個例子更好,我會對其進行評估。
看來,一個entity_identifier
字段類型已作爲一個公關提案,但似乎沒有在不久的將來,產品尚未
什麼是字符串你的問題?那個數據轉換器的代碼在哪裏?你有什麼嘗試? – ferdynator
@ byf-ferdy我更新了更多的信息。我認爲autocompleting實體是相當普遍的,但我沒有遇到任何比使用數據轉換器更好的解決方案。它通常很好,但我不知道如何獲取與每個實體相關的字符串,當我渲染小部件時,我只能獲得實體的Id,因爲數據轉換器 –