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

Otwarcie modalnego okienka z formularzem i przeładowanie strony


Rekomendowane odpowiedzi

Mam w skrypcie dodany przycisk, który wywołuje zewnętrzny kod php z formularzem.

 

Jak zrobić żeby po kliknięciu otworzyło się okienko modalne, w stylu forum, nie takie przeglądarkowe , a przy jego zamknięciu strona automatycznie odświeżyła się?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Odnośnik do komentarza
Udostępnij na innych stronach

Tak, o to :)

Ale coś nie idzie.  Skrypt jest wywoływany tak

 <div class="site_services update3">
	<a class="register" data-ipsdialog="1" data-ipsdialog-flashmessage="Zapisane"
       data-ipsdialog-remotesubmit="1" data-ipsdialog-title="Aktualizacja dat" 
       data-ipsdialog-url="services/script3.php" href="services/script3.php" rel="">Aktualizuj</a>
</div>

w skrypcie jest między innymi:

<?php  
 require_once( '../init.php' );
 \IPS\Dispatcher\External::i();
 \IPS\Session\Front::i();

......

$form = new \IPS\Helpers\Form;

$form->addHeader('Kalendarz');
$form->add( new \IPS\Helpers\Form\Date( 'hsc_start', 0, TRUE, array('min' => $dts, 'max' => $dte ), NULL, null, null, 'one_form' ) );
$form->add( new \IPS\Helpers\Form\Date( 'hsc_end', 0, TRUE, array(), NULL, NULL, null, 'two_form' ) );

....

if( $values = $form->values() )
{
    ....  
    print(' Dane prawidłowe');
  }

$elo = (string) $form;
\IPS\Member::loggedIn()->language()->parseOutputForDisplay( $elo );
echo $elo;

 

Ale po kliknięciu "zapisz" okno modalne zamyka się bez sprawdzania poprawności podanych danych. Zamyka się  nawet gdy są wymagane a nie zostały w ogóle podane.

 

Gdzie jest błąd?

Edytowane przez kodif
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Wyprintuj to i zobacz czy w ogóle się uruchamia:

if( $values = $form->values() )
{
print_r( $values ); die();

 

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Odnośnik do komentarza
Udostępnij na innych stronach

Warunek

if( $values = $form->values() )

jest spełniony tylko w przypadku pomyślnego przesłania formularza, więc die() zadziała tylko wtedy.

Ale sytuacja wygląda tak: po uruchomieniu linka w nowym oknie, skrypt script3.php działa normalnie, weryfikuje wprowadzone dane i robi to co miał zrobić.

 

Po kliknięciu na link, czyli de facto uruchomieniu w oknie modalnym, formularz jest, ale co by nie zrobić, nie jest wykonywany po poleceniu "Zapisz". Kręci się ikona, a potem okno się zamyka, pojawia sie flash message i tyle. Efektów brak.

Nie ma znaczenia czy są podane prawidłowe dane czy nieprawidłowe. W przypadku prawidłowych, powinno się wykonać to

if( $values = $form->values() )
{
print_r( $values ); die();


ale nie wykonuje się.

Może coś trzeba dodać do skryptu script3.php ?

Odnośnik do komentarza
Udostępnij na innych stronach

  • DawPi zmienił(a) tytuł na Otwarcie modalnego okienka z formularzem i przeładowanie strony
  • Manager
18 godzin temu, kodif napisał:

<?php require_once( '../init.php' ); \IPS\Dispatcher\External::i(); \IPS\Session\Front::i(); ...... $form = new \IPS\Helpers\Form; $form->addHeader('Kalendarz'); $form->add( new \IPS\Helpers\Form\Date( 'hsc_start', 0, TRUE, array('min' => $dts, 'max' => $dte ), NULL, null, null, 'one_form' ) ); $form->add( new \IPS\Helpers\Form\Date( 'hsc_end', 0, TRUE, array(), NULL, NULL, null, 'two_form' ) ); .... if( $values = $form->values() ) { .... print(' Dane prawidłowe'); } $elo = (string) $form; \IPS\Member::loggedIn()->language()->parseOutputForDisplay( $elo ); echo $elo;

Patrząc na ten kod to... dlaczego nie zrobisz tego pluginem tylko jakimś wywołaniem zewnętrznego skryptu?

A pytam bo odpowiedzi na Twoje pytanie obecnie... nie znam. ?

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Odnośnik do komentarza
Udostępnij na innych stronach

Aktualizacja.

 

Okazuje się że umieszczając dyrektywę die() w zewnętrznym skrypcie, po unieruchomieniu go jako okno modalne, przy jej wykonaniu następuje jedynie ubicie tego procesu. Główny, czyli ten który ją wywołał działa normalnie, dlatego też ponieaż działanie forum nie było przerywane, błędnie założyłem że nie wykonuje się to:

 

if( $values = $form->values() )
{
print_r( $values ); die();

Wykonuje się, tylko że tego die w ogóle nie widać. Tak więc dane są przetwarzane i w przypadku wprowadzenia właściwych danych, są zapisywane tam gdzie trzeba.

Nadal występuje problem z weryfikacją danych z formularza, okno modalne jest po prostu zamykane i już.

Edytowane przez kodif
Odnośnik do komentarza
Udostępnij na innych stronach

2 minuty temu, DawPi napisał:

Patrząc na ten kod to... dlaczego nie zrobisz tego pluginem tylko jakimś wywołaniem zewnętrznego skryptu

 

Bo musiałbym się nauczyć pisać pluginy :P, a dokumentacja na IPS jest raczej słaba.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
1 minutę temu, kodif napisał:

Bo musiałbym się nauczyć pisać pluginy :P, a dokumentacja na IPS jest raczej słaba.

Takie kody jak wyżej piszesz to i z tym dasz sobie radę: https://invisioncommunity.com/developers/docs/development/plugins/complete-example-of-a-plugin-in-ips-community-suite-r50/

A jak coś to zawsze możesz podpytać tutaj. :)

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • 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ę.