从函数发送数据到视图模板?

Sending data from function to view template?

我有一个看起来像这样的 blade 模板:

<div class="comment">
    <div class="username"></div>
    <div class="message"></div>
    <div class="children">

    </div>
</div>

我需要能够从函数调用此视图并将数据插入其中。

我有一个 class、Helpers.php,其递归函数如下所示:

function getComments(array $comments)
{
    foreach ($comments as $comment)
    {
        echo $comment;

        if (!empty($comment->children))
        {
            getComments($comment->children);
        }
    }
}

这样做的目的是打印一条评论,然后检查该评论是否有任何 children 评论,如果有则递归。

如何修改我的 view/function 以便我可以将数据发送到视图,这样我最终会得到这样的结果:

<div class="comment">
    <div class="username">Username1</div>
    <div class="message">Hello, world!</div>
    <div class="children">
        <div class="comment">
            <div class="username">Username1</div>
            <div class="message">Hello, world!</div>
            <div class="children">
                <div class="comment">
                    <div class="username">Username1</div>
                    <div class="message">Hello, world!</div>
                    <div class="children">

                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<div class="comment">
    <div class="username">Username1</div>
    <div class="message">Hello, world!</div>
    <div class="children">

    </div>
</div>

谢谢!

您不必在这种特殊情况下使用函数。

要实现您的目标,请创建一个视图 comments.blade.php。根据您的 Laravel 版本和设置,您可以将其放入 app/viewsresources/views 目录。

此文件的内容必须如下所示:

@foreach ($comments as $comment)
<div class="comment">
    <div class="username">{{ $comment->username }}</div>
    <div class="message">{{ $comment->message }}</div>
    <div class="children">
        @include('comments', ['comments' => $comment->children])
    </div>
</div>
@endforeach

然后呈现此视图并将您传递给 getComments() 函数的相同参数传递给您的 getComments() 函数。

这有望得到预期的结果。

祝你好运!

您可以通过 compact、with 和 session 三种方法将数据发送到您可以使用的函数中查看。 compact of with 方法,而您正在重定向加载任何视图,您可以使用 compact 或 ->with(array());