我有一个Doctrine用户实体,我试图为注册表单添加表单验证器,但他们不会在任何条件下触发注册表单.
我的用户实体:
namespace JMSHockey\AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* My\AppBundle\Entity\User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="My\AppBundle\Entity\UserRepository")
* @UniqueEntity(fields={"email"}, message="Sorry, this email address is already in use.", groups={"registration"})
* @UniqueEntity(fields={"username"}, message="Sorry, this username is already taken.", groups={"registration"})
*/
class User implements AdvancedUserInterface,\Serializable
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string $email
*
* @ORM\Column(name="email", type="string", length=75, nullable=false)
* @Assert\Email() …Run Code Online (Sandbox Code Playgroud) 我正在构建一个silex应用程序(源代码在这里)
在App\Form\DataTransformer我有一个MetadataTransformer类.
但该transform方法不起作用(反向转换).
它适用于a App\Form\Metadata AbstractType,它是一个集合的一部分App\Form\ArticleForm AbstractType.
最后一个表单是在我的编辑方法中调用的App\Controller\Admin\ArticleAdminController
数据转换器应该映射这样的数据
{"key":"value"}
Run Code Online (Sandbox Code Playgroud)
进入"表格数据",如:
[{"name":"key","value":"key"}]
Run Code Online (Sandbox Code Playgroud)
因此它可以显示为集合.
Metadata.php
class MetaData extends AbstractType
{
protected $span4 = "span4";
protected $span3 = "span3";
public function buildForm(FormBuilderInterface $builder,array $options)
{
$builder
->add('name', 'text', array(
"label" => ' ',
"attr" => array(
"class" => $this->span3,
"placeholder" => "name"
)
))
->add('value', 'text', array(
'label' => ' ',
'attr' => array(
"class" => $this->span4,
'placeholder' => 'value'
)
)) …Run Code Online (Sandbox Code Playgroud) 似乎Symfony2 Form组件不处理这种常见情况.以下是我在html中想要的内容

代码如下:
->add('code', 'choice', array(
'choices' => array(
'Food' => array('pizza', 'burger', 'icecream'),
'Music' => array('poney', 'little', 'pocket'),
),
'multiple' => true,
'expanded' => true,
'required' => true
));
Run Code Online (Sandbox Code Playgroud)
这实际上给出了错误的输出:

这很奇怪,因为案件expanded => false处理得当

请问如何处理这个案子?
这真的很奇怪,它发生在更新Twig模板后:
控制器部分
$registration = new Registration();
$form = $this->createForm(new RegistrationType(), $registration, array(
'action' => $this->generateUrl('account_create'),
));
return $this->render(
'AcmeCommonBundle:Security:register.html.twig',
array(
'form' => $form->createView(),
'contentBackColor' => 'canvasGreen'
)
);
Run Code Online (Sandbox Code Playgroud)
模板部分
{{ form_start(form) }}
{{ form_errors(form) }}
<p>All Fields Are Required</p>
<div class="form-row">
{{ form_label(form.firstname, "First Name") }}
{{ form_widget(form.firstname) }}
<div class="clear-fix"></div>
</div>
<div class="form-errors-row">
{{ form_errors(form.firstname) }}
</div>
<div class="form-row">
{{ form_label(form.lastname, "Last Name") }}
{{ form_widget(form.lastname) }}
<div class="clear-fix"></div>
</div>
<div class="form-errors-row">
{{ form_errors(form.lastname) }}
</div>
<div class="form-row">
{{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试在首页上插入自定义奏鸣曲表单字段类型,而不是在 SonataAdmin 中,如下所示:
$form = $this->createFormBuilder($content)
->add('titleEs', 'text', array('required' => true, 'label' => 'label.title.spanish', 'attr' => array('class' => 'col-xs-12 form-control input-lg')))
->add('contentEs', 'ckeditor', array('required' => true,'label' => 'label.content.spanish', 'attr' => array('class' => 'col-xs-12')))
->add('titleEn', 'text', array('required' => true,'label' => 'label.title.english', 'attr' => array('class' => 'col-xs-12 form-control input-lg')))
->add('contentEn', 'ckeditor', array('required' => true, 'label' => 'label.content.english', 'attr' => array('class' => 'col-xs-12')))
->add('header', 'sonata_type_model', array('required' => true,'label' => 'label.content.headerImage'), array('link_parameters' => array('context' => 'content/front', 'size' => 'big')))
//->add('coverImage', 'sonata_type_model_list', array('required' => true,'label' …Run Code Online (Sandbox Code Playgroud) 假设我将自定义表单类型创建为服务,如Symfony文档中所述.但我想要2个"性别"自定义类型,有2个不同的输入参数,我在Symfony 2.7中这样做:
# app/config/config.yml
parameters:
genders1:
m: Male
f: Female
genders2: # This makes no sense at all, but it is for the example purpose!
h: Horse
t: Turtle
Run Code Online (Sandbox Code Playgroud)
然后,我宣布了两个这样的服务:
<!-- src/AppBundle/Resources/config/services.xml -->
<service id="app.form.type.gender1" class="AppBundle\Form\Type\GenderType">
<argument>%genders1%</argument>
<tag name="form.type" alias="gender1" />
</service>
<service id="app.form.type.gender2" class="AppBundle\Form\Type\GenderType">
<argument>%genders2%</argument>
<tag name="form.type" alias="gender2" />
</service>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我使用相同的 GenderType类来处理2种自定义表单类型(使用gender1和gender2别名),我可以这样使用:
$builder
->add('field1', 'gender1')
->add('field2', 'gender2');
Run Code Online (Sandbox Code Playgroud)
这允许我在一个GenderType具有不同输入参数的类()中添加一些公共逻辑(在这个例子中我有比2更多的可能性).
但是从Symfony 2.8开始,不推荐使用服务别名添加字段.类名必须作为第二个参数传递,如下所示:
$builder->add('field1', GenderType::class)
Run Code Online (Sandbox Code Playgroud)
那么如何才能区分我的2个服务(每个服务都没有相同的输入参数)?
创建Gender1Type和Gender2Type扩展抽象GenderType …
我刚刚开始学习Symfony3,我正在尝试使用bootstrap3来构建我的表单.根据文档,bootstrap_3_layout.html.twig内置并可以通过更改Twig设置全局激活config.yml:
# Twig Configuration
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
form_themes:
- "bootstrap_3_layout.html.twig"
Run Code Online (Sandbox Code Playgroud)
当我重新加载页面时,页面加载没有CSS,twig文件和页面源如下:
{# app/Resources/views/experiment/new.html.twig #}
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
<form name="form" method="post">
<div id="form"><div class="form-group"><label class="control-label required" for="form_title">Title</label><input type="text" id="form_title" name="form[title]" required="required" class="form-control" /></div><div class="form-group"><button type="submit" id="form_save" name="form[save]" class="btn-default btn">Create Task</button></div><input type="hidden" id="form__token" name="form[_token]" class="form-control" value="O7tN2AUjyLByEz2tkNf675jqixxjev0p4ivzs5Bn4VA" /></div>
</form>
Run Code Online (Sandbox Code Playgroud)
这表明bootstrap3类已正确注入.该网站本身如下:
我错过了哪些步骤让CSS正常工作?
我使用的是symfony 3 + EasyAdmin捆绑软件,在某些实体中,我有一个字段“ Sectors”,该字段创建与另一个实体“ Sector”的关系。
EasyAdmin会自动为我提供用户可以选择的所有部门的选择。
我需要用户(与一个或多个扇区相关联)只能修改(添加或删除关系),只要该关系在其扇区中(换句话说,如果我是用户并且我与扇区相关联) A和B,如果我发布(或编辑)新闻,则只能将新闻部门设置(添加/删除)到A和/或B)...
我该如何实现?
如我所见,该表单由symfony标准表单组件处理。
我需要从Symfony发送表单ChoiceType :: class
但是我不需要选择键,我需要发送选择值。
那有可能吗?
$form->add('section', ChoiceType::class, array(
'mapped' => false,
'choices' => array(
1 => 'value1',
2 => 'value2'
),
));
Run Code Online (Sandbox Code Playgroud)
如果我选择value1,我只想发送value1,
不是默认的键1。
我想使用参数修改提交的symfony表单的url。从该平台尝试了许多解决方案,但没有解决方案有帮助!
当前网址如下:http://localhost:8000/search?app_bundle_search_form%5Bsearch%5D=qui&app_bundle_search_form%5Bbrand%5D=&app_bundle_search_form%5Bprice%5D=500%2C100000&app_bundle_search_form%5B_token%5D=BtA5bZb9HErUXzXFzGFbpEhlD6nD33zr7tKiPLxjpy4
我想要它像http:// localhost:8000 / search?search = qui?brand =?minprice = 500?maxprice = 100000
这是我的控制器:
public function searchAction($searchTerm=null,Request $request)
{
if ($request->getMethod() == 'GET') {
$searchTerm = $request->query->get('app_bundle_search_form')['search'];
$searchBrand = $request->query->get('app_bundle_search_form')['brand'];
$price = $request->query->get('app_bundle_search_form')['price'];
$price = explode(",", $price);
$minPrice = $price[0];
$maxPrice = $price[1];
$em = $this->getDoctrine()->getManager();
$search = $em->getRepository('AppBundle:Classified')->searchClassifieds($searchTerm, $searchBrand, $minPrice, $maxPrice);
}
return $this->render('search-result.html.twig', [
'searchTerm' => $searchTerm,
'results' => $search
]);
}
Run Code Online (Sandbox Code Playgroud)
形成:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setMethod('GET')
->add('search', TextType::class,array(
'required'=> false …Run Code Online (Sandbox Code Playgroud) symfony ×10
symfony-forms ×10
php ×5
doctrine-orm ×2
css ×1
form-fields ×1
silex ×1
sonata ×1
sonata-admin ×1
symfony-2.1 ×1
symfony-2.8 ×1
twig ×1