我在我的控制器中检查了一些验证.而且我想在失败时将错误添加到表单的特定元素中.我的表格:
use Symfony\Component\Form\FormError;
// ...
$config = new Config();
$form = $this->createFormBuilder($config)
->add('googleMapKey', 'text', array('label' => 'Google Map key'))
->add('locationRadius', 'text', array('label' => 'Location radius (km)'))
->getForm();
// ...
$form->addError(new FormError('error message'));
Run Code Online (Sandbox Code Playgroud)
addError()方法向表单添加错误,而不是元素.如何向locationRadius元素添加错误?
我正在以下列方式创建表单:
$form = $this->createFormBuilder($breed)
->add('species', 'entity', array(
'class' => 'BFPEduBundle:Item',
'property' => 'name',
'query_builder' => function(ItemRepository $er){
return $er->createQueryBuilder('i')
->where("i.type = 'species'")
->orderBy('i.name', 'ASC');
}))
->add('breed', 'text', array('required'=>true))
->add('size', 'textarea', array('required' => false))
->getForm()
Run Code Online (Sandbox Code Playgroud)
如何为物种列表框设置默认值?
谢谢你的回复,我道歉,我想我应该重新解释一下我的问题.一旦我有一个从模型中检索的值,如何为物种选择列表中的相应值将该值设置为SELECTED ="yes"?
因此,TWIG视图中的选择选项输出将如下所示:
<option value="174" selected="yes">Dog</option>
Run Code Online (Sandbox Code Playgroud) 什么之间的区别Doctrine\Common\Persistence\ObjectManager,并Doctrine\ORM\EntityManager在自定义表单类型使用的时候吗?
我可以使用$this->em->getRepository()和来获取存储库$this->om->getRepository().
class MyFormType extends \Symfony\Component\Form\AbstractType
{
/**
* @var Doctrine\ORM\EntityManager
*/
protected $em;
public function __construct(Doctrine\ORM\EntityManager $em)
{
$this->em = $em;
}
}
Run Code Online (Sandbox Code Playgroud)
代替:
class MyFormType extends \Symfony\Component\Form\AbstractType
{
/**
* @var Doctrine\Common\Persistence\ObjectManager
*/
protected $om;
public function __construct(Doctrine\Common\Persistence\ObjectManager $om)
{
$this->om = $om;
}
}
Run Code Online (Sandbox Code Playgroud) 在Twig模板中,我检查一个字段是否有这样的错误:
{% if form.points.get('errors') is not empty %}
Run Code Online (Sandbox Code Playgroud)
有没有像这样的方法:
{% if form.points.hasErrors() %}
Run Code Online (Sandbox Code Playgroud)
做得更简单?这不是一个很大的区别,但如果我不能做到更容易,为什么不呢.
我有与该选项添加额外的字段的表格mapped来false.但是当我尝试验证我的表单时,它不会在这些特定表单字段上方传递指示"此值无效".这个选项不应该绕过验证吗?
这些表单字段仅用于填充其他字段,我不需要保存甚至检查它们.
我找到的唯一解决方案是在提交按钮单击时删除带有js的所有额外字段.
我使用Symfony2,我想创建一个注册表单.我不想使用FOSUserBundle.
所以,我创建了一个实体帐户(包括字段:用户名,密码,电子邮件...),我创建了表单:
$account = new Account();
$form = $this->createFormBuilder($account)
->add('username', 'text', array('label' => 'Nom de compte :'))
->add('password', 'password', array('label' => 'Mot de passe :'))
->add('email', 'email', array('label' => 'Adresse email :'))
->getForm();
Run Code Online (Sandbox Code Playgroud)
现在,我想为密码添加一个确认字段.但是,当我尝试使用add()方法添加字段时,例如"password_confirmation"我有这个:
类"App\FrontBundle\Entity\Account"中不存在属性"password_confirmation"和方法"getPasswordConfirmation()"以及方法"isPasswordConfirmation()"
如何添加自定义字段?之后,如何有效呢?
谢谢.BR.
我正在尝试使用php模板在表单标签上的类上设置类.
这是我的代码:
<?php echo $view['form']->label($form['first_name'], 'First Name', array(
'attr' => array('class' => 'control-label')
)) ?>
Run Code Online (Sandbox Code Playgroud)
但这是我的输出:
<label class="required" for="form_first_name">First name</label>
Run Code Online (Sandbox Code Playgroud)
我可以找到如何使用twig,但不是PHP的例子.
我试图在symfony2中的每个字段之后添加一些帮助消息.
我在官方文档中读到了一个解决方案:http://symfony.com/doc/current/cookbook/form/form_customization.html#adding-help-messages
但是这个解决方案毫无意义,因为我们需要手动创建所有表单.例如,很容易定义标签:$formBuilder->add('myfieldname', 'text', array('label'=>'some my field label'));但如何传递帮助信息?(换句话说,一些自定义变量)
这是FormEvents来自github上的Symfony2存储库的类.它与主要文章" 如何使用表单事件动态生成表单"相关联.
任何人都知道在流程中调用这些事件的确切时间?
namespace Symfony\Component\Form;
/**
* @author Bernhard Schussek <bernhard.schussek@symfony.com>
*/
final class FormEvents
{
const PRE_BIND = 'form.pre_bind';
const POST_BIND = 'form.post_bind';
const PRE_SET_DATA = 'form.pre_set_data';
const POST_SET_DATA = 'form.post_set_data';
const BIND_CLIENT_DATA = 'form.bind_client_data';
const BIND_NORM_DATA = 'form.bind_norm_data';
const SET_DATA = 'form.set_data';
}
Run Code Online (Sandbox Code Playgroud) 形成帮手form_start,form_end在树枝上很有用:
{{ form_start(form) }}
{{ form_end(form) }}
Run Code Online (Sandbox Code Playgroud)
我可以自定义一些参数,如method或action.但我需要自定义其他参数,例如class或添加form-enctype.
我可以做吗?我应该把它设置成FormType.php?
从现在开始,我只是尝试将自定义值添加到twig函数中,如下所示:
{{ form_start(form, {'class': 'myclass', 'action': 'myaction'}) }}
// fields...
{{ form_end(form, {'render_rest': true}) }}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,例如,class没有出现.
symfony ×10
symfony-forms ×10
forms ×2
twig ×2
validation ×2
default ×1
doctrine ×1
doctrine-orm ×1
php ×1
symfony-2.3 ×1