Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
symfony2自定义表单类型-自己的默认选项_Symfony - Fatal编程技术网

symfony2自定义表单类型-自己的默认选项

symfony2自定义表单类型-自己的默认选项,symfony,Symfony,我正在symfony2中创建自己的表单类型,但无法在buildView函数中访问自己的defaultOptions。代码如下: public function getDefaultOptions(array $options) { return array( 'identifier' => isset($options['identifier']) ? $options['identifier'] : '#star', 'curren

我正在symfony2中创建自己的表单类型,但无法在buildView函数中访问自己的defaultOptions。代码如下:

public function getDefaultOptions(array $options)
{        
    return array(
        'identifier' => isset($options['identifier']) ? $options['identifier'] : '#star',
        'currentRating' => isset($options['currentRating']) ? $options['currentRating'] : 0,
    );
}

/**
 * {@inheritdoc}
 */
public function buildView(FormView $view, FormInterface $form)
{                
    $view->set('currentRating', $form->getAttribute('currentRating'));
    $view->set('idientifier', $form->getAttribute('identifier'));
}
错误:

Notice: Undefined index: currentRating in ...
我没有读到任何不可能的东西。
谢谢您的帮助。

在您类型的方法
buildForm
中,您需要明确设置要在方法
buildView
中使用的属性。以下是您应该如何做到这一点:

public function buildForm(FormBuilder $builder, array $options)
{
    // Code here

    $builder->setAttribute('currentRating', $options['currentRating']);
    $builder->setAttribute('identifier', $options['identifier']);
} 

public function buildView(FormView $view, FormInterface $form)
{
    $view->set('currentRating', $form->getAttribute('currentRating'));
    $view->set('identifier', $form->getAttribute('identifier'));
}
这应该能奏效。 希望这有帮助

问候,

Matt

在您类型的方法
buildForm
中,您需要明确设置要在方法
buildView
中使用的属性。以下是您应该如何做到这一点:

public function buildForm(FormBuilder $builder, array $options)
{
    // Code here

    $builder->setAttribute('currentRating', $options['currentRating']);
    $builder->setAttribute('identifier', $options['identifier']);
} 

public function buildView(FormView $view, FormInterface $form)
{
    $view->set('currentRating', $form->getAttribute('currentRating'));
    $view->set('identifier', $form->getAttribute('identifier'));
}
这应该能奏效。 希望这有帮助

问候,

Matt

@Matt的回答很好,但对于使用Symfony 2.1+的人来说,这只是一个提醒:

第三个参数()被添加到buildView中,称为array$options,这是必需的,因此请确保添加此参数

因此,如果您使用的是Symfony 2.1+,请执行以下操作:

public function buildForm(FormBuilder $builder, array $options)
{
    // Code here

    $builder->setAttribute('currentRating', $options['currentRating']);
    $builder->setAttribute('identifier', $options['identifier']);
} 

public function buildView(FormView $view, FormInterface $form, array $options)
{
    $view->set('currentRating', $form->getAttribute('currentRating'));
    $view->set('identifier', $form->getAttribute('identifier'));
}

@Matt的回答很好,但对于使用Symfony 2.1+的人来说,这只是一个提醒:

第三个参数()被添加到buildView中,称为array$options,这是必需的,因此请确保添加此参数

因此,如果您使用的是Symfony 2.1+,请执行以下操作:

public function buildForm(FormBuilder $builder, array $options)
{
    // Code here

    $builder->setAttribute('currentRating', $options['currentRating']);
    $builder->setAttribute('identifier', $options['identifier']);
} 

public function buildView(FormView $view, FormInterface $form, array $options)
{
    $view->set('currentRating', $form->getAttribute('currentRating'));
    $view->set('identifier', $form->getAttribute('identifier'));
}