这可能真的很愚蠢,但我试图在symfony中设置一个隐藏的表单字段值,但是当我执行一个视图源时,该值不会显示出来.this-> postID是指我通过构造函数传递的值,但这并不重要,即使我将数据值设置为它未显示的字符串.我一定是在做一些非常愚蠢的事.这是我的表格..
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('text','text');
$builder->add('IsshPost','hidden', array('data'=>$this->postID));
}
Run Code Online (Sandbox Code Playgroud)
任何想法都错了吗?
这是choice_widget来自Symfony2的模板.我需要在没有标记的情况下打印标签文本,即没有调用form_label模板而只是回显文本.
要设置的界限是{{ form_label(child) }}.我试过child.label但它不起作用(没有属性标签......).也试过,label但它打印整个小部件的标签,而不是当前child元素的标签.
{% block choice_widget %}
{% spaceless %}
{% if expanded %}
<div {{ block('widget_container_attributes') }}>
{% for child in form %}
{{ form_widget(child) }}
{{ form_label(child) }} {# here! #}
{% endfor %}
</div>
{% else %}
{# print <select> element #}
{% endif %}
{% endspaceless %}
{% endblock choice_widget %}
Run Code Online (Sandbox Code Playgroud) 我使用Symfony2.1的FormBuilder在控制器中创建一个动态表单:
$form = $this->createFormBuilder($defaultData);
$form->add('field','text');
Run Code Online (Sandbox Code Playgroud)
我想以同样的方式嵌入另一个表单并将其嵌入主表单中.
$subForm = $this->createFormBuilder();
$subForm->add('subfield','text');
// Does not work
$form->add('subform', $subForm);
Run Code Online (Sandbox Code Playgroud)
不幸的是,此设置无法正常工作.我找不到任何方法如何将动态生成的子表单添加到动态生成的表单中,如上例所示.
我错过了什么函数调用?
上面的示例代码抛出的异常是
UnexpectedTypeException:给定的类型为"string或Symfony\Component\Form\FormTypeInterface","Symfony\Component\Form\Form"的预期参数.
我正在使用Symfony2.1.它为表单提供内置的CSRF保护.CSRF令牌无效时返回的错误消息是:" CSRF令牌无效.请尝试重新提交表单 ".
我使用经典调用在Twig模板的表单顶部显示它:
{{ form_errors(form) }}
Run Code Online (Sandbox Code Playgroud)
如何更改返回的消息?
另一方面,更高级的可能性是捕获此错误类型,以便在我的Twig模板中显示许多选项/链接.任何的想法?
我是Symfony 2的新手,我正在尝试为具有外键的内容类型构建表单.我不知道如何使用表单保存外键.
我的两个表是"类别"和"问题".一个问题属于一个类别(多对一).所以我在Entity中的Question.php文件包含:
<?php
namespace Iel\CategorieBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Question
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Iel\CategorieBundle\Entity\QuestionRepository")
*/
class Question
{
/**
* @ORM\ManyToOne(targetEntity="Iel\CategorieBundle\Entity\Categorie")
* @ORM\JoinColumn(nullable=false)
*/
private $categorie;
/**
* Set categorie
*
@param Iel\CategorieBundle\Entity\Categorie $categorie
*/
public function setCategorie(\Iel\CategorieBundle\Entity\Categorie $categorie)
{
$this->categorie = $categorie;
}
/**
* Get categorie
*
@return Iel\CategorieBundle\Entity\Categorie
*/
public function getCategorie()
{
return $this->categorie;
}
Run Code Online (Sandbox Code Playgroud)
我试过像这样构建控制器函数,但它不是一个正确的语法:
public function addquestionAction()
{
$question = new Question;
$form = $this->createFormBuilder($question)
->add('titre', 'text')
->add('auteur', 'text')
->add('contenu', …Run Code Online (Sandbox Code Playgroud) 在Symfony 2.8中,在自定义表单类型中,是否可以使setAllowedValues返回依赖于另一个选项的值的结果?Options据我所知,没有明显的方法可以访问闭包中的对象。
public function configureOptions(OptionsResolver $resolver) {
$resolver->setRequired('option1');
$resolver->setRequired('option2');
$resolver->setAllowedValues('option2', function ($value) {
return $based_on_set_restricted_by_option1; // <-- option2 values are allowed or denied depending on what option1 says
}
}
Run Code Online (Sandbox Code Playgroud)
与我所拥有的解决方案最接近的想法是拥有一个选项,该选项是封装了option1和option2并在其上执行setAllowedValues的字典,但是现在重新构造选项并不容易。
我有一个loginAction看起来像这样:
public function loginAction(Request $request){
if($request->getMethod() == 'POST'){
$mail = $request->getContent('umail');
$pass = $request->getContent('upass');
$em = $this->getDoctrine()->getManager();
$rep = $em->getRepository('SystemBundle:User');
$user = $rep->findOneBy(array("email"=>$mail,"pass"=>$pass));
if($user){
$id = $user->getId();
$type = $user->getType();
return $this->render('@System/Pages/admin/index.html.twig');
}
}
Run Code Online (Sandbox Code Playgroud)
提交表格后,我得到以下错误:
控制器“ SystemBundle \ Controller \ SystemController :: loginAction()”要求您为“ $ request”参数提供一个值(因为没有默认值,或者因为此值之后没有非可选参数)。
以下是路由:
system_login:
path: /login
defaults: { _controller: SystemBundle:System:login}
Run Code Online (Sandbox Code Playgroud)
以及形式:
<form method="POST" id="lgn" action="{{ path('system_login') }}">
<span class="fa fa-times close" onclick="lgn()" ></span><br />
<span>Login:</span>
<input type="email" placeholder="Email" required="required" name="umail" />
<input type="password" placeholder="Password" required="required" name="upass" /> …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Form类型中将参数设置为查询构建器.我想将impact变量设置为表单字段查询构建器.我impact从表格选项中获得
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title');
$parentPage = $options["parentPage"];
$impact = $options["impact"];
if($parentPage != null){
$builder->add('parent', 'entity', array(
'class' => "CoreBundle:Page",
'choices' => array($parentPage)
));
}else{
$builder->add('parent', 'entity', array(
'class' => "CoreBundle:Page",
'query_builder' => function(PageRepository $pr){
$qb = $pr->createQueryBuilder('p');
$qb->where("p.fullPath NOT LIKE '/deleted%'");
$qb->andWhere('p.impact = :impact')
->setParameter('impact', $impact); <-'Undefined variable $impact'
return $qb;
},
));
}
Run Code Online (Sandbox Code Playgroud)
为什么这段代码显示错误,它说$impact是未定义的变量.是不是可以从buildForm函数中的任何位置访问的全局变量?
我正在创建一个名为IntervalType的自定义FormType.我IntervalType将有两个字段,start并且end,将是整型的.此自定义FormType将始终不使用data_class.
我想添加一个约束来保证start低于end.
如何在FormType中直接使用Symfony\Component\Validator\Constraints\Callback data_class?
这是我的IntervalType,仅供参考:
// src/AppBundle/Form/Type/IntervalType.php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Validator\Constraints\NotBlank;
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('start', IntegerType::class, array(
'constraints' => array(
new NotBlank(),
),
))
->add('end', IntegerType::class, array(
'constraints' => array(
new NotBlank(),
),
))
);
}
}
Run Code Online (Sandbox Code Playgroud) 在构建表单时如何获得实体管理器?
我想从数据库中搜索结果并构建choicetype的选择.我知道我可以使用entitytype,但在这种情况下,我想在数据库中记录字符串而不是对象.而且我还需要添加更多选项.
谢谢.
symfony-forms ×10
symfony ×8
php ×3
forms ×2
symfony-2.1 ×2
doctrine-orm ×1
formbuilder ×1
options ×1
symfony-3.1 ×1
twig ×1