Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][Symfony][SF4) Listener - problem obsługi w IF wartości z formularza: 0 (zero), jak w IF obsłużyć wartość 0 z formularza ?
damianooo
post 26.11.2022, 13:25:27
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Nie wiem czemu mój listener nie reaguje na podanie w formularzu 0 (zera).
Wylogowałem sobie jaką wartość dostaję i mam INTEGER 0 (zero) .
Nie wiem czemu kod nie wchodzi w tego elseif-a pierwszego , tylko w tego drugiego.
Będę wdzięczny za podpowiedź.



services.yaml

  1.  
  2. App\EventListener\ResultListener:
  3. tags:
  4. - { name: doctrine.event_listener, event: postUpdate }


ResultListener

  1. class ResultListener {
  2.  
  3. ...
  4.  
  5. public function postUpdate(LifecycleEventArgs $args) {
  6. $entity = $args->getEntity();
  7. $em = $args->getEntityManager();
  8.  
  9. if ($entity instanceof Meet) {
  10.  
  11. $meetId = $entity->getId();
  12. $typeRepo = $em->getRepository(Type::class);
  13. $types = $typeRepo->findByMeet($meetId);
  14.  
  15. foreach ($types as $type) {
  16.  
  17. ...
  18.  
  19. elseif (
  20. // typ1 == typ2 i wynik1 == wynik2 i typ1 <> wynik1
  21. ($type->getHostType() == $type->getGuestType()) &&
  22. ($entity->getHostGoals() == $entity->getGuestGoals()) &&
  23. ($type->getHostType() <> $entity->getHostGoals()) &&
  24. (!empty($entity->getHostGoals()) && !empty($entity->getGuestGoals()))
  25. )
  26. {
  27. $this->logger->info('Update set 2 points (option 3)');
  28. $type->setNumberOfPoints(2);
  29. }
  30.  
  31. elseif (
  32. empty($entity->getHostGoals()) ||
  33. empty($entity->getGuestGoals())
  34. )
  35. {
  36. $this->logger->info('@@@@@@@@@@ $entity->getHostGoals(): ' . $entity->getHostGoals());
  37. $this->logger->info('@@@@@@@@@@ $entity->getGuestGoals(): ' . $entity->getGuestGoals());
  38. $this->logger->info('@@@@@@@@@@ empty($entity->getHostGoals()): ' . empty($entity->getHostGoals()));
  39. $this->logger->info('@@@@@@@@@@ empty($entity->getGuestGoals()): ' . empty($entity->getGuestGoals()));
  40. $this->logger->info('@@@@@@@@@@ gettype($entity->getHostGoals()): ' . gettype($entity->getHostGoals()));
  41. $this->logger->info('@@@@@@@@@@ NO UPDATE!');
  42. }
  43.  
  44. ...




co to dostaję w logach:

[2022-11-26 12:45:02] app.INFO: @@@@@@@@@@ $entity->getHostGoals(): 0 [] []
[2022-11-26 12:45:02] app.INFO: @@@@@@@@@@ $entity->getGuestGoals(): 0 [] []
[2022-11-26 12:45:02] app.INFO: @@@@@@@@@@ empty($entity->getHostGoals()): 1 [] []
[2022-11-26 12:45:02] app.INFO: @@@@@@@@@@ empty($entity->getGuestGoals()): 1 [] []
[2022-11-26 12:45:02] app.INFO: @@@@@@@@@@ gettype($entity->getHostGoals()): integer [] []
[2022-11-26 12:45:02] app.INFO: @@@@@@@@@@ NO UPDATE! [] []




Go to the top of the page
+Quote Post
Salvation
post 26.11.2022, 15:26:22
Post #2





Grupa: Zarejestrowani
Postów: 338
Pomógł: 70
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


  1. empty($entity->getHostGoals())

zwraca `true`
  1. !empty($entity->getHostGoals())

zwraca `false`

W pierwszym elseif masz logiczny AND wszędzie, więc jeżeli chociaż jeden warunek zwróci `false`, to do środka nie wejdzie.

Poczytaj jak działa `empty()` dla wartości ZERO. Skoro oczekujesz inta, to przyrównaj to sobie do 0

Ten post edytował Salvation 26.11.2022, 16:25:18
Go to the top of the page
+Quote Post
damianooo
post 26.11.2022, 23:55:21
Post #3





Grupa: Zarejestrowani
Postów: 493
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Nie kumam o co chodzi.
Zmieniłem nieco skrypt abyście mogli u siebie sprawdzić co jest nie tak.

Jak mam zmienne tak ustawione (a więc $hostGoals i $guestGoals równe 0):

$hostType = 1;
$guestType = 1;
$hostGoals = 0;
$guestGoals = 0;

to wypisuje mi komunikat "NO UPDATE!"

jak mam tak ustawione (a więc $hostGoals i $guestGoals równe NULL) to również wyświetla mi "NO UPDATE!"

$hostType = 1;
$guestType = 1;
$hostGoals = null;
$guestGoals = null;




  1. if (
  2. (
  3. ($hostType == $guestType) &&
  4. ($hostGoals == $guestGoals) &&
  5. ($hostType <> $hostGoals) &&
  6. ($hostGoals != null || $guestGoals != null)
  7. ) ||
  8. (
  9. ($hostType == $guestType) &&
  10. ($hostGoals == 0 && $guestGoals == 0) &&
  11. ($hostType <> $hostGoals) &&
  12. ($hostGoals != null || $guestGoals != null)
  13. )
  14. )
  15. {
  16. echo 'Update set 2 points';
  17.  
  18. } elseif (
  19. $hostGoals == null || $guestGoals == null
  20. )
  21. {
  22. echo 'NO UPDATE!';
  23. }



Dobra.
Ogarnąłem to w końcu chyba.

Po prostu muszę to zrzutować do Stringa i wtedy działa:
PS. Poprawiłem jeszcze nieco cały skrypt .



  1. $hostType = 1;
  2. $guestType = 1;
  3. $hostGoals = (string) 0;
  4. $guestGoals = (string) 0;
  5.  
  6.  
  7. /*
  8. $hostType = 1;
  9. $guestType = 1;
  10. $hostGoals = null;
  11. $guestGoals = null;
  12. */
  13.  
  14. if (
  15. ($hostType == $guestType) &&
  16. ($hostGoals == $guestGoals) &&
  17. ($hostType <> $hostGoals) &&
  18. ($hostGoals != null && $guestGoals != null)
  19. )
  20. {
  21. echo 'Update set 2 points';
  22.  
  23. } elseif (
  24. $hostGoals == null || $guestGoals == null
  25. )
  26. {
  27. echo 'NO UPDATE!';
  28. }
  29.  
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 23:34