从功能发送数据到查看模板?

时间:2015-06-27 16:20:35

标签: laravel laravel-4 laravel-5 blade

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

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

    </div>
</div>

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

我有一个类Helpers.php,带有递归函数,如下所示:

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

        if (!empty($comment->children))
        {
            getComments($comment->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 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>

谢谢!

2 个答案:

答案 0 :(得分:2)

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

要实现目标,请创建一个视图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()函数的相同参数。

这有望产生预期的效果。

祝你好运!

答案 1 :(得分:0)

你可以发送数据来查看你可以使用的三种方法compact,with和session。当您重定向加载任何视图时可以使用紧凑或 - &gt; with(array());