Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][SF3] Wywołanie magicznej methody __call
Forum PHP.pl > Forum > PHP > Frameworki
kusiu
Zaimplementowalem https://github.com/KnpLabs/DoctrineBehaviors#translatable, natomiast methoda __call, ktora umiescilem w entity nie jest wykonywana:

  1. public function __call($method, $arguments)
  2. {
  3. return $this->proxyCurrentLocaleTranslation($method, $arguments);
  4. }


  1. Neither the property "name" nor one of the methods "getName()", "name()", "isName()", "hasName()", "__get()" exist and have public access in class "AppBundle\Entity\Occupation".


Co powinienem zrobic aby methoda __call nie byla ignorowana?
nospor
czemu __call? Powininies zaimplementowac __get(). Nawet komunikat bledu ci to wyraznie mowi
kusiu
Cytat(nospor @ 12.02.2018, 11:50:13 ) *
czemu __call? Powininies zaimplementowac __get(). Nawet komunikat bledu ci to wyraznie mowi


Spojrz na przyklad w dokumentacji https://github.com/KnpLabs/DoctrineBehaviors#translatable

Magiczna methoda __call przydaje sie gdy chce sie wyciagnac dane przez:

  1. $occupation = $this->getDoctrine()->getEntityManager()->getRepository(Occupation::class)->find(1);
  2. dump($occupation->getName());


Ten blad pojawia sie w przypadku odczytywania danych w formularzu. Czy nie lepiej bylo by nadpisac PropertyAccessor by sprawdzal tez funckcje __call?

Teoretycznie moglbym w entity miec zarowno __call ja i _get, jednak...

  1. public function __get($name)
  2. {
  3. $methodName = "get" . ucfirst($name);
  4. return $this->proxyCurrentLocaleTranslation($methodName, []);
  5. }
  6.  
  7. public function __call($method, $arguments)
  8. {
  9. return $this->proxyCurrentLocaleTranslation($method, $arguments);
  10. }
nospor
Ja ci tylko mowie czego oczekuje doctrine. To nie jest blad rzucany przez php. To jest blad rzucany przez Doctrine (ewentualnie symfony). Wiec mi niczego nie tlumacz tylko im
kusiu
Cytat(nospor @ 12.02.2018, 12:23:54 ) *
Ja ci tylko mowie czego oczekuje doctrine. To nie jest blad rzucany przez php. To jest blad rzucany przez Doctrine (ewentualnie symfony). Wiec mi niczego nie tlumacz tylko im


Dziekuje za przetlumaczenie bledu specool.gif Ale nie o to pytalem bo doskonale je rozumiem. Moje pytanie brzmialo czy da sie SF wymusic by sprawdzal methode __call przy odczytywaniu danych z formularza.
nospor
Nie, twoje pytanie brzmialo
Cytat
Co powinienem zrobic aby methoda __call nie byla ignorowana?

Wiec ci odpowiedzialem: pisz do chlopakow z Doctrine by zmienili logike na taka ktora ty akceptujesz.
kusiu
Cytat(nospor @ 12.02.2018, 12:36:51 ) *
Nie, twoje pytanie brzmialo

Wiec ci odpowiedzialem: pisz do chlopakow z Doctrine by zmienili logike na taka ktora ty akceptujesz.


Dziekuje jeszcze raz za pomoc smile.gif To przyjemnosc wrocic tu po paru latach i widziec Ciebie wciaz w formie.

PS: Podejrzewam ze masz konto tez na elekrtoda.pl?
nospor
wow, coz za osobiste przytyki tylko dlatego ze nie ogarniasz prostego komunikatu bledu... Wybacz, ze nie odwzajemnie sie kojarzeniem ciebie sprzed paru lat jak ty kojarzysz mnie ale podejrzewam nic sie nie zmieniles smile.gif
kusiu
Podaje odpowiedz na moje pytanie, ze zrozumieniem ktorego mial problem szanowny Moderator. Obylo sie nawet bez zawracania glowy tworcom Doctrine worriedsmiley.gif (swoja droga skad taka pewnosc ze autorami sa goscie?).
Ponizej podaje sposob na nadpisanie ustawien komponentu PropertyAccessor.

Aby zmienic domyslne ustawienia komponentu nalezy stworzyc wlasna klase:

  1. namespace AppBundle\PropertyAccess;
  2.  
  3. use Symfony\Component\PropertyAccess\PropertyAccessor;
  4.  
  5. class MyPropertyAccessor extends PropertyAccessor
  6. {
  7.  
  8. public function __construct($magicCall = true)
  9. {
  10. parent::__construct($magicCall);
  11. }
  12.  
  13. }


nastepnie w pliku services.yml dodac ponizszy wpis:

  1. property_accessor:
  2. class: Symfony\Component\PropertyAccess\PropertyAccessor
  3. arguments: [true]


Jest to rozwiazanie, ktore zmienia globalnie ustawienia kompomentu.

I jest to moj ostatni wpis na tym forum, bo az zal czytac odpowiedzi zakompleksionych aroganckich moderatorow jak nospor thumbsdownsmileyanim.gif

Nie potrafie znalesc opcji usun konto, wiec prosze Administratora/Moderatora o jego usuniece.


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.