输出刀片变量时输出的空格太多了?

时间:2016-07-30 10:20:12

标签: laravel laravel-5.2 blade laravel-blade

一些背景知识:我试图在博客风格的Web应用程序中创建用户可编辑的页面。该应用程序包含多页内容,包含在一个页面中;从后端动态生成并在另一个之下布置 注意:我是Laravel新手。

页面内容保存在DB中;一个DB记录=页面标题+内容。我检索所有记录并将它们发送到模板:

class ContentController extends Controller {
    var $current_content;
    public function __construct() {
        $this->current_content = Content::all();
    }

    public function serveContent() {
        return View::make('home')->with('pages', $this->current_content);
    }
}

在模板中,我使用新检索的数据遍历对象并显示每个页面的内容:

@foreach($pages as $page)
    <section class="page">
        <div class="editable-page" id="{{ $page->page }}">
            {{ $page->content }}
        </div>
        <div hidden class="editable-page-edit-mode" id="{{ $page->page }}">
            <textarea class="page-edit">
                {{ $page->content }}
            </textarea>
        </div>
        <input hidden type="button" class="edit-btn" value="Edit {{ $page->page }} section"/>
    </section>
@endforeach

(textarea用于编辑模式,它包含与上面相同的内容;除了这次它将被发送回数据库)。

问题在于,当用{{ $page->content }}输出变量内容时,似乎引入了荒谬的空白量。

以下是该部分在浏览器中的显示方式:http://prntscr.com/bzeu4l
以下是幕后发生的事情:http://prntscr.com/bzets2

正常情况下,由于内容显示正确,因此对我来说完全无关紧要。但是,当我取消隐藏文本区域时,很明显它会收到完全相同的数据,并带有空格:http://prntscr.com/bzeum8

这是一个很大的问题,因为我不希望DB值被空格覆盖。

可以解决这个问题,使用正则表达式并在保存数据时剥离超过2个空格的内容。但这感觉就像是一种解决方法,而不是解决方案。

有谁知道这个优雅的解决方案?由于我是Laravel的新手,因此我很可能错过了在Blade中显示变量值的明显信息。
提前致谢。

PS:如果有人对我的方法有任何建议/如果我对textarea的态度有缺陷,我热烈欢迎批评。
此外,我非常抱歉页面的模糊布局,它还处于一个非常初期的阶段。如果不明显,&#39; testhomecontent&#39;和&#39; testservices&#39;实际上是$ page [0] - &gt;内容和$ page [1] - &gt;内容。

2 个答案:

答案 0 :(得分:1)

在刀片中保留内容之间的所有空格。因此,要删除空格,请更改以下代码

<div hidden class="editable-page-edit-mode" id="{{ $page->page }}">
            <textarea class="page-edit">
                {{ $page->content }}
            </textarea>
        </div>

对此:

<textarea class="page-edit">{{ $page->content }}</textarea>

答案 1 :(得分:1)

更改

<textarea class="page-edit">
    {{ $page->content }}
</textarea>

<textarea class="page-edit">{{ $page->content }}</textarea>