这是我第一次尝试处理表单,我正在关注Symfony 2.3 的官方文档。显示表单已经成功,但我无法处理它。
我收到以下错误:
可捕获的致命错误:传递给 Symfony\Component\Validator\Mapping\ClassMetadata::addPropertyConstraint() 的参数 2 必须是 Symfony\Component\Validator\Constraint 的实例,给定数组,在 /home/torob/lampstack-5.4.16 中调用-0/apache2/htdocs/A/vendor/symfony/symfony/src/Symfony/Component/Validator/Mapping/Loader/YamlFileLoader.php 在第 90 行并在 /home/torob/lampstack-5.4.16-0/apache2 中定义/htdocs/A/vendor/symfony/symfony/src/Symfony/Component/Validator/Mapping/ClassMetadata.php 第 193 行
500 内部服务器错误 - ContextErrorException
这是我的控制器:
public function newIdeaPostAction(Request $request){
$idea = new Idea();
$form = $this->createFormBuilder($idea)
->add('title', 'text')
->add('shortDescription', 'text')
->add('valueDescription', 'text')
->add('description', 'textarea')
->add('Next', 'submit')
->getForm();
$form->handleRequest($request);
if($form->isValid()){
return $this->redirect($this->generateUrl('ideside_idea_success'));
}
}
我知道这$form->handleRequest($request)
是造成错误的方法调用。我还尝试使用 2.1 文档中的“旧方式”(他们说 handleRequest 方法是新的):
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
// perform some action, such as saving the task to the database
return $this->redirect($this->generateUrl('task_success'));
}
}
这给了我同样的错误。
额外信息:
这是路线:
ideside_newidea_post:
path: /post/idea
defaults: { _controller: IdesideIdeaBundle:Default:newIdeaPost }
methods: [POST]
这是堆栈跟踪(...nameofproject/vendor/symfony/symfony/src/Symfony/Component/Validator/Mapping/ClassMetadata.php):
*
* @return ClassMetadata This object
*/
public function addPropertyConstraint($property, Constraint $constraint)
{
if (!isset($this->properties[$property])) {
$this->properties[$property] = new PropertyMetadata($this->getClassName(), $property);
这是我的validation.yml(虽然我不知道它是否相关,因为错误发生在我的控制器中调用isValid函数之前):
Ideside\IdeaBundle\Entity\Idea:
properties:
title:
- NotBlank: {message: "blabla"}
shortDescription:
- NotBlank: {message: "blabla"}
- Length: {max: 115, maxMessage: "blabla", min: 6, minMessage: "blabla"}
valueDescription:
-Length: {max: 115, maxMessage: "blabla", min: 5, minMessage: "blabla"}
description:
- Length: {max: 5000, maxMessage: "blabla"}
如果这被证明是某种愚蠢的错误,很抱歉打扰你们。 如果你们中的任何人可以帮助我解决这个问题,那么您将帮我一个很大的忙(如果我们的项目按预期进行,可能还会帮助整个世界)。