Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano

Ostatecznie stwierdziłem, że rozszerzenie formularza rejestracji będzie najłatwiej osiągalne za pomocą hook'a. Wszystko ładnie pięknie do momentu kiedy muszę walidować pola, które dodałem.

Niby można to obsłużyć bezpośrednio w klasie należącej do rozszerzenia, aczkolwiek nie mam pojęcia jak można wtedy zwracać błędy(w głównym pliku modułu rejestracji tabela z błędami to $form_errors), tzn. mimo iż błąd wystąpił i powinien zostać wyświetlony to formularz ma to gdzieś i przechodzi do kroku 2 - 'potwierdzenia'.

I tu właśnie oczekuję pomocy, a mianowicie - w jaki sposób mogę obsłużyć dodaną część formularza oraz jak zsynchronizować moje błędy z głównymi błędami rejestracji.

Z góry dziękuje.

Opublikowano (edytowane)

Czytając jeszcze temat na oficjalnym forum invisionize, doszukałem się informacji o tych action overloader'ach i jeśli dobrze rozumiem, to aby to rozszerzenie formularza działało poprawnie to muszę użyć dwóch hook'ów, tak? Jednego template hook'a oraz action overloader'a aby przeprowadzić walidacje formularza.

@edit: ups.

Edytowane przez Ptasior
Opublikowano (edytowane)

Właśnie to napisałem. Aktualnie mam coś takiego:

<?php
class tpRegisterPaymentOverloader extends public_core_global_register
{
public function registerProcessForm()
{
 $this->registry->class_localization->loadLanguageFile( array( 'public_d3elite' ), 'd3elite' );

 /* Mod is enabled? */
 if ( $this->settings['tp_regp_enable'] == 0 )
 {
	 return;
 }

 if( strlen($this->request['serviceCode']) < 8 )
 {
	 $form_errors['code'] = $this->lang->words['tp_regp_error_code_minlength'];
 }
 else
 {
	 $form_errors['code'] = $this->lang->words['tp_regp_error_code_wrong'];
 }


 parent::registerProcessForm();
}
}

lecz nadal $form_errors nie zawiera błędu(sprawdzam przy użyciu var_dump w register.php).

Edytowane przez Ptasior
  • Manager
Opublikowano

Hm, ale to Cię nie powinno dziwić. :) To zmienna lokalna, jak ma być przekazana wyżej do klasy nadrzędnej? Inaczej to trzeba zrobić. Ja powiem Ci tak - ja zawsze przesłaniam całą tę klasę jej zawartością i w tym kodzie robię odpowiednie zmiany. Ma to pewien minus - działa tylko na określonej wersji forum (zwykle najnowszej), ale nastręcza najmniej problemów. :)

Może można to inaczej zrobić, np. miast tej metody wyżej przesłoń tę:

    public function registerForm( $form_errors=array() )
   {

Gdzie jak widać błędy już są przekazywane, więc nie powinieneś mieć problemów.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano

No wlasnie, wczoraj wpadlem na pomysl przeslonienia calej metody i w sumie siwetnie to dziala, oczywiscie z tym minusem, ze wszystko zapewne posypie sie po update, aczkolwiek nie jest to jakas straszna przeszkoda. Jedyne co mnie zastanawia to to, ze w template hook'u musze przeprowadzic walidacje aby wysiwetlac bledy w formularzu, a w overloadzie przeprowadzam walidacje, aby blokowac wykonanie sie rejestracji. Dzieki za pomoc, temat mozna zamknac.

  • Manager
Opublikowano

Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o wysłanie wiadomości do jednego z członków ekipy zarządzającej.

Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.