Drukowana wersja tematu
Forum PHP.pl _ Frameworki _ [Symfony][SF3] Wywołanie magicznej methody __call
Napisany przez: kusiu 12.02.2018, 11:41:23
Zaimplementowalem https://github.com/KnpLabs/DoctrineBehaviors#translatable, natomiast methoda __call, ktora umiescilem w entity nie jest wykonywana:
public function __call($method, $arguments)
{
return $this->proxyCurrentLocaleTranslation($method, $arguments);
}
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?
Napisany przez: nospor 12.02.2018, 11:50:13
czemu __call? Powininies zaimplementowac __get(). Nawet komunikat bledu ci to wyraznie mowi
Napisany przez: kusiu 12.02.2018, 12:15:31
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:
$occupation = $this->getDoctrine()->getEntityManager()->getRepository(Occupation::class)->find(1);
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...
public function __get($name)
{
$methodName = "get" . http://www.php.net/ucfirst($name);
return $this->proxyCurrentLocaleTranslation($methodName, []);
}
public function __call($method, $arguments)
{
return $this->proxyCurrentLocaleTranslation($method, $arguments);
}
Napisany przez: 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
Napisany przez: kusiu 12.02.2018, 12:32:58
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
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.
Napisany przez: nospor 12.02.2018, 12:36:51
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.
Napisany przez: kusiu 12.02.2018, 12:40:02
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
To przyjemnosc wrocic tu po paru latach i widziec Ciebie wciaz w formie.
PS: Podejrzewam ze masz konto tez na elekrtoda.pl?
Napisany przez: nospor 12.02.2018, 12:42:38
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
Napisany przez: kusiu 12.02.2018, 18:34:52
Podaje odpowiedz na moje pytanie, ze zrozumieniem ktorego mial problem szanowny Moderator. Obylo sie nawet bez zawracania glowy tworcom Doctrine (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:
namespace AppBundle\PropertyAccess;
use Symfony\Component\PropertyAccess\PropertyAccessor;
class MyPropertyAccessor extends PropertyAccessor
{
public function __construct($magicCall = true)
{
parent::__construct($magicCall);
}
}
nastepnie w pliku
services.yml dodac ponizszy wpis:
property_accessor:
class: Symfony\Component\PropertyAccess\PropertyAccessor
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 Nie potrafie znalesc opcji usun konto, wiec prosze Administratora/Moderatora o jego usuniece.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)