【问题标题】:Array of class objects foreach in smartysmarty中的foreach类对象数组
【发布时间】:2014-09-15 23:07:27
【问题描述】:

我正在开发一个 PHP 项目,其中有一组对象。我想将这个对象数组传递给一个 Smarty 模板,该模板可以循环并从结构中获取信息。

对象数组的示例输出如下:

Array
(
    [0] => FilesAndDirectories Object
        (
            [parent] => 
            [directory] => /
            [files] => Array
                (
                    [0] => FileInformation Object
                        (
                            [fileName] => test_wav.wav
                            [modifiedTime] => 2014-09-11T19:20:20.000Z
                            [fieSize] => 22332
                        )

                    [1] => FileInformation Object
                        (
                            [fileName] => record_message_from_sip:300@sip-0-2-0.aculab.com.wav
                            [modifiedTime] => 2014-09-11T21:01:39.000Z
                            [fieSize] => 36036
                        )

                    [2] => FileInformation Object
                        (
                            [fileName] => record_message_from_sip:44123456789@sip-0-2-0.aculab.com.wav
                            [modifiedTime] => 2014-09-11T21:07:05.000Z
                            [fieSize] => 29796
                        )

                )

        )

    [1] => FilesAndDirectories Object
        (
            [parent] => /
            [directory] => my_directory_test
            [files] => Array
                (
                )

        )

    [2] => FilesAndDirectories Object
        (
            [parent] => my_directory_test
            [directory] => dir
            [files] => Array
                (
                    [0] => FileInformation Object
                        (
                            [fileName] => /record_message_from_sip:300@sip-0-2-0.aculab.com.wav
                            [modifiedTime] => 2014-09-12T20:36:05.000Z
                            [fieSize] => 44596
                        )

                )

        )

)

以下是我如何存储上述输出

$fileManager = new FileManager();
$result = $fileManager->getFileListing();

$result 现在将包含上述结构。

然后我将 $result 传递给 smarty 变量,如下所示:

$smarty = new Smarty();
        $smarty->setTemplateDir("templates");

        $smarty->assign("fileListing", $result);
        echo $smarty->fetch("directoryListing.tpl");

smarty 模板文件如下所示:

<table>
    {foreach $fileListing as $directory}
        <tr>

        </tr>
    {/foreach}
</table>

我遇到的问题是我通过 Smarty 抛出了一个异常

可捕获的致命错误:类 FilesAndDirectories 的对象无法 在

中转换为字符串

【问题讨论】:

  • 模板中&lt;tr&gt;之间有什么东西吗?异常抛出了什么?
  • 不,目前没有。在$smarty-&gt;assign("fileListing", $result);这一行抛出异常
  • 您能否尝试使用assign_by_ref() 方法而不是assign() 或查看所提供的here 示例之一?
  • @marian0 谢谢这是我需要的。你能把它作为一个答案,我会接受它

标签: php arrays smarty


【解决方案1】:

使用assign_by_ref() 代替assign() 或查看所提供的here 示例之一。

【讨论】:

    【解决方案2】:

    问题在于您的 $result 变量。试着做一个 print_r($result) 看看你得到了什么。您只能显式传递名称/值对或包含名称/值对的关联数组。如果您的 $result 变量不适合该结构,则会引发错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多