有没有办法在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) 在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) 添加"实体"类型的表单字段时,我有SF2的这个问题.这是我的情况:
此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)
参考:实体字段类型
有人有个主意吗?
我在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
我有这样的 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) 我正在寻找一个PHP,Codeigniter,Bootstrap 3表单生成器,但找不到一个.
我正在尝试减少一些代码,以使其看起来更干净:
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)