Cześć.
Mam taki problem z Symfony. Otóż mam prosty formularz składający się z 2 checkboxów. I zaznaczanie lub odznaczenie daje wartość true luub false. I po wybraniu odpowiedniej konfiguracji (na checkboxach) dla siebie zapisuje i paczka jest wysyłana ajaxem do php gdzie ma doctrine to zapisać. :
/**
* @Route("/owner/ajax/{user}/add" , name="owner_ajax_add")
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function ajaxRequesstSaveAction(Request $request,User $user)
{
$val1 = $request->request->get('mixture');
$val2 = $request->request->get('label');
$user->setCreatorLabel($val2);
$user->setAssignMixture($val1);
$en = $this->getDoctrine()->getManager();
$en->persist($user);
$en->flush();
$table=[
$val1
$val2
];
return $this->json($table,Response::HTTP_OK);
}
I teraz się zaczyna problem.
Otóż jak ręcznie zdefiniuję wartość true lub false w polu :
$user->setCreatorLabel(tutaj ręcznie zdefiniuję);
$user->setAssignMixture(tutaj ręcznie zdefiniuję);
to zapisuje oczywiście z taką wartością jaką tam podam.Lecz gdy chcę aby Request pobrał wartość wysłaną przez ajaxa to ciągle mi zapisuje wartoćś true.Nie zależnie czy jest zaznaczony (checkbox) czy nie to ciągle zapisuje mi wartość true.
Żeby było lepiej zrobiłem sobie dla testu :
return $this->json($table,Response::HTTP_OK);
aby sprawdzić co wartość $table (tablicy zbudowana z wartości , które przychodzą) mi zwróci.Mam taką wartość jak jest znaczony checkbox to znaczy true lub false. A mimo to jeśli mam odznaczony checkbox to doctrine nic nie robi.Można powiedzieć ,że działa tylko w jedną stronę jak w mysql zdefiniuje false to za pomocą checkboxa pozamienia na true(i tu też ciekawe ,że jak nie zaznaczę a mam false w bazie i go wyśle to i tak zapisze true) ,ale w drugą stronę już nic nie robi.Z góry dziękuje za pomoca.
Zrobiłem przed chwilą mały test:
if($creatorLabel == true){
$val1 = 'mam pozwolenie';
}else{
$val1 = 'brak pozowalenia';
}
i w sumie za każdym razem mi pokazuje wartość 'mam pozwolenia' nie zależnie czy jest zaznaczony czy nie.Jak to można naprawić ten warunek ?