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