Ответ 1
Хорошо, похоже, что я использовал неправильную версию своего сайта. Все упомянутые методы работают, и я просто хочу кратко изложить их ниже для тех, кто сталкивается с такой проблемой в будущем.
Проблема в том, что HTML5 любит проверять формы самостоятельно и добавляет required="required"
к любому входу формы. Обычно это, вероятно, полезно, но для некоторых вещей, таких как флажки, вы хотите оставить их непроверенными и отправить форму без запроса браузера на стороне клиента.
Существует несколько способов решения этой проблемы, некоторые лучше других.
Во-первых, просто отключить всю проверку для формы с помощью HTML5, как упоминается официальным symfony docs.
Другим является добавление информации к переменной сущности в комментариях, делая nullable=true
. Это позволяет соответствующему столбцу в вашей базе данных иметь нулевые значения, что может или не может быть желательным для вашей ситуации. Это показано ниже.
/**
* @var boolean $varName
*
* @ORM\Column(name="var_name", type="boolean", nullable=true)
*/
private $varName;
Наконец, при создании формы существуют определенные опции, которые можно использовать для проверки в формах. docs и дайте больше примеров, но для наших целей здесь важна то, что вы можете установить 'required' => false
, как я показал ниже.
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class BlahType extends AbstractType
{
/**
* @param \Symfony\Component\Form\FormBuilder $builder
* @param array $options
*/
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('stuff')
->add('checkbox_var', 'checkbox', array('required' => false))
->add('anothervar');
}
}
Спасибо всем людям, которые помогли мне в этом вопросе. Надеюсь, что это поможет кому-то, кто будет иметь дело с такими проблемами в будущем.