所以,我需要做的是在每个输出当前元素的ID field_row.我得到的是使用以下代码覆盖Symfony的默认field_row块:
{% block field_row %}
{% spaceless %}
<div class="clearfix" id="{{ form.get('name') }}-row">
{{ form_label(form) }}
<div class="input">
{{ form_widget(form) }}
</div>
</div>
{% endspaceless %}
{% endblock field_row %}
Run Code Online (Sandbox Code Playgroud)
然而,这个{{ form.get('name') }}结构对我来说似乎很尴尬,我确信有一个更文明的方式来做这件事.任何人?
我正在使用Symfony 2.1.3-DEV并尝试将表单转换为字符串(某种ID),然后在提交表单时从字符串返回实体.如果我使用食谱中给出的变换器,问题是一样的:http: //symfony.com/doc/master/cookbook/form/data_transformers.html
控制器代码:
$task = $entityManager->find('AcmeTaskBundle:Task', $id);
$form = $this->createForm(new TaskType(), $task); // so $task->issue is Issue object
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
表单的视图数据应该是Acme\TaskBundle\Entity\Issue类的实例,但是是(n)字符串.您可以通过将"data_class"选项设置为null或通过添加将(n)字符串转换为Acme\TaskBundle\Entity\Issue实例的视图转换器来避免此错误.
问题是,我已经有一个变换器,它转换为TO字符串.
来自Form.php:
if (null !== $dataClass && !$viewData instanceof $dataClass) {
throw new FormException(
//...
);
}
Run Code Online (Sandbox Code Playgroud)
为什么$viewData检查是data_class参数的实例(或给定对象的猜测类型)?是不是视图数据应该是字符串/数组等?我错过了什么吗?
是否可以创建具有相同形式和操作的2个相关实体?如果有,怎么样?
我想在1step注册中创建一个新用户及其相关问卷.
谢谢,卢卡
如何使用Twig 渲染通过Symfony的表单定义的单个按钮?
我有这个领域,
->add('number', 'number', array(
'label' => false,
'attr' => array('class' => 'producto', 'type' => 'number')))
Run Code Online (Sandbox Code Playgroud)
我期望type="number"添加一个属性,使用小箭头向下/向上增加和减少数字,但我得到一个type ="text"属性的输入:
<input type="text" value="11" class="producto form-control" required="required" name="project_backendbundle_pedido[pedidoSubitems][0][number]" id="project_backendbundle_pedido_pedidoSubitems_0_number">
Run Code Online (Sandbox Code Playgroud) 我正在建立一个入门程序.它非常简单:只需一个电子邮件字段和一个提交按钮.
程序如何工作
我只有一个带有两种方法的控制器:indexAction()而endAction()
indexAction只是使用注释设置路径并以手工形式显示树枝模板:
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
class GetStartedController extends Controller
{
/**
* @Route("getstarted")
* @Template()
*/
public function indexAction()
{
return array(
// ...
);
}
/**
* @Route("getstarted/end", name="getStartedEnd")
* @Template()
*/
public function endAction(Request $request)
{
// ... other code
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,目前该方法确实无效,因为表单是直接在树枝模板中手工制作的.
以下是呈现表单的代码(在twig模板中手工制作):
{% extends "::base.html.twig" %}
{% block title %}AppBundle:GetStarted:index{% endblock %}
{% block body %}
<form id="getStarted" action="{{ path('getStartedEnd') }}" method="post">
<div class="form-group">
<input type="email" …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
public function addAction(Request $request){
$aBasket[] = $request->request->all();
$this->get('session')->set('aBasket', $aBasket);
return $this->redirect($this->generateUrl('shop_desktop_homepage'));
print_r($aBasket);
}
Run Code Online (Sandbox Code Playgroud)
工作正常,但只保存在会话中保存的最后一个数组.如何投入会议.例如,数组像这样保存,只保存最后一个:
array:1 [?
0 => array:3 [?]
]
Run Code Online (Sandbox Code Playgroud)
但我想保存:
array:1 [?
0 => array:3 [?]
1 => array:3 [?]
2 => array:3 [?]
]
Run Code Online (Sandbox Code Playgroud)
不仅是最后一个.请帮我!!Thx提前.
我在用户表单中有一个用户表单和联系表单,我试图将我的联系表单添加到用户表单中
当我试图添加
$builder->add(
'contact',
new ContactType()
);
Run Code Online (Sandbox Code Playgroud)
它失败了
You cannot add children to a simple form.
Maybe you should set the option "compound" to true?
Run Code Online (Sandbox Code Playgroud)
试图设置化合物,但没有工作
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$defaults = array(
'compound' => true,
'inherit_data' => true,
);
$resolver->setDefaults($defaults);
}
Run Code Online (Sandbox Code Playgroud) 我通过AJAX CALL验证了表单,但无法检索“错误消息”。
这是我所说的:
$newRdvForm = $this->createForm(new RdvType());
$newRdvForm->handleRequest($request);
if ($newRdvForm->isValid()) {
// set of instructions to be performed when the form is valid
}
else {
$errors= array();
foreach ($newRdvForm->getErrors() as $key => $error) {
$errors[$key] = $error->getMessage();
}
$response = new Response(json_encode($errors));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
Run Code Online (Sandbox Code Playgroud)
我使用了symfony 2.7。上面的代码不会检索错误消息。
在Symfony 3中,不允许再使用它cascade_validation.所以你必须为类型做一个断言.但它不起作用,即使字段是BLANK但Assert表示NOtBlank,表单也是有效的.我有一个类参与者,我想在检查我的参与者模型时检查Adults ArrayCollection.
//Participant Model
/**
* @var ArrayCollection
* @Assert\All({
* @Assert\Type(type="My\WebsiteBundle\Model\Adult"),
* })
*/
protected $adults;
//Adult Model
class Adult
{
/**
* @var string
*
* @Assert\NotBlank()
*/
protected $salutation;
/**
* @var string
*
* @Assert\NotBlank()
*/
protected $firstname;
/**
* @var string
*
* @Assert\NotBlank()
*/
protected $lastname;
Run Code Online (Sandbox Code Playgroud) symfony-forms ×10
symfony ×9
php ×5
forms ×2
symfony-2.1 ×2
twig ×2
arrays ×1
session ×1
symfony-2.3 ×1
symfony-2.6 ×1
webforms ×1