GVKun编程网logo

css – 将类属性添加到symfony表单构建器行div(css添加类名)

14

在本文中,我们将给您介绍关于css–将类属性添加到symfony表单构建器行div的详细内容,并且为您解答css添加类名的相关问题,此外,我们还将为您提供关于forms–Symfony2–将类添加到表

在本文中,我们将给您介绍关于css – 将类属性添加到symfony表单构建器行div的详细内容,并且为您解答css添加类名的相关问题,此外,我们还将为您提供关于forms – Symfony2 – 将类添加到表单标记、php – Symfony ManyToMany表单、php – Symfony中的URL自动添加了params?Symfony =、php – Symfony表单域属性empty_data被忽略的知识。

本文目录一览:

css – 将类属性添加到symfony表单构建器行div(css添加类名)

css – 将类属性添加到symfony表单构建器行div(css添加类名)

这是我的AbstractType代码:

$builder->add('email','email',array('label' => 'form.email','translation_domain' => 'FOSUserBundle'))

上面生成的代码:

<formrole="form" method="POST" action="/app_dev.PHP/register/">

<div id="fos_user_registration_form">
 <div>
   <labelhttps://www.jb51.cc/tag/required/" target="_blank">required" for="fos_user_registration_form_email">Email: </label>
   <input id="fos_user_registration_form_email" type="email" required="required" name="fos_user_registration_form[email]">
 </div>
</div>

</form>
</div>

我的问题是如何将类属性添加到行div成为:

<div>
    <labelhttps://www.jb51.cc/tag/required/" target="_blank">required" for="fos_user_registration_form_email">Email: </label>
    <input id="fos_user_registration_form_email" type="email" required="required" name="fos_user_registration_form[email]">
</div>

解决方法

对我来说,skler的答案不是解决方案,因为它将类添加到输入电子邮件,而不是div.

编辑:

更好的解决方案

{% for child in form.children|keys %}
    <div>
        {% if 'token' not in form_label(attribute(form.children,child)) %}
            {{form_label(attribute(form.children,child)) }}
        {% endif %}
        {{form_widget(attribute(form.children,child)) }}
    </div>
    <br/>
{% endfor %}

造成:

<div>
    <label>e-mail</label>
    <input type="email">
</div>

它删除了未使用的div和令牌标签,我们可以使用.registration_field选择器而不是.registration_field> DIV

为Amstell:我回答了skler的解决方案,说对我来说这不是解决方案,对不起,目前尚不清楚.

forms – Symfony2 – 将类添加到表单标记

forms – Symfony2 – 将类添加到表单标记

我知道我可以将类添加到< input>字段的形式如下:

->add('foo','text',array('attr' => array('class' => 'foo-class'));

但我怎么能把一个类添加到< form>标签?

解决方法

为此,有两种解决方案,您可以在控制器或视图中执行此操作.

1)在你的控制器中:

$form = $this->createForm(new FormType(),$data,['attr' => ['class' => 'myClass']]);

2)在你看来(Twig):

{{ form_start(form,{ 'attr' : { 'class': 'myClass' } }) }}

php – Symfony ManyToMany表单

php – Symfony ManyToMany表单

我有实体技能和语言,专业,平台实体与ManyToMany的关系,当我创建技能时,我选择语言,平台和表格是有效的,正常持久和在DB中刷新.但是,当我创建语言或专业或平台时,我有错误此值无效并且在调试面板中.为什么我不明白,请帮忙:

Message Origin  Cause
This value is not valid.    skills  Symfony\Component\Validator\ConstraintViolation
Object(Symfony\Component\Form\Form).children[skills] = [0 => AngularJS,1 => API]

Caused by:

Symfony\Component\Form\Exception\TransformationFailedException
Unable to reverse value for property path "skills": Could not find all matching choices for the given values

Caused by:

Symfony\Component\Form\Exception\TransformationFailedException
Could not find all matching choices for the given values

在我删除的实体中

/**
 * Constructor
 */
public function __construct()
{
    $this->language = new \Doctrine\Common\Collections\ArrayCollection();
    $this->platforms = new \Doctrine\Common\Collections\ArrayCollection();
    $this->specialities = new \Doctrine\Common\Collections\ArrayCollection();
}

并且在语言,平台上也被删除了

实体:

