2015-06-18 5 views
0

Текущая ситуацияОбновление различных форм одновременно

Таким образом, это является продолжением вопрос из моего предыдущего вопроса (Submit button to affect multiple files)

подход был хорош в плане того, как «нажмите» множественным кнопки вместе с помощью «супер-кнопки» (запатентованная) от @oMiKeY. Он делает то, что он должен делать, щелкая все кнопки.

разметки заключается в следующем:

Title.php

<form role="form" method="post">      
     <div class="edit_title"> 
      <input type="hidden" value="<?php echo $post_id; ?>"> 
      <?php post_input_box($post_id, 'post_title', array('placeholder' => 'Article title..', 'value' => $post->post_title)); ?> 
      <div class="update-button-wrap"> 
       <input id="save_button" type="submit" name="update_product" value="<?php esc_attr_e('Update', 'site'); ?>"/> 
      </div> 
     </div>     
    </form> 

content.php

<form role="form" method="post">     
     <div class="edit_content"> 
      <?php post_input_box($post_id, 'post_content', array('placeholder' => 'Short description..', 'value' => $post->post_content), 'textarea'); ?> 
     </div> 
     <div class="update-button-wrap"> 
      <input id="save_button" type="submit" name="update_product" value="<?php esc_attr_e('Update', 'site'); ?>"/> 
     </div>       
</form> 

article.php

<button type='button' onclick="$('[type="submit"]').click()">Submit</button> 

Проблема

Таким образом, когда "Submit" кнопка нажата, обе кнопки в каждом title.php и content.php также щелкнул (то есть. в отношении кнопок нажатия, он отлично работает). Тем не менее, из-за одновременного нажатия двух forms, только второй обновляется (либо контент, либо заголовок), в то время как первый из них игнорируется, когда обе данные необходимы для обновления.

Мой подход

Теперь я могу объединить два файла вместе и как title и content в пределах одной формы, но это действительно портит мою общую установку, и я слышал, что лучше иметь несколько меньший PHP файлы для обновления и скорости, чем большой большой файл.

Или вот мой другой подход.

В article.php, я буду иметь кнопку form и submit в то время как title.php и content.php имеет только редактируемые формы. Затем эти две формы каким-то образом связаны с формой в article.php, как показано ниже.

enter image description here

ли вы, что второй подход может быть достигнуто или любые другие предложения?

Благодаря

+0

Разве вы не можете использовать только одну форму? Или как насчет отправки через ajax? – Stefan

+0

Да, использование одной формы упростит ситуацию в целом, но для этого мне нужно будет изменить общую настройку. Я хотел избежать этого: P, но если нет другого варианта, то я обязательно это сделаю. =) –

+0

Вы не можете отправить две формы одновременно. Либо сделайте их одной формой - или отправьте их в фоновом режиме, используя AJAX. – CBroe

ответ

1

Просто добавьте глобальную форму на article.php и падение заголовка и содержания форм (и кнопки отправки). Каждый именованный ввод внутри глобальной формы будет передаваться вместе независимо от того, какой файл php их создал.

Edit: Title.php

<div class="edit_title"> 
    <input type="hidden" value="<?php echo $post_id; ?>"> 
    <?php post_input_box($post_id, 'post_title', array('placeholder' => 'Article title..', 'value' => $post->post_title)); ?> 
</div> 

Содержание.PHP

<div class="edit_content"> 
    <?php post_input_box($post_id, 'post_content', array('placeholder' => 'Short description..', 'value' => $post->post_content), 'textarea'); ?> 
</div> 

article.php

<form role="form" method="post"> 
<?php include "Title.php"; include "Content.php"; ?> 
<button type='submit'>Submit</button> 
</form> 

Вариант 2: В качестве альтернативы можно использовать какую-то функциональность, которая позволяет создавать формы только один раз, даже если у вас есть «внутренний формы». Таким образом, Title.php и Content.php также будут работать как отдельные фрагменты кода.

$formDeep = 0; 
function openForm() { 
    global $formDeep; 
    if ($formDeep == 0) { 
     echo "<form role=\"form\" method=\"post\">"; 
    } 
    $formDeep++; 
} 

function closeForm() { 
    global $formDeep; 
    $formDeep--; 
    if ($formDeep == 0) { 
     echo "</form>"; 
    } 
} 

Title.php

<?php openForm(); ?> 
<div class="edit_title"> 
    <input type="hidden" value="<?php echo $post_id; ?>"> 
    <?php post_input_box($post_id, 'post_title', array('placeholder' => 'Article title..', 'value' => $post->post_title)); ?> 
</div> 
<?php closeForm(); ?> 

content.php

<?php openForm(); ?> 
<div class="edit_content"> 
    <?php post_input_box($post_id, 'post_content', array('placeholder' => 'Short description..', 'value' => $post->post_content), 'textarea'); ?> 
</div> 
<?php closeForm(); ?> 

article.php

<?php openForm(); ?> 
<?php include "Title.php"; include "Content.php"; ?> 
<button type='submit'>Submit</button> 
<?php closeForm(); ?> 
+0

Хмм, я не уверен, понимаю ли вы, что вы имеете в виду. Итак, вы говорите, что в 'article-form' есть все' title-form', 'content-form' и' submit-button' (так, в значительной степени, объединить все формы в одну форму, например, мой первый подход). Правильно ли я понимаю вас? спасибо –

+0

Отредактировано для пояснений. Я не объединять файлы, потому что предполагаю, что вы используете их в другом месте. :) – Alexandre

+0

Благодарим вас за разъяснение. Я собираюсь попробовать и вернуться к вам. Я вижу логику этого. =) –

Смежные вопросы