Пишу на Silex загрузку формы.
Локально - все работало.
После установки на сервер - перестало записывать в базу.
Путем проб и ошибок выяснил, что проблема в:$form->isValid()
Внимание, вопрос - где задаются правила валидности? В документации Silex этому посвящена отдельная глава "ValidatorServiceProvider", но я не вкурил :(
Могу предположить, что валидация не проходит в виду наличия пустых значений в форме. Хотя, при создание формы все потенциально пустые поля получили соответствующий параметр required=>false
$form = $app['form.factory']->createBuilder('form', $data)
->add('foo', 'hidden', array('required' => false))
->getForm();
Как-то так создаются правила валидации:
$form = $app['form.factory']->createBuilder('form')
->add('name', 'text', array(
'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('min' => 5)))
))
Вот урезанный код. Может что-то увидите?
$app->match('/add/{flat_id}', function (Request $request, $flat_id) use ($app) {
$form = $app['form.factory']->createBuilder('form', $data)
->add('attachment', 'file')
->add('type', 'choice', array(
'choices' => array(
'1' => 'Студия',
'2' => 'Однушка',
'3' => 'Евродвушка',
'4' => 'Двушка',
'5' => 'Трешка',
'6' => 'Четвирешка :)'),
'expanded' => false
))
->add('square_total')
...
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
$data = $form->getData();
$app['db']->insert('vn_db_flats', array(
'attachment' => rand(1,999) . $data['attachment']->getClientOriginalName(),
'type' => $data['type'],
'square_total' => $data['square_total'],
...
));
$data['attachment']->move(__DIR__ . '/attach/', $data['attachment']->getClientOriginalName());
return $app->redirect($app['url_generator']->generate('index'));
}
}
return $app['twig']->render('add.twig', array('form' => $form->createView()));
})
->bind('add')
->value('flat_id', '0');