Nie wyslales tego o co prosilem, pokaz cale omawiane encje.
Fakt, ze nie binduje CI danych wskazuje na to, ze masz blad w innym miejscu.
Ponizej pliki do odtworzenia Twojego problemu na czystej instalacji - oczywiscie checkbox dziala prawidlowo:
User:
<?php
namespace AppBundle\Entity;
class User {
protected $is_active;
public function setIsActive($isActive)
{
$this->is_active = $isActive;
return $this;
}
public function getIsActive()
{
return $this->is_active;
}
}
Type:
<?php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class AddClientType extends AbstractType
{
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$builder->add('is_active', 'checkbox');
}
public function getName()
{
return 'app_add_client';
}
}
Controller:
<?php
namespace AppBundle\Controller;
use AppBundle\Entity\User;
use AppBundle\Form\AddClientType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$activeUser = new User();
$activeUser->setIsActive(true);
$inactiveUser = new User();
$inactiveUser->setIsActive(false);
$activeUserForm = $this->createForm(new AddClientType(), $activeUser);
$inactiveUserForm = $this->createForm(new AddClientType(), $inactiveUser);
return $this->render('default/index.html.twig', array( 'activeUserForm' => $activeUserForm->createView(),
'inactiveUserForm' => $inactiveUserForm->createView(),
));
}
}
Twig:
Active user:<br />
{{ activeUserForm.vars.data.isActive }}
{{ form(activeUserForm) }}
<br />
<br />
Inactive user:<br />
{{ activeUserForm.vars.data.isActive }}
{{ form(inactiveUserForm) }}
No i wynikowy HTML:
1
<form name="app_add_client" method="post" action=""><div id="app_add_client"><div> <label for="app_add_client_is_active" class="required">Is active
</label><input type="checkbox" id="app_add_client_is_active" name="app_add_client[is_active]" required="required" value="1" checked="checked" /></div><input type="hidden" id="app_add_client__token" name="app_add_client[_token]" value="QnPaNwvp2c05di8Bq6orChXYup5ZHQTvNsLRM45bmzk" /></div></form> 1
<form name="app_add_client" method="post" action=""><div id="app_add_client"><div> <label for="app_add_client_is_active" class="required">Is active
</label><input type="checkbox" id="app_add_client_is_active" name="app_add_client[is_active]" required="required" value="1" /></div><input type="hidden" id="app_add_client__token" name="app_add_client[_token]" value="QnPaNwvp2c05di8Bq6orChXYup5ZHQTvNsLRM45bmzk" /></div></form>
Dla usera aktywnego checkbox jest checked, dla nieaktywnego nie.
Nie trzeba robic nic wiecej tylko do build form przekazac encje, i dodac pole typu checkbox.