Jump to content

Hosting dHosting.pl - 10% rabat!

Sign in to follow this  
kodif

Otwarcie modalnego okienka z formularzem i przeładowanie strony

Recommended Posts

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ę?

Share this post


Link to post
Share on other sites
Posted (edited)

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?

Edited by kodif

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Posted (edited)

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ż.

Edited by kodif

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.