Вывести вывод файла php / js в textarea - PullRequest
0 голосов
/ 11 февраля 2012

Я использую CMS ELGG (http://www.elgg.org), которая записывает различные объекты, и я создал страницу, в которой перечислены все плакаты и HTML с некоторым JavaScript, чтобы позволить внутреннему пользователю печатать предварительно отформатированный список, но также и с вариантами выбора JavaScript для печати или нет этих лиц

Итак, я хотел бы сохранить эту страницу, возможно, в поле textarea, чтобы пользователь мог получить эту страницу. Если я запускаю все свои функции внутри тега textarea, переменные php работают, но не позволяют форму настройки javascript, возникает также конфликт с флажком, который я вставил перед этими объектами, что позволяет выбрать, печатать или нет, что делает не работает внутри текстовой области ...

Поэтому я понятия не имею, как сохранить эту страницу и разрешить пользователю сохранять несколько страниц этого типа, чтобы он мог использовать несколько моделей.

Я прочитал несколько вопросов такого типа для функций php ob ob flush start ... но я не нашел ничего подходящего для меня

Если у кого-то есть идеи для меня ...

Спасибо;)

Пример из php файла

<div id="engagements" class="blockcv">
    <div class="comptitrecv"><input type="checkbox" value="" id="printengagements" class="checkprint" checked="checked"/> Engagement citoyen</div>
   <script type="text/javascript">
function sortDescending(a, b) {
     var date1  = $(a).find("span").text();
       date1 = date1.split('/');
     date1 = new Date(date1[1], date1[0] -1, 1);
     var date2  = $(b).find("span").text();
       date2= date2.split('/');
     date2 = new Date(date2[1], date2[0] -1, 1);

     return date1 < date2 ? 1 : -1;
    };
    $(document).ready(function() {
        $('.shakeengagements .elementengagements').sort(sortDescending).appendTo('.shakeengagements');
    }); 
</script>
<div class="shakeengagements">
     <?php
$user = $_SESSION['user'];
$count_experiences = count_user_objects($user->guid, "experience");
$experiences = get_user_objects($user->guid, "experience", 99);
foreach ($experiences as $ent) { 
 ?>
  <script type="text/javascript">  
 $(document).ready(function() {
  $('#hide<?php echo $ent->guid; ?>').change(function(){
    if($(this).is(":checked")) {
        $('div#hidediv<?php echo $ent->guid; ?>').removeClass("noprint");
    } else {
        $('div#hidediv<?php echo $ent->guid; ?>').addClass("noprint");
    }
});
});
  </script>
<div class="elementengagements" id="hidediv<?php echo $ent->guid; ?>">
<div class="cvelleft">
<p><span><input type="checkbox" value="" id="hide<?php echo $ent->guid; ?>" class="checkprint" checked="checked"/>
<?php 
    $classementdates = $ent->ongoing;
    $enddate = $ent->enddate;
    if ($classementdates == 'ongoing') {
     echo '<span class="date">'; 
     echo $ent->startdate; 
     echo '<font style="display:none">9</font></span> - ';
     echo elgg_echo('resume:acejour');
     } else {
            if(empty($enddate)) {
                     echo '<span class="date">'; 
     echo $ent->startdate; 
     echo '<font style="display:none">9</font></span>';

            } else {
         echo $ent->startdate;
         echo ' - <span>';
         echo  $ent->enddate;
         echo '</span>';
     } 

     }
     ?> </span>:</p>
</div>
<div class="cvelright"> 
<p><?php echo $ent->heading; ?> - <?php echo $ent->structure; ?></p>
<p><?php echo $ent->remarques; ?></p>
</div>
</div>
<?php   } ?>
</div>
</div>

1 Ответ

0 голосов
/ 11 февраля 2012

Не слишком ясно, что именно вы хотите сделать, но для меня это звучит так, как будто вы хотите, чтобы вышеперечисленное было отрендерено, затем появиться в виде textarea?

Если вы хотите это сделать, то яне понимаю, почему ob_start не будет работать, если он находится на той же странице:

ob_start();
//your code that you want to appear in the textarea
$output = ob_get_clean();

echo "<textarea>".$output."</textarea>";

Если это отдельная страница, вы всегда можете сделать:

$output = file_get_contents("/path/to/php_file.php");
echo "<textarea>".$output."</textarea>";

Есливы хотите иметь возможность читать textarea как HTML, тогда я мог бы также предложить htmlentities($output) в тегах textarea, т. е .:

echo "<textarea>".htmlentities($output)."</textarea>";

Но учтите, что если вы отправляететекстовой области в форму для сохранения, вы увидите много объектов HTML, например, символ авторского права - © - будет преобразовывать в & copy;(примечание: я должен поставить пробел между & и копией; в противном случае вы не сможете понять, что я имею в виду) - но, очевидно, это будет то же самое.

Обновление

Вы можете использовать jQuery для этого, и он должен работать - все в пределах div with id: обязательств will get copied into the textarea . If you don't want the javascript (or anything else) to appear in the textarea , then don't put it wihin the div . I'd keep the below out of that div` для начала ...

<input type="checkbox" id="form_submit" name="form_submit" value="yes">
<textarea id="output"></textarea>
<script>
    $(document).read(function(){
        $("#form_submit").click(function(){
            if($(this).checked){
                $("#output").val($("#engagements").text());
            }
        }
    });
</script>

Выше не проверено, но теоретически должно работать!

...