我刚刚创建了一个表单类型,它有一个选择类型,choice_list必须根据记录的用户角色进行更改,因此表单类型需要访问当前用户角色,然后choice_list根据它进行更改.
有人能指出一种通过Symfony2表单模式完成它的简洁方法吗?
我有一个标准 FOS 用户,该用户与博客实体具有多对一实体关系。
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="blog")
* @ORM\JoinColumn(name="user", referencedColumnName="id")
*/
private $user;
Run Code Online (Sandbox Code Playgroud)
我使用了app/consolegenerate:doctrine:crud命令来生成基本的 crud 系统。
当我创建新的博客实体时,我想插入执行该操作的登录用户。默认情况下,Symfony 生成 CRUD 代码,允许用户选择连接到实体的用户。
$builder
->add('name')
->add('address')
->add('facebook')
->add('twitter')
->add('user')
;
Run Code Online (Sandbox Code Playgroud)
在控制器中,我可以使用 security.context 访问登录用户:
$user = $this->get('security.context')->getToken()->getUser();
Run Code Online (Sandbox Code Playgroud)
改变这种情况的最佳行动方案是什么?
从来没有遇到过这个问题.
Default和Create)$phone字段上,而应该是mappend到$lastName自己的属性
你能重现同样的问题吗?
$phone属性在Create验证组中,而Default隐藏组中的$ phone :
class User
{
/**
* @Assert\NotBlank(groups={"Create"}, message="Last name is required.")
*
* @var string
*/
protected $lastName;
/**
* @Assert\NotBlank(message="Phone is required.")
*
* @var string
*/
protected $phone;
}
Run Code Online (Sandbox Code Playgroud)
我根据提交的数据确定验证组:
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('lastName', 'text');
$builder->add('phone', 'text');
$builder->add('submit', 'submit');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults([
'required' => false, …Run Code Online (Sandbox Code Playgroud) 我创建了以下 fom 类,但没有使用实体:
<?php
// src/OC/PlatformBundle/Form/AdvertType.php
namespace OC\PlatformBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class MyFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('date', 'date')
->add('title', 'text')
->add('save', 'submit')
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array());
}
public function getName()
{
return 'my_form';
}
}
Run Code Online (Sandbox Code Playgroud)
我想添加一组验证约束来验证此表单。
我正在尝试创建一个管理器来处理控制器的基本请求(列表、新建、编辑、删除)。我需要在此服务的构造函数中注入表单工厂。我应该叫什么名字?
我需要这样的东西:
lp_ExpedienteManager:
class: AppBundle\Services\ExpedienteManager\ExpedienteManager
arguments: [ "@doctrine.orm.entity_manager", "@security.token_storage", "@form_factory" ]
Run Code Online (Sandbox Code Playgroud)
谢谢你的时间!
我想在创建、更新或删除实体时以不同的方式验证实体原则。
我的实体类中有一个实体约束验证器。
// src/AppBundle/Entity/AcmeEntity.php
use AppBundle\Validator\Constraints as AcmeAssert;
/**
* @AcmeAssert\CustomConstraint
*/
class AcmeEntity
{
// ...
protected $name;
// ...
}
Run Code Online (Sandbox Code Playgroud)
在我的 CustomConstraint 中,我想确定实体是否会被更新、创建或删除以执行特定的验证器。
使用工作单元是一种解决方案吗?
做这个的最好方法是什么?
我认为这个问题在很多应用程序中都很常见?
谢谢大家 ;)
我有表单,需要创建内联验证:
$builder
->add('Count1', 'integer', [
'data' => 1,
'constraints' => [
new NotBlank(),
new NotNull(),
],
])
->add('Count2', 'integer', [
'constraints' => [
new NotBlank(),
new NotNull(),
],
])
->add('Count3', 'integer', [
'data' => 0,
'constraints' => [
new NotBlank(),
new NotNull(),
],
])
Run Code Online (Sandbox Code Playgroud)
白色内联验证如何表达规则
->add('attendFrom', DateType::class, array(
'widget' => 'choice',
'html5' => false,
'months' => array(),
'days' => array(),
'attr' => array(
'placeholder' => 'Start year, e.g., 1980 ',
)
))
Run Code Online (Sandbox Code Playgroud)
我尝试禁用日期和月份的类型。我只想展示几年。这是可能的吗?
我找到了一些解决方案来隐藏树枝上的几天和几个月,但我想知道我是否可以从 FormType 中禁用它。
干杯
我用来form.factory创建一个表单和树枝来渲染该表单。在这种情况下我必须使用PUT方法。我的代码是:
控制器:
\n\n$builder = $this->get(\'form.factory\')->createNamedBuilder();\n$form = $builder\n ->add(\'id\', HiddenType::class, array(\'data\' => $id))\n ->add(\'email\', EmailType::class, array(\n \'required\' => false,\n \'data\' => count($res[\'result\'][0][\'email\']) ? $res[\'result\'][0][\'email\'] : \'\',\n \'attr\' => array(\'class\' => \'form-control label_form_symfony\'),\n \'constraints\' => array(\n new Email(array(\'message\' => \'il campo Email non \xc3\xa8 valido\'))\n )\n ))\n ->getForm();\n\n$form->handleRequest($request);\n\nif ($form->isSubmitted() && $request->isXmlHttpRequest()) {\n $data = $form->getData();\n\n if ($form->isValid()) {\n // save ...\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n树枝模板:
\n\n{{ form_start(form,{\'method\':\'PUT\',\'attr\':{action: path(\'update_xxx\',{\'id\' : id})}}) }}\n {{ form_widget(form, {\'attr\' : {\'class\' …Run Code Online (Sandbox Code Playgroud) 我有我必须用 Symfony Form 重做的表格,但我坚持在这个地方:
<div class="currency-label">
<input checked id="cur1" name="currency" type="radio">
<label for="cur1">EURO</label>
</div>
<div class="currency-label active">
<input id="cur2" name="currency" type="radio">
<label for="cur2">USD</label>
</div>
Run Code Online (Sandbox Code Playgroud)
如何使用 Symfony Forms 制作单选按钮?在我的表单类中,我添加了:
->add('vacancyCurrency', RadioType::class, ['required' => false])
Run Code Online (Sandbox Code Playgroud)
和我的模板
{{ form_widget(form.vacancyCurrency) }}
Run Code Online (Sandbox Code Playgroud)
我的表格变短了,显然没有 css :
如果我添加 css 类来形成它看起来不同:
{{ form_widget(form.vacancyCurrency, {'attr':
{'class': 'currency-label'}
}) }}
Run Code Online (Sandbox Code Playgroud)