Czy ktoś mógłby opublikować przewodnik dotyczący usuwania „wymaganego” pola telefonicznego w kasie w oparciu o układ Magento w wersji 1.8.0.0, większość aktualnych zasobów Google jest przestarzała i już nie działa. Wydaje się, że jest to idealne miejsce do aktualizowania poradników / poradników.
Byłoby pomocne, gdyby ktoś mógł potwierdzić działające rozwiązanie, pobierając Magento 1.8.0.0 i dostarczając dowód jego usunięcia, te fragmenty kodu są czasem pomocne, ale musimy jeszcze znaleźć działające rozwiązanie w sposób łatwy do odczytania / udokumentowania.
Odpowiedzi:
Zanim
1.8.1
nie będę wiedział, jak to zrobić, musisz albo zastąpić abstrakcyjną klasę rdzeniową w lokalnej puli kodów, albo przepisać każdą klasę potomną (brzydkie, wiem).Odtąd
1.8.1
przedstawili to wydarzeniecustomer_address_validation_after
. Pozbyłem się sprawdzania poprawności za pomocą refleksji, nawet jeśli nie jestem z tego zbyt dumny. Może nie rozwiążę twojego problemu, ale pomyślałem, że i tak go opublikuję.Napisałem również skrypt aktualizacji, aby zdefiniować plik jako niepotrzebny, i zredagowałem wszystkie formularze, aby usunąć weryfikację interfejsu użytkownika. Jak powiedziałem, może nie być to najlepsze rozwiązanie, ale jest lepsze niż przepisywanie 3-4 klas IMHO.
UPDATE Zespół rdzeń owinięty wydarzenie
customer_address_validation_after
w ramach warunkowego począwszy od1.9.0
pośrednictwem1.9.1.1
(Naprawdę zastanawiam się, dlaczego nie ma sensu do mnie ...), więc moje rozwiązanie nie będzie działać dla tych wersji, niestety. Warunek został na szczęście usunięty1.9.2
.źródło
Będziesz musiał zmodyfikować
Mage_Customer_Model_Address_Abstract
klasę * w linii 375-377 komentując Zend Validation numeru telefonu.a także sam atrybut telefonu w bazie danych usuwający wymaganą klasę. Można to zrobić za pomocą następującego zapytania
To zajmie się walidacją frontonu (Javascript) w polach telefonicznych.
** Pamiętaj, aby skopiować plik klasy do
local
katalogu kodu *źródło
eav_attribute
z kodem „telefon”, więc nie można stwierdzić, który z nich został zaktualizowany. Następnie kod powinien działać (właśnie go przetestowałem). W przypadku części wizualnej nadal musisz usunąć<em>*</em>
etykietę pola we wszystkich formularzach (kasa / edycja adresu). Oczywiście, jeśli masz zainstalowane jednoetapowe kasy, może to zastąpić niektóre domyślne funkcje Magento i ta odpowiedź może nie działać.Proponuję zmienić szablon adresu dla motywu witryny i ustawić telefon jako ukryte pole z domyślną wartością spacji lub myślnika. Nie będzie to wymagało przepisywania / nadpisywania.
źródło
Czy nie można po prostu przepisać klas korzystających z abstraktu przy użyciu niestandardowego rozszerzenia i przepisać konfigurację.
Mage_Sales_Model_Quote_Address
,Mage_Customer_Model_Address
,Mage_Sales_Model_Order_Address
,Następnie możesz stworzyć własną
validate
funkcję, która wyklucza kontrolę telefoniczną, lub jeszcze lepiej sprawdza wszystkie wymagane atrybuty i sprawdza, czy zostały ustawione.źródło
Właśnie spotkałem ładne, małe rozszerzenie „Webguys_Telefonkeinpflicht” Tobiego, które w zasadzie podąża za podejściem Davida. Przepisuje odpowiednie podklasy. Najbardziej podoba mi się fakt, że wywołuje on tylko zdarzenie w przepisanych klasach, a dalsze dostosowywanie odbywa się w obserwatorze zdarzeń. Obserwuje również
core_block_abstract_to_html_after
zdarzenie w celu usunięcia gwiazdy i wymaganej klasy z pola wejściowego za pomocą pewnej regex czarnej magii. I oczywiście zawiera skrypt instalacyjny, który sprawia, że atrybut telefonu nie jest wymagany weav_attribute
tabeli. Możesz sprawdzić rozszerzenie na GitHub .źródło