按照指南
我能够创建相同的结果,但如果我更改示例并尝试使用快速对象的属性,即文件链接或日期字段,则视图块将返回以下错误
"类DoctrineProxies__CG __ \ Concrete \ Core \ Entity \ File \ File的对象无法转换为字符串"
可以修改以下代码来解决这个问题,还是核心问题?
<?php defined('C5_EXECUTE') or die(_("Access Denied.")); ?>
<?php
if (isset($entry) && is_object($entry)) {
$drawings = $entry->getDrawings();
?>
<table id="datatable", class="table">
<thead>
<tr>
<th>Drawing Name</th>
<th>Drawing Number</th>
<th>Revision</th>
<th>Revision Date</th>
<th>Category</th>
<th>PDF</th>
</tr>
</thead>
<tbody>
<?php if (count($drawings)) {
foreach($drawings as $drawing) { ?>
<tr>
<td><?=$drawing->getDrawingName()?></td>
<td><?=$drawing->getDrawingNumber()?></td>
<td><?=$drawing->getRevision()?></td>
<td><?=$drawing->getDrawingRevisionDate()?></td>
<td><?=$drawing->getDrawingCategory()?></td>
<td><?=$drawing->getDrawingPdf()?></td>
</tr>
<?php } ?>
<?php } else { ?>
<tr>
<td colspan="6">No drawings found.</td>
</tr>
<?php } ?>
</tbody>
</table>
<?php } ?>
答案 0 :(得分:3)
问题来自这一行:
<?=$drawing->getDrawingPdf()?>
getDrawingPdf()返回的是一个文件对象,因此无法像简单的字符串一样输出到屏幕。首先,您必须从中提取字符串。例如,以下代码将提取文件名并显示它。
<?php
$drawingPdf = $drawing->getDrawingPdf();
$pdfFileName = is_object($drawingPdf)? $drawingPdf->getFileName() : '';
?>
<td><?=$pdfFileName?></td>
此代码的作用是首先获取代码中已有的文件对象。 然后,如果我们有一个合适的文件对象,请获取文件名。如果它不是一个合适的文件对象(你现在从未将它删除),我们返回并清空字符串。 最后,我们在表中输出字符串$ pdfFileName(可以是文件名或空字符串)。
希望这有帮助