Если вы посмотрите на код, который генерирует флажок, вы увидите, что он может принимать до 4 аргументов, третий из которых - проверен ли он по умолчанию или нет, и каково значение.Значение равно 1 по умолчанию.Поэтому, когда вы проверите его, он вернет 1.
public static function checkbox($name, $value = 1, $checked = null, $options = array())
{
return \Collective\Html\FormBuilder::checkbox($name, $value, $checked, $options);
}
Просто измените вашу форму на значение 2, чтобы вернуть 2 при проверке.
Form::checkbox('public', 2)
И, как указано в ваших комментариях, непроверенный флажок не будет выставлен, поэтому при сохранении вам придется регистрироваться в контроллере.