如何使用in 将HTML class属性设置为表单?<input>FormBuilderSymfony2
像这样的东西:
->add('birthdate', 'date',array(
'input' => 'datetime',
'widget' => 'single_text',
'attr' => array(
'class' => 'calendar'
)
))
{{ form_widget(form.birthdate) }}
Run Code Online (Sandbox Code Playgroud)
我希望此input字段的属性class设置为日历
我还在学习Symfony2并且不了解如何上传文件.
别担心,我已经检查了文档.这真的很好,但我的问题没有在任何教程中解释.
我正在寻找有关如何使用Symfony2上传文件但有所有人需要的所有东西的指导(例如扩展的约束,基于id和东西重命名文件,在db中存储路径等等)
我找到了很好的教程,试图混合它们但没有成功.每次出现不同的问题:文件在表单上的每次提交时重新上传(即使文件字段为空),guessExtension也不可能使用,tmp路径存储在数据库而不是正确的路径,文件没有移动,不可能在重命名中使用了id,因为id是自动递增的,因此尚未生成).
所以,我会提出一个"标准"实体,比方说:Photo.php
/**
* Photo
*
* @ORM\Table(name="photo")
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
*/
class Photo
{
// Annotation for the id and auto increment etc
private $id;
/**
* @var string
* @Assert\File( maxSize = "3072k", mimeTypesMessage = "Please upload a valid Image")
* @ORM\Column(name="image", type="string", length=245, nullable=false)
*/
private $image
private $title
private $description
// all the function get, set for the 4 previous variables
}
Run Code Online (Sandbox Code Playgroud)
和控制器:
public function addPhotoAction()
{
$add_photo = new …Run Code Online (Sandbox Code Playgroud) 有没有办法访问嵌套的form_bulder.object?
## controller
@project = Project.new
@project.tasks.build
form_for(@project) do |f|
f.object.nil? ## returns false
fields_for :tasks do |builder|
builder.object.nil? ## returns true
end
end
Run Code Online (Sandbox Code Playgroud) 我在我的表单中使用实体选择列表.我只想使用特定的实体(例如:只有用户所属的组)因此,在控制器中,我正在获取这些组,并试图将它们传入formBuider.
控制器:
/.../
$groups = $em->getRepository('VendorMyBundle:Group')->getUserGroups($user);
$form = $this->createForm(new Message($groups), $message);
/.../
Run Code Online (Sandbox Code Playgroud)
所以现在怎么办?如何在formBuilder中使用它?如何更改此行以使用传递的组数组?
->add('group','entity',array('class' => 'Vendor\MyBundle\Entity\Group', 'label'=>'Group:'))
Run Code Online (Sandbox Code Playgroud)
或者以另一种方式:
class MessageType
{
/.../
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('group','entity',
array(
'class' => 'Vendor\MyBundle\Entity\Group',
'property' => 'name',
'query_builder' => function ($repository) {
$qb = $repository->createQueryBuilder('group');
$qb->add('where', 'group.administrator = :user');
$qb->setParameter('user', $user->getId());
return $qb;
},
'label' => 'Group'
)
)
// Continue adding fields
;
}
/.../
}
Run Code Online (Sandbox Code Playgroud)
那么如何让对象$ user在表单构建器中使用?($ user表示当前登录的用户)
当你有一个这样的表单域:
<%= f.text_field :last_name %>
Run Code Online (Sandbox Code Playgroud)
它将在HTML中生成:
<input id="person_last_name" name="person[last_name]" size="30" type="text" />
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何方法可以获得将生成的name属性(在本例中为"person [last_name]").
想要得到这似乎有点奇怪,但我有理由!我也不能费心去做一个冗长的解释.
我试图让表单字段的翻译工作.我有messages.en.yml我的Bundle的Ressource文件夹.
test: it works
form:
description: Add a description.
Run Code Online (Sandbox Code Playgroud)
我想构建一个表单EntityType,相应地转换表单字段的标签.
$builder->add(
'description',
null,
array('label' => 'form.description', 'required' => false)
);
Run Code Online (Sandbox Code Playgroud)
然而,只显示了文字字符串'form.description',而不是预期的翻译Add a description.
messages.en.yml我可以调用正确加载翻译服务
var_dump($this->get('translator')->trans('test'));
在控制器中获取翻译结果.
当我想将字符串'form.description'视为应翻译的内容时,我错过了什么?
我想我无论如何都必须在它们上调用trans功能,但是如何自动完成它呢?
是否有任何Rails 4兼容的表单构建器gem可以为Twitter Bootstrap 3.0.0表单提供全面的支持?
这是我认为"全面"支持的基准:
有关TWBS3表单的详细信息,请参阅TWBS3 文档和WIP github问题.
我已经看过simple_form和twitter_bootstrap_form_for,虽然两者都取得了进展,但目前似乎都没有提供足够的解决方案.
简单的形式
看起来有一个基本布局的解决方案,但是由于TWBS3需要额外的网格标记,我目前无法看到水平形式.
https://github.com/plataformatec/simple_form/pull/864 https://github.com/plataformatec/simple_form/issues/857
Twitter引导表单
这个拉取请求看起来很有希望,但我可以看到标记和正在使用的类中存在一些不准确之处.
https://github.com/stouset/twitter_bootstrap_form_for/pull/84
ruby-on-rails formbuilder twitter-bootstrap twitter-bootstrap-3
我有一个表格,我正在收集电话号码(手机,个人,其他).我需要至少填充输入.我正在尝试使用Angular2 FormBuilder.
经过大量研究后,我遇到了解决这个问题的问题.我知道我可以使用其他方法来做到这一点,但我想知道是否可以使用FormBuilder验证器.如果我添加"Validators.required",那么所有3个字段都是必需的.有什么建议或想法吗?
phone: this._fb.group(
{
other: [''],
personal: [''],
mobile: [''],
}
Run Code Online (Sandbox Code Playgroud)
根据"JB Nizet"的提示,这是我必须实现的工作:
我的组Validator(它仍然需要调整):
static phoneExists(group: FormGroup): { [key: string]: any } {
if (null != group) {
var other: AbstractControl = group.controls['other'];
var mobile: AbstractControl = group.controls['mobile'];
var personal: AbstractControl = group.controls['personal'];
var data: Object = group.value;
return (
(other.valid && isEmptyInputValue(other.value))
&& (mobile.valid && isEmptyInputValue(mobile.value))
&& (personal.valid && isEmptyInputValue(personal.value))
)
? { 'required': true }
: null;
}
}
Run Code Online (Sandbox Code Playgroud)
我的小组改变了:
phone: this._fb.group(
{
other: [''],
personal: …Run Code Online (Sandbox Code Playgroud) 我想在symfony2中为某些输入或标签字段添加一个类.
我可以在Twig中以我的形式做这样的事情:
<div class="row">
{{ form_label(form.subject) }}
{{ form_widget(form.subject, { 'attr': {'class': 'c4'} }) }}
</div>
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.但我必须为每个表单设置模板.我必须将其分解为可能的最小输出水平.我其实想用:
{{ form_widget(form) }}
Run Code Online (Sandbox Code Playgroud)
所以,我在想,我怎么能在某处为l添加一个css类:
class SystemNotificationType extends AbstractType {
public function buildForm(FormBuilder $builder, array $options) {
$builder ->add('subject', 'text', array( 'label' => 'Subject' ) )
–
Run Code Online (Sandbox Code Playgroud)
我认为这可能更有用,因为我只需要在一个地方进行更改.
那怎么可能这样做,或者我想错了路.
任何帮助都会很棒,
非常感谢,Philipp
我没有找到任何简单的方法来完成,默认情况下只需检查一个复选框.那可不是那么难,所以我错过了什么?
formbuilder ×10
symfony ×6
forms ×3
php ×3
input ×2
angular ×1
checkbox ×1
class ×1
css ×1
doctrine-orm ×1
file ×1
form-helpers ×1
ruby ×1
translation ×1
upload ×1
validation ×1