2014-03-07 12 views
0

嗨,大家好我真的使用的Symfony2表單生成的根元素,我想表單元素上添加屬性想要的效果是這樣的:套裝屬性上的Symfony2表單生成

<form 
    data-login="<?php echo $view['router']->generate('login_check'); ?>"     
    data-register="<?php echo $view['router']->generate('register'); ?>" 
    action="<?php echo $view['router']->generate('login_check'); ?>" 
    method="post" 
    id="ajaxLoginForm" 
    name="login_form"> 

我真的使用PHP模板。我怎樣才能做到這一點?

謝謝你的時間。 如果您有任何問題,請在評論部分提問。 最好的問候, 格奧爾基。

回答

2

不幸的是,通過按照您自定義表單域的方式對FormBuilder進行操作,這是不可能的。要做到這一點,在表單類的setDefaultOptions(擴展AbstractType的那個)上,你應該返回attr關鍵字,其中相應的值是屬性名=>值的關聯數組:

public function setDefaultOptions(OptionsResolverInterface $resolver) { 

    $resolver->setDefaults(array(
     'attr' => array('id' => 'ajaxLoginForm'), 
     ... 
    )); 
} 

對於形式name屬性,只實現(在同一類)

public function getName() { 

    return 'login_form'; 
} 

正確實施上述方法後,屬性應該被正確地呈現,您無需進行任何修改您的模板或形式我。

注:你可能要注入的形式路由器組件(或實例化時,它把它作爲一個選項),以創建你需要爲你data-logindata-register屬性的路由。

0

的屬性使用

<?php echo $view['form']->form($form, array(
    'attr' => array(
     'data-login' => $view['router']->generate('login_check'),     
     'data-register' => $view['router']->generate('register'), 
     // etc... 
    ), 
)) ?> 

對於特定的屬性,你可以使用

// In form class 
$builder->setAction('/login_check'); 
$builder->setMethod('post');