标签: formbuilder

Symfony Formbuilder获取pathInfo

有没有办法在buildForm函数内返回页面的pathInfo或URL?

class RoomType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
     public function buildForm(FormBuilderInterface $builder, array $options)
{

 VarDumper::dump($builder->getRequestHandler());
Run Code Online (Sandbox Code Playgroud)

formbuilder symfony

1
推荐指数
1
解决办法
101
查看次数

无法从表单构建器中的存储库获取getEntityManager

在Symfony2中的表单类型中,我想包含一个带有查询构建器的实体字段,以便选择要显示的行.我的查询很复杂,我无法找到一种方法来使用查询构建器,我想使用DQL.不幸的是,我不能这样做$repository->createQuery(...),也没有$repository->getEntityManager()->createQuery().只有$repository->createQueryBuilder(...)作品.有没有解决的办法?

顺便说一句,如果你碰巧找到一种更聪明的方式来执行我的SQL请求,这将非常有用(但这不是这个问题的主题!)

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $user = $this->user;
    $builder
        ->add('friend', 'entity',
            array(
                'class' => 'MyappUserBundle:User',
                'label' => 'User',
                'query_builder' => function(EntityRepository $repository) use ($user) {
                    $query = $repository->getEntityManager()->createQuery("
                        SELECT u
                            FROM MyappUserBundle:User u
                        WHERE
                            u.id NOT IN (SELECT friend FROM MyappUserBundle:Friendrequest WHERE user = :user)
                        AND 
                            u.id NOT IN (SELECT user FROM MyappUserBundle:Friendrequest WHERE friend = :user)
                        AND 
                            u.id != :user
                        ")
                        ->setParameter('user', $user)
                        ;

                    return $query;
                }
                )
            ) …
Run Code Online (Sandbox Code Playgroud)

doctrine dql formbuilder symfony

0
推荐指数
1
解决办法
1280
查看次数

Symfony2.5.3表单字段"entity" - 无法加载类型"entity"

添加"实体"类型的表单字段时,我有SF2的这个问题.这是我的情况:

  1. 我有Country实体和CountryFormType
  2. 我有网络实体和NetworkFormType
  3. 此NetworkFormType包含Country字段,因此在我的NetworkFormType.php中:

    $builder->add('country', 'entity', [
        'label' => $translator->trans('global.labels.country'),
        'data_class' => 'MyBundle\Entity\Country',
        'property' => 'name',
        'choices' => $countries
    ])
    
    Run Code Online (Sandbox Code Playgroud)

我还在我的网络实体中宣布了公共制定者和吸气者.顺便说一句,我将我的表单注册为服务:

mybundle.form.network:
    class: MyBundle\Form\NetworkFormType
    tags:
        - { name: form.type, alias: mybundle_form_network }
Run Code Online (Sandbox Code Playgroud)

但它总是导致:

Could not load type "entity"
Run Code Online (Sandbox Code Playgroud)

参考:实体字段类型

有人有个主意吗?

php forms entity formbuilder symfony

0
推荐指数
1
解决办法
3794
查看次数

如何在Symfony 4中将queryBuilder与formBuilder一起使用?

我在Symfony中使用查询生成器时遇到困难。像这样,我的选择框列出了存储在我的实体“选项”中的所有数据:

$options['class'] = Options::class;
$options['choice_label'] = function ($value) {
    return $value->getName();
};

$formBuilder->add($name, $class, $options);
Run Code Online (Sandbox Code Playgroud)

但是我想过滤数据,以便选项仅显示连接到我的实体“字段”的特定ID的数据。

这是我使用查询生成器的方法:

$options['class'] = Options::class;
$options['choice_label'] = 'id';
$options['query_builder'] = function (EntityRepository $id) {
    return $this->createQueryBuilder('f')
        ->leftJoin('f.fields', 'fi')
        ->where(":id MEMBER OF f.fields")
        ->setParameter(':id', $id)
        ->getQuery()
        ->execute();
};
Run Code Online (Sandbox Code Playgroud)

我收到的错误消息是:

传递给App \ Controller \ PagesController :: App \ Controller {closure}()的参数1必须是App \ Controller \ EntityRepository的实例,App \ Repository \ OptionsRepository的实例,在/ Users / work / project / vendor /中调用第32行上的symfony / doctrine-bridge / Form / Type / EntityType.php

php oop query-builder formbuilder symfony

0
推荐指数
1
解决办法
211
查看次数

处理多个 mat-error

我有这样的 mat-input 错误处理

      <mat-form-field>
        <input formControlName="title" matInput placeholder="Title*" />
        <mat-error *ngIf="addNewForm.get('title').errors?.required">
          Can not be empty
        </mat-error>
        <mat-error *ngIf="addNewForm.get('title').errors?.minlength">
          Min length is 1 character
        </mat-error>
        <mat-error *ngIf="addNewForm.get('title').errors?.maxlength">
          Max length is 255 characters
        </mat-error>
      </mat-form-field>

      <mat-form-field>
        <input formControlName="name" matInput placeholder="Name*" />
        <mat-error *ngIf="addNewForm.get('name').errors?.required">
          Can not be empty
        </mat-error>
        <mat-error *ngIf="addNewForm.get('name').errors?.minlength">
          Min length is 1 character
        </mat-error>
        <mat-error *ngIf="addNewForm.get('name').errors?.maxlength">
          Max length is 255 characters
        </mat-error>
      </mat-form-field>
Run Code Online (Sandbox Code Playgroud)

如何直接在组件中处理这个问题,而不是手动编写所有这些错误,检查组件中的所有内容并动态设置错误,如下所示

      <mat-form-field>
        <input formControlName="title" matInput placeholder="Title*" />
        <mat-error>{{ someError }}</mat-error>
      </mat-form-field>

      <mat-form-field>
        <input formControlName="name" matInput placeholder="Name*" /> …
Run Code Online (Sandbox Code Playgroud)

formbuilder angular angular-reactive-forms

0
推荐指数
1
解决办法
1万
查看次数

Bootstrap 3 + Codeigniter表单生成器

我正在寻找一个PHP,Codeigniter,Bootstrap 3表单生成器,但找不到一个.

codeigniter formbuilder twitter-bootstrap-3

-1
推荐指数
1
解决办法
1万
查看次数

如何替换数组中的变量?

我正在尝试减少一些代码,以使其看起来更干净:

  if($target == "edit"){
                $formBuilder->add('getTimestamp', DateType::class, array(
                  'widget' => 'single_text',
                  'format' => 'dd.MM.yyyy',
                  'html5' => false,
                  'attr' => array('class' => 'js-date form-control', 'style' => 'line-height: 20px;'), 'label' => $field['fieldName'],
                ));
              } else {
                $formBuilder->add('getTimestamp', DateType::class, array(
                  'widget' => 'single_text',
                  'data' => new \DateTime(),
                  'format' => 'dd.MM.yyyy',
                  'html5' => false,
                  'attr' => array('class' => 'js-date form-control', 'style' => 'line-height: 20px;'), 'label' => $field['fieldName'],
                ));

              }
Run Code Online (Sandbox Code Playgroud)

这是我的方法:

if($target == "edit"){
      $newdate = ['data' => new \DateTime()];
 } 


 $formBuilder->add('getTimestamp', DateType::class, array(
                'widget' => …
Run Code Online (Sandbox Code Playgroud)

php arrays oop formbuilder symfony

-1
推荐指数
1
解决办法
104
查看次数