這是我第一次嘗試處理表單,我遵循官方documentation for Symfony 2.3。顯示錶單已經解決了,但我一直無法處理它。Symfony2:提交表單提交
我得到以下錯誤:
Catchable Fatal Error: Argument 2 passed to Symfony\Component\Validator\Mapping\ClassMetadata::addPropertyConstraint() must be an instance of Symfony\Component\Validator\Constraint, array given, called in /home/torob/lampstack-5.4.16-0/apache2/htdocs/A/vendor/symfony/symfony/src/Symfony/Component/Validator/Mapping/Loader/YamlFileLoader.php on line 90 and defined in /home/torob/lampstack-5.4.16-0/apache2/htdocs/A/vendor/symfony/symfony/src/Symfony/Component/Validator/Mapping/ClassMetadata.php line 193
500 Internal Server Error - 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 /供應商/ symfony中/ symfony中/ src目錄/ Symfony的/分量/識別/製圖/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(雖然我不知道這是否是相關的,因爲isVal之前發生的錯誤標識功能被稱爲在我的控制器):
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"}
很抱歉打擾你們,如果這被證明是某種noobish錯誤的。 如果你們中的任何一個人能夠幫助我解決這個問題,你會爲我做一個很棒的贊成(如果我們的項目按預期進行的話,也可能是世界)。
'bind()的'被稱爲'提交()'因爲Symfony的2.2,我認爲 – ferdynator
謝謝你的提示比亞夫,ferdy! – Tor
我嘗試用$ form-> submit($ request)替換$ form-> bind($ request),當重試舊的方式時,但仍然出現同樣的錯誤。 (順便說一句,如果你覺得它很有趣:看起來他們仍然在2.2文檔中使用bind(),但是現在當我在Php-storm中鍵入bind()時,我被告知它已折舊。) – Tor