2013-06-17 3 views
0

Я кодирую небольшой скрипт в PHP, чтобы пользователи могли запрашивать изображения, которые у них есть в их лайтбокс, используя плагин Joomla. Однако, поскольку я понятия не имею, как создать плагин Joomla и нужно быстро развернуть эту функциональность, я создал скрипт вне Joomla и просто включил его там, где мне это нужно.Joomla Form to External Script

Ниже приведен сценарий, который я закодировал (еще не закончен).

<?php 

    /* 
     SETUP SCRIPT WITH JOOMLA SETTINGS 
    */ 

    include('../configuration.php'); 
    $getConf = new JConfig(); 

    $config = array(
     'script_url' => '/custom/gallery.php', 
     'url' => 'index.php/home/k2-tags/gallery/my-favorites', 
     'current_state' => $_GET['state'], 

     'host' => $getConf->host, 
     'table' => $getConf->db, 
     'user' => $getConf->user, 
     'pass' => $getConf->password, 
     'db_prefix' => $getConf->dbprefix, 

     'user_id' => $user->id, // OBTAINED FROM INCLUDER PAGE IN JOOMLA 

     'tb_joomla_users' => $getConf->dbprefix . 'users', 
     'tb_datso_favorites' => $getConf->dbprefix . 'datsogallery_favorites', 
     'tb_datso_master' => $getConf->dbprefix . 'datsogallery' 
    ); 

    echo '<div id="datsocustom">'; 

    // ADD THE EMPTY GALLERY BUTTON 
    //echo '<a href="' . $config['url'] . '"><button style="float:left;">EMPTY GALLERY</button></a>'; 

    // CHECK WHAT STATE THE SCRIPT IS IN AND ACT ACCORDINGLY 
    if($config['current_state'] == '') 
    { 
     // Show button if state is default 
     echo '<a href="' . $config['url'] . '?state=processing"><button style="float:right;">SEND ENQUIRY</button></a>'; 
     echo '<div style="clear:both;"></div>'; 
    } 
    elseif($config['current_state'] == 'processing') 
    { 
     // Show ordering form if button is clicked 
     if(isset($_POST['order_form'])){ 
      require('mysqli.php'); 
      $db = new DB($config); 
     } 

     echo "<p>Listed below are copies of all the images that you currently have in your gallery. if you'd like us to check the availability of these images please enter the product type and territory.</p>"; 
     echo "<p>These details will then be emailed to us directly and we will reply as soon as we can with the availability information.</p>"; 

     echo '<form method="post" action="' . $config['url'] . '?state=processing" style="padding:10px;">'; 

     echo '<label>Please enter any notes about the nature of your enquiry</label><br />'; 
     echo '<textarea name="enquiry_info" id="enquiry_info" style="width:100%; height:150px; padding:5px; border:1px solid #CCC; font-size:12px;"></textarea><br />'; 

     echo '<label>To help us check availability please specify the kind of usage you need for the images in this enquiry</label><br />'; 
     echo '<label>Product List</label>'; 
     echo '<select>'; 
     echo '<option>Default</option>'; 
     echo '</select><br />'; 
     echo '<label>Territory</label>'; 
     echo '<select>'; 
     echo '<option>Default</option>'; 
     echo '</select><br />'; 

     echo '<button type="submit" style="float:right;" name="send_enquiry">SUBMIT ENQUIRY</button>'; 
     //echo '<input type="submit" style="float:right;" value="SUBMIT ENQUIRY" name="send_enquiry" />'; 

     echo '</form>'; 

     echo '<div style="clear:both;"></div>'; 
    } 
    elseif($config['current_state'] == 'success') 
    { 
     // Show success message if order has processed 
    } 
    elseif($config['current_state'] == 'failed') 
    { 
     // Show error message if order has not been processed 


     echo '<a href="' . $config['url'] . '"><button style="float:right;">TRY AGAIN</button></a>'; 
     echo '<div style="clear:both;"></div>'; 
    } 
    elseif($config['current_state'] == 'empty_gallery') 
    { 

    } 

    echo '</div>'; 

Основная проблема заключается в том, что, когда я отправляю форму внутри Joomla отправляет пользователю к URL-адрес -> index.php/дома/k2-теги/галерея вместо index.php/дома/K2- теги/галерея/мои-фавориты? = состояние обработки.

Является ли Joomla отменой формы, если это возможно? Потому что я думаю, что это проблема. Если кто-нибудь может дать мне какой-нибудь совет, что бы он когда-либо был бы очень благодарен.

ответ

0

Не ставьте ?state=processing в action атрибут формы.

Где-то внутри формы (предпочтительно в начале или в конце) поставил:

echo '<input type="hidden" name="state" value="processing"/>'; // XHTML assummed 
+0

Спасибо за комментарий, но это еще не дает форму пост правильно. Я пробовал это, и он все равно отправляет меня в конец/галерею URL. –

+0

Атрибут 'action' формы установлен правильно, когда вы просматриваете источник страницы в браузере? – ElmoVanKielmo

+0

action = "index.php/home/k2-tags/gallery/my-favorites" - также показывает? State = обработка, когда я добавляю это тоже. –