我使用CMS ELGG(http://www.elgg.org)它记录了不同的实体,我创建了一个页面,列出了所有海报,并用一些javascript将其转换为html,允许内部用户打印预先格式化的列表,还可以选择javascript打印或不打印这些实体
所以我想保存这个页面,可能保存在文本区域字段中,这样用户就可以检索这个页面。如果我在一个textarea标记中运行所有函数,php变量可以工作,但不允许javascript设置表单,那么我在这些实体前面插入的复选框也会发生冲突,允许选择是否打印,这些实体在textarea中不工作。。。
所以我不知道如何保存这个页面,并允许用户保存多个这种类型的页面,这样它就可以使用多个模型。
我已经为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>
不太清楚你到底想做什么,但对我来说,听起来你想渲染上面的内容,然后出现在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,那么我是否也可以建议在textarea
标签中使用htmlentities($output)
,即:
echo "<textarea>".htmlentities($output)."</textarea>";
但请注意,如果您将文本区域提交到要保存的表单,您将看到许多HTML实体,例如,版权符号-©-将转换为&复制(注意:我必须在&和副本之间留出一个空格;否则你看不到我的意思)-但很明显,它是一样的。
更新
您可以使用jQuery,它应该可以工作-首先是div with id:
约定will get copied into the
文本区域. If you don't want the javascript (or anything else) to appear in the
文本区域, 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>
以上内容未经测试,但理论上应该有效!