Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][SF3] Wywołanie magicznej methody __call
kusiu
post 12.02.2018, 11:41:23
Post #1





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 24.01.2006

Ostrzeżenie: (30%)
XX---


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?
Go to the top of the page
+Quote Post
nospor
post 12.02.2018, 11:50:13
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




czemu __call? Powininies zaimplementowac __get(). Nawet komunikat bledu ci to wyraznie mowi


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kusiu
post 12.02.2018, 12:15:31
Post #3





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 24.01.2006

Ostrzeżenie: (30%)
XX---


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. }
Go to the top of the page
+Quote Post
nospor
post 12.02.2018, 12:23:54
Post #4





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kusiu
post 12.02.2018, 12:32:58
Post #5





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 24.01.2006

Ostrzeżenie: (30%)
XX---


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.
Go to the top of the page
+Quote Post
nospor
post 12.02.2018, 12:36:51
Post #6





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kusiu
post 12.02.2018, 12:40:02
Post #7





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 24.01.2006

Ostrzeżenie: (30%)
XX---


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?
Go to the top of the page
+Quote Post
nospor
post 12.02.2018, 12:42:38
Post #8





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kusiu
post 12.02.2018, 18:34:52
Post #9





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 24.01.2006

Ostrzeżenie: (30%)
XX---


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.


Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 00:03