Anonymous
Symfony2/Проверка – проверка NotBlank не работает
Сообщение
Anonymous » 07 ноя 2024, 08:25
У меня проблема с Assert/NotBlank().
Она просто не работает.
Каждый раз, когда я отправляю пустую форму, я вижу 500, SQLSTATE[23000]: нарушение ограничения целостности: 1048 Столбец «***» не может быть нулевым вместо какой-то ошибки.
У меня есть это в объекте:
Код: Выделить всё
use Symfony\Component\Validator\Constraints as Assert;
Код: Выделить всё
...
/**
* @var string
*
* @ORM\Column(name="text", type="text")
* @Assert\NotBlank()
*/
private $text;
...
ДОПОЛНИТЕЛЬНО:
Контроллер:
Контроллер, для добавления объявлений в базу данных.
Код: Выделить всё
public function insertAdAction($categoryId, Request $request)
{
$em = $this->getDoctrine()->getManager();
$category = $em->getRepository('DbBundle:Category')->findAll();
$ads = new Ads();
$form = $this->createForm(new InsertAdType(), $ads, array(
'categoryId' => $categoryId,
'name' => $request->cookies->get('name'),
'phone' => $request->cookies->get('phone'),
'email' => $request->cookies->get('email'),
'password' => $request->cookies->get('password'),
));
$form->handleRequest($request);
if ($form->isValid()) {
try {
$user = new User();
$validator = $this->get('validator');
$validator->validate($ads);
$byCategory = $em->getRepository('DbBundle:Category')->findOneBy(array('id' => $categoryId), array());
$categoryName = $byCategory->getName();
$phone = $form['phone']->getData();
$ads->setCategory($categoryName);
$ads->setCategoryUrl($this->get('WebPortalBundle')->seoUrl($categoryName));
$ads->setCountry($form['country']->getData());
$ads->setText(nl2br($form['text']->getData()));
$ads->setTitleUrl($this->get('WebPortalBundle')->seoUrl($form['title']->getData()));
$ads->setSubcategoryUrl($this->get('WebPortalBundle')->seoUrl($form['subcategory']->getData()));
$ads->setIp($request->getClientIp());
if (!$em->getRepository('DbBundle:User')->findOneBy(array('phone' => $form['phone']->getData()))) {
$user->setPhone($phone);
$em->persist($user);
}
$ads->setPath(implode(',', $this->uploadImg($form['file']->getData())));
$em->persist($ads);
$em->flush();
$response = new Response();
$time = time() + 31536000;
$response->headers->setCookie(new Cookie('name', $form['name']->getData(), $time));
$response->headers->setCookie(new Cookie('email', $form['email']->getData(), $time));
$response->headers->setCookie(new Cookie('phone', $form['phone']->getData(), $time));
$response->headers->setCookie(new Cookie('password', $form['password']->getData(), $time));
$response->send();
} catch (Exception $ex) {
throw new \ErrorException;
}
}
return $this->render('WebPortalBundle:Default/InsertAd:insertAd.html.twig', array('category' => $category, 'insertForm' => $form->createView()), $this->get('WebPortalBundle')->cache($request));
}
Что я делаю не так?
Подробнее здесь:
https://stackoverflow.com/questions/321 ... oesnt-work
1730957107
Anonymous
У меня проблема с Assert/NotBlank(). Она просто не работает. Каждый раз, когда я отправляю пустую форму, я вижу 500, SQLSTATE[23000]: нарушение ограничения целостности: 1048 Столбец «***» не может быть нулевым вместо какой-то ошибки. У меня есть это в объекте: [code]use Symfony\Component\Validator\Constraints as Assert;[/code] [code] ... /** * @var string * * @ORM\Column(name="text", type="text") * @Assert\NotBlank() */ private $text; ... [/code] [b]ДОПОЛНИТЕЛЬНО: Контроллер:[/b] Контроллер, для добавления объявлений в базу данных. [code]public function insertAdAction($categoryId, Request $request) { $em = $this->getDoctrine()->getManager(); $category = $em->getRepository('DbBundle:Category')->findAll(); $ads = new Ads(); $form = $this->createForm(new InsertAdType(), $ads, array( 'categoryId' => $categoryId, 'name' => $request->cookies->get('name'), 'phone' => $request->cookies->get('phone'), 'email' => $request->cookies->get('email'), 'password' => $request->cookies->get('password'), )); $form->handleRequest($request); if ($form->isValid()) { try { $user = new User(); $validator = $this->get('validator'); $validator->validate($ads); $byCategory = $em->getRepository('DbBundle:Category')->findOneBy(array('id' => $categoryId), array()); $categoryName = $byCategory->getName(); $phone = $form['phone']->getData(); $ads->setCategory($categoryName); $ads->setCategoryUrl($this->get('WebPortalBundle')->seoUrl($categoryName)); $ads->setCountry($form['country']->getData()); $ads->setText(nl2br($form['text']->getData())); $ads->setTitleUrl($this->get('WebPortalBundle')->seoUrl($form['title']->getData())); $ads->setSubcategoryUrl($this->get('WebPortalBundle')->seoUrl($form['subcategory']->getData())); $ads->setIp($request->getClientIp()); if (!$em->getRepository('DbBundle:User')->findOneBy(array('phone' => $form['phone']->getData()))) { $user->setPhone($phone); $em->persist($user); } $ads->setPath(implode(',', $this->uploadImg($form['file']->getData()))); $em->persist($ads); $em->flush(); $response = new Response(); $time = time() + 31536000; $response->headers->setCookie(new Cookie('name', $form['name']->getData(), $time)); $response->headers->setCookie(new Cookie('email', $form['email']->getData(), $time)); $response->headers->setCookie(new Cookie('phone', $form['phone']->getData(), $time)); $response->headers->setCookie(new Cookie('password', $form['password']->getData(), $time)); $response->send(); } catch (Exception $ex) { throw new \ErrorException; } } return $this->render('WebPortalBundle:Default/InsertAd:insertAd.html.twig', array('category' => $category, 'insertForm' => $form->createView()), $this->get('WebPortalBundle')->cache($request)); } [/code] Что я делаю не так? Подробнее здесь: [url]https://stackoverflow.com/questions/32171689/symfony2-validation-notblank-validation-doesnt-work[/url]