Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
Php 如果在symfony中的表单类型中选中了复选框,则添加输入标记_Php_Forms_Symfony - Fatal编程技术网

Php 如果在symfony中的表单类型中选中了复选框,则添加输入标记

Php 如果在symfony中的表单类型中选中了复选框,则添加输入标记,php,forms,symfony,Php,Forms,Symfony,我是symfony的新用户。我正在使用表单类型生成表单。我已经生成了一组复选框,如果选中了其中一个复选框,我希望显示一个输入字段 因此,我在我的表单生成器中添加了这样的营销规则 ->add('marketingRules', 'entity', array( 'required' =>'true', 'class' => 'RecomendationsBundle:MarketingRule',

我是symfony的新用户。我正在使用表单类型生成表单。我已经生成了一组复选框,如果选中了其中一个复选框,我希望显示一个输入字段

因此,我在我的表单生成器中添加了这样的营销规则

  ->add('marketingRules', 'entity', array(
                'required' =>'true',
                'class' => 'RecomendationsBundle:MarketingRule',
                'choices' => $builder->getData()->getProject()->getPlan()->getMarketingRules(),
                'property' => 'name',
                'expanded' => true,
                'multiple' => true,
                'by_reference' => false,
            ))
这正如预期的那样有效。但我想在选择一个营销规则时添加一个输入字段,以便能够向所选的营销规则添加参数

我可以通过使用JavaScript检查表单并添加必要的输入来手动完成这项工作,但我相信一定有更好的选择

如果我能更清楚地说明我的情况,请告诉我。在我的脑海里听起来不错:(

使用: Symfony 2.5(是一个老项目)


非常感谢您的时间:)

要以您可以使用当前方法的形式创建基本复选框:

use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
// ...

$builder->add('public', CheckboxType::class, array(
    'label'    => 'Show this entry publicly?',
    'required' => false,
));
在此之后,您可以添加“paramaters选项”->,就像选中其他添加一样。 该复选框使用类似值true和false。但我没用过这个

更好的解决方案是Jquery,或者您也可以使用css来实现这一点。我解释:

用于CSS,使用: 向视图中添加如下输入:

<input class="reveal-if-active" name="TheNameYouWant" type="TheTypeYouNeed"/>
对于控制器,您可以手动处理请求:

$myvar = $request->request->get('TheNameYouWant');
在if($form is valid)中,在持久化之前添加以下内容:

$myObject->setValueNeeded($myvar);
这是一个很好的使用复选框的方法,如果您认为可选字段不是必需的

最好的方法是继续使用Jquery,对于这一个,我已经看到您已经在使用它了,所以没有必要告诉您如何做到这一点

我不确定你是否有使用Symfony的解决方案,除了我给你的css方法(对于控制器和css保持相同的方法,只需在额外字段中使用此特殊参数:

->add('extra', null, array('mapped' => false)),
如果你不打电话,这会让你的视野变成可选的,不可见的。
(关于这篇文章,我指的是这篇文章->)

您的实体是否有此类参数的特定字段?例如ruleParameters?您所需的要求可以通过EAV模型最好地实现。您可以查看易于实现的链接。嗨,Matt,谢谢您的评论。是的,我确实有一个ruleParameters字段,如果指定的任何复选框c已选择营销规则。因此,例如,如果您选择季节性产品作为营销规则,您可以将类似运动的产品类型作为参数传递给该季节的运动相关产品。Ajeet Varma,感谢您的评论,我将检查您的链接并与您联系。:)
->add('extra', null, array('mapped' => false)),