Laravel View::render()给出错误



我试图呈现一个包含čćžšđ字母的视图,但它失败了,并给了我以下错误:

The Response content must be a string or object implementing __toString(), "boolean" given."

我提取了一个分部,当我使用正常方式(使用@include)加载这个分部时,一切都正常。但是我需要"loadmore"函数,所以我使用这个分部来为我呈现html,并且我只使用jQuery将它附加到DOM中。这是部分:

<?php $flag = true; ?>
@foreach($tags as $tag)
    @if(empty($tag->tag)) <?php continue; ?> @endif
    @if($flag == true)
        <?php $temp = $tag->tag[0]; ?>
            <br><label class="firstLetterLabel">{{ strtoupper($temp) }}</label><br><hr><br>
        <?php $flag = false; ?>
    @endif
    @if($temp != $tag->tag[0])
        <br><label class="firstLetterLabel">{{ strtoupper($tag->tag[0]) }}</label><br><hr><br>
    @endif
    <div class="singleTag">
        <a href="/tag/{{ $tag->id }}">{{ $tag->tag }}</a>
    </div>
    <?php $temp = $tag->tag[0]; ?>
@endforeach

这就是我在"加载更多"功能中使用它的方式:

$tags = Tag::orderBy("tag")->take(Config::get("settings.num_tags_per_page"))->skip(($page-1)*Config::get("settings.num_tags_per_page"))->get();
    $data = array();
    $data['data'] = View::make("discover.partials.tags")->with("tags", $tags)->render();

    if(count($tags)%Config::get("settings.num_tags_per_page") == 0 && count($tags) > 0)
        $data['msg'] = 'ok';
    else
        $data['msg'] = 'stop';
    return json_encode($data);

这个部分读取标签并按字母顺序排序,它提取每个标签的第一个字母,因为我在其他地方需要那个字母。当这个偏序找到其中一个字母čćžšđ时,它给出了上面的错误。

如何解决这个问题?

试试这个:

json_encode($output, JSON_UNESCAPED_UNICODE)

为了将来的注意,我通过用mb_substr($tag->tag, 0, 1)替换$tag->tag[0]来解决这个问题。这个命令从字符串中提取utf-8字符,而我以前的方法没有正确编码utf-8个字符。

更多信息:获取UTF-8字符串的第一个字符

相关内容

最新更新