class Skill
{
use Timestampable;
/**
 * @var integer
 *
 * @ORM\Column(name="id",type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var \MyBundle\Entity\CodeDirectoryProgramLanguages
 *
 * @ORM\ManyToMany(targetEntity="CodeDirectoryProgramLanguages",inversedBy="skills",cascade={"persist"})
 */
protected $language;

/**
 * @var \MyBundle\Entity\CodeDirectoryPlatforms
 *
 * @ORM\ManyToMany(targetEntity="CodeDirectoryPlatforms",cascade={"persist"})
 */
protected $platforms;

/**
 * @var \MyBundle\Entity\CodeDirectorySpecialities
 *
 * @ORM\ManyToMany(targetEntity="CodeDirectorySpecialities",cascade={"persist"})
 */
protected $specialities;

一个例子:

class CodeDirectorySpecialities
{
use Timestampable;
/**
 * @var integer
 *
 * @ORM\Column(name="id",type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="specialities",type="string",length=255)
 */
private $specialities;

/**
 * @ORM\ManyToMany(targetEntity="MyBundle\Entity\Skill",mappedBy="specialities",cascade={"persist"})
 */
protected $skills;

并添加到所有实体

public function __toString()
{
    return $this->string_filed_entity;
}

这是我的表格

public function buildForm(FormBuilderInterface $builder,array $options)
{
    $builder
        ->add('specialities');

            $builder->add('skills','entity',array(
                    'class'=>'MyBundle\Entity\Skill','property'=>'skill','multiple'=>true,'expanded' => true,)
            );
}

和行动

$entity = new CodeDirectorySpecialities();
    $form = $this->createCreateForm($entity);
    $form->handleRequest($request);

    if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();

            $skills = $entity->getSkills()->getValues();
        if(!empty($skills)){
            foreach($skills as $skill){
                $skill->addSpeciality($entity);
                $em->persist($skill);
            }
        }

        $em->persist($entity);
        $em->flush();

        return $this->redirect($this->generateUrl('specialities_show',array('id' => $entity->getId())));
    }

解决方法

这是因为html5验证器阻止了您的专业,平台和语言形式.

要添加专业,您不需要技能,因此您需要向您的构建者做广告:

public function buildForm(FormBuilderInterface $builder,array $options)
{
    $builder
        ->add('specialities')
        ->add('skills',array(
            'class' => 'AppBundle\Entity\Skill','property' => 'skill','multiple' => true,'expanded' => true
          ))
    ;
}

为你的另外两个子表格做同样的事情

如果您想在创建专业时选择一项或多项技能,则只需在控制器中执行:

$entity = new CodeDirectorySpecialities();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);

if ($form->isValid()) {
    $em = $this->getDoctrine()->getManager();

    $entity = $form->getData();
    $em->persist($entity);
    $em->flush();

    return $this->redirect($this->generateUrl('specialities_show',array('id' => $entity->getId())));
}

由于您之间的多对多关系,技能将自动更新

php – Symfony中的URL自动添加了params?Symfony =

php – Symfony中的URL自动添加了params?Symfony =

我的网址有问题. Symfony会自动添加params?Symfony =
怎么删除?

我认为这是一个改变的服务器设置.

http://mysite.com/?symfony=123456789

Symfony:Symfony 1.4

解决方法:

它看起来像会话ID.

将session.use_only_cookies设置为1仅使用cookie在客户端存储会话ID.

php – Symfony表单域属性empty_data被忽略

php – Symfony表单域属性empty_data被忽略

根据 Symfony 2.4 Documentation,任何不需要的表单域,但没有提供任何值(默认值为选择字段或空值为文本字段)将被保存到具有NULL值的实体.因此,如果您的实体字段被定义为NOT NULL(例如,不为nullable = true),那么当您坚持实体时,您会得到一个讨厌的错误:
sqlSTATE[23000]: Integrity constraint violation: 1048 Column 'shell' cannot be null

因此,文档说如果您不希望使用NULL作为默认值,则可以在文本或选择字段上指定empty_data属性.但是,这对我来说不行.

实体字段(不可空):

/**
 * @ORM\Column(type="string")
 */
protected $shell = '';

表单生成器(不需要):

->add('shell','choice',array(
    'label' => 'Shell','choices' => array('shell' => 'Fancy Pants'),'required' => false,'empty_data' => ''
))

我是否误会了这个空数据属性?我在其他地方缺少一些重要的设置吗?推荐的方法是什么?

UPDATE

这个Github ticket解释说这是2012年的一个问题,它还没有被修复.

这意味着每个使用表单构建器的人都被迫将任何不需要的字段置于可空字段中?对于框架来说,这似乎是很有意思的.当默认的”或’0’没有唯一的含义并且我们不需要NULL时,有很多原因我们不想使用NULL.对于许多查询,必须检查两个字段= 0或字段= NULL的存在是一个痛苦.

其他人正在使用更好的解决方案吗?

我按照建议的方式执行,但在Entity类中设置一个默认值.所以设置null,Entity正在修改它设置0或其他的东西.
public function __construct() { 
      $this->shell = 0;
}

或者,您可以在设定者中进行处理:

public function setShell($shell) {
      $this->shell = $shell;

      if ( !is_numeric($shell) ) {
             $this->shell = 0;
      }
      return $this;
}

也许不是最好的做法,但它的作用是没有可以使用的值.

我们今天的关于css – 将类属性添加到symfony表单构建器行divcss添加类名的分享已经告一段落,感谢您的关注,如果您想了解更多关于forms – Symfony2 – 将类添加到表单标记、php – Symfony ManyToMany表单、php – Symfony中的URL自动添加了params?Symfony =、php – Symfony表单域属性empty_data被忽略的相关信息,请在本站查询。

本文标签: