フォームにバリデーションを追加したところ、場合によっては無効なデータが失われ、代わりに 0 が保存されていることがわかりました。下部の出力は、緯度を ' zzzzzz
' として投稿すると、明らかに数値でも -90 ~ 90 でもない場合、フォームが有効であると宣言され、値 で保存されることを示しています0
。
入力が数値でなければならないことを宣言した場合、どのようにそれが起こりますか?
ProxyType.php buildForm():
$builder
->add('siteName', null, array('label' => 'Site name'))
....
->add('latitude', 'number', array('label' => 'Latitude'))
->add('longitude', 'number', array('label' => 'Longitude'))
....
;
ProxyController.php createAction:
....
$postData = $request->request->get('niwa_pictbundle_proxytype');
$this->get('logger')->info('Posted latitude = '.$postData['latitude']);
$form = $this->createForm(new ProxyType(), $entity);
$form->bindRequest($request);
if ($form->isValid()) {
$this->get('logger')->info('Form declared valid : latlong ('.$entity->getLatitude().','.$entity->getLongitude().')');
....
検証.yml:
Acme\PictBundle\Entity\Proxy:
properties:
longitude:
- Min: { limit: -180 }
- Max: { limit: 180 }
latitude:
- Max: { limit: 90 }
- Min: { limit: -90 }
出力:
[2012-09-28 02:05:30] app.INFO: Posted latitude = zzzzzz [] []
[2012-09-28 02:05:30] app.INFO: Form declared valid : latlong (0,0) [] []