Propel を使用してフォームを作成しました。フォームは正常に送信され、検証されます。$user オブジェクトをコミットしようとすると問題が発生します - MappingException が発生します。$user への以前の参照は問題ないように見えるので、これがどこから来ているのか本当にわかりません。
コメント行はいくつかのフォーム ガイドから取られていますが、空の行をデータベースに挿入していることに注意してください (ただし、$user の var_dump はすべての情報を持っていることを示しています。別。
これが私のコードです:
namespace LifeMirror\APIBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use LifeMirror\APIBundle\Model\Users;
use LifeMirror\APIBundle\Model\UsersQuery;
use LifeMirror\APIBundle\Form\Type\UsersType;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use FOS\RestBundle\View\View;
class RegisterController extends Controller
{
public function indexAction()
{
return $this->processForm(new Users());
}
private function processForm(Users $user)
{
$statusCode = $user->isNew() ? 201 : 204;
$em = $this->getDoctrine()->getEntityManager();
$form = $this->createForm(new UsersType(), $user);
//die(phpinfo());
$form->bind(array(
"firstName" => $this->getRequest()->request->get('firstName'),
"lastName" => $this->getRequest()->request->get('lastName'),
"email" => $this->getRequest()->request->get('email'),
"password" => $this->getRequest()->request->get('password'),
"dob" => array(
"year" => json_decode($this->getRequest()->request->get('dob'))->year,
"month" => json_decode($this->getRequest()->request->get('dob'))->month,
"day" => json_decode($this->getRequest()->request->get('dob'))->day
),
"location" => $this->getRequest()->request->get('location'),
"tutorialWatched" => $this->getRequest()->request->get('tutorialWatched'),
"challengeEmails" => $this->getRequest()->request->get('challengeEmails'),
"mailingList" => $this->getRequest()->request->get('mailingList')
));
if ($form->isValid()) {
//$user->save();
$em->persist($user);
$em->flush();
$response = new Response();
$response->setStatusCode($statusCode);
return $response;
}
$view = View::create($form, 400);
$view->setFormat('json');
return $view;
}
}