1就是我想要做的就是添加自定義(選項是在這種情況下,「角」)選項來我的表單控件模板:添加自定義選項,symfony的形式
{%- block widget_attributes -%}
id="{{ id }}" name="{{ full_name }}"
{%- if angular %} ng-model="{{ full_name }}"{% endif -%}
....
{%- if intention %} {{ intention }}{% endif -%}
{%- if read_only %} readonly="readonly"{% endif -%}
.....
{%- endblock widget_attributes -%}
我的魔杖決定對形式有它選項或否在我的CustomFormType中。 但我無法實現它。我嘗試了不同的方法。
是否可以將自定義選項添加到主窗體?
我知道有很多教程展示如何通過自定義選項的子元素,例如http://symfony.com/doc/current/cookbook/form/create_form_type_extension.html
我調查的形式組成的核心,有一流的
namespace Symfony\Component\Form\Extension\Core\Type;
class FormType extends BaseType{}
其中有方法構建查看
public function buildView(FormView $view, FormInterface $form, array $options)
{
.....
$view->vars = array_replace($view->vars, array(
'read_only' => $readOnly,
'errors' => $form->getErrors(),
'valid' => $form->isSubmitted() ? $form->isValid() : true,
'value' => $form->getViewData(),
'data' => $form->getNormData(),
'required' => $form->isRequired(),
'max_length' => isset($options['attr']['maxlength']) ? $options['attr']['maxlength'] : null, // Deprecated
'pattern' => isset($options['attr']['pattern']) ? $options['attr']['pattern'] : null, // Deprecated
'size' => null,
'label_attr' => $options['label_attr'],
'compound' => $form->getConfig()->getCompound(),
'method' => $form->getConfig()->getMethod(),
'action' => $form->getConfig()->getAction(),
'submitted' => $form->isSubmitted(),
));
}
上面的symfony定義了基本選項。我可以在表單模板中全局訪問這些選項,但是我找不到添加我自己的方法。在你形成型
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
// default form options
'my_options' => 'my default value option'
));
}
編輯
/**
* {@inheritdoc}
*/
public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars['my_options'] = $options['my_options'];
}
謝謝你的回答,但這個讓我補充選項formType對象。我無法訪問我的樹枝模板中的這個選項。我需要將選項傳遞給FormView對象。我們把$ formType-> createView從控制器中查看 – 2015-04-02 10:38:44