【发布时间】:2014-02-07 03:16:31
【问题描述】:
为什么我不能将视图作为模块的一部分?
在 .NET 中,您拥有视图和代码。有时我们需要做一些与这个逻辑相匹配的事情,比如网格,每个单元格内都有一个小部件。通常,一个小部件有一个带有标题和内容的漂亮盒子,带有一点逻辑,我如何将这样的部分包含到另一个这样的视图中。
@extends('jarvis.admin._layouts.default')
@section('title')
Dashboard
@stop
@section('main')
<div class="row-fluid">
<div class="span4">
@yield('first')
<div class="jarviswidget" id="widget-id-00">
<header>
<h2>{{ $widget['title'] }}</h2>
</header>
<div>
<div class="jarviswidget-editbox">
<div>
<label>{{ ucfirst(Lang::get('strings.title')) }}:</label>
<input type="text">
</div>
<div>
<label>{{ ucfirst(Lang::get('strings.style')) }}</label>
<span data-widget-setstyle="red" class="red-btn"></span>
<span data-widget-setstyle="green" class="green-btn"></span>
<span data-widget-setstyle="purple" class="purple-btn"></span>
<span data-widget-setstyle="black" class="black-btn"></span>
<span data-widget-setstyle="darkgrey" class="darkgrey-btn"></span>
</div>
</div>
<div class="jarviswidget-timestamp"></div>
<div class="inner-spacer">
<!-- content goes here -->
@yield('wg_content')
Content
</div>
</div>
</div>
</div>
<div class="span4">
@yield('second')
<div class="jarviswidget" id="widget-id-00">
<header>
<h2>{{ $widget['title'] }}</h2>
</header>
<div>
<div class="jarviswidget-editbox">
<div>
<label>{{ ucfirst(Lang::get('strings.title')) }}:</label>
<input type="text">
</div>
<div>
<label>{{ ucfirst(Lang::get('strings.style')) }}</label>
<span data-widget-setstyle="red" class="red-btn"></span>
<span data-widget-setstyle="green" class="green-btn"></span>
<span data-widget-setstyle="purple" class="purple-btn"></span>
<span data-widget-setstyle="black" class="black-btn"></span>
<span data-widget-setstyle="darkgrey" class="darkgrey-btn"></span>
</div>
</div>
<div class="jarviswidget-timestamp"></div>
<div class="inner-spacer">
<!-- content goes here -->
@yield('wg_content')
Content
</div>
</div>
</div>
</div>
<div class="span4">
@yield('third')
<div class="jarviswidget" id="widget-id-00">
<header>
<h2>{{ $widget['title'] }}</h2>
</header>
<div>
<div class="jarviswidget-editbox">
<div>
<label>{{ ucfirst(Lang::get('strings.title')) }}:</label>
<input type="text">
</div>
<div>
<label>{{ ucfirst(Lang::get('strings.style')) }}</label>
<span data-widget-setstyle="red" class="red-btn"></span>
<span data-widget-setstyle="green" class="green-btn"></span>
<span data-widget-setstyle="purple" class="purple-btn"></span>
<span data-widget-setstyle="black" class="black-btn"></span>
<span data-widget-setstyle="darkgrey" class="darkgrey-btn"></span>
</div>
</div>
<div class="jarviswidget-timestamp"></div>
<div class="inner-spacer">
<!-- content goes here -->
@yield('wg_content')
Content
</div>
</div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12">
</div>
</div>
@stop
每个@yield 都会加载一个处理小逻辑的小部件,甚至是另一个带有另一个嵌套视图的模板。
例如@yield('first') 将加载一个盒子,该盒子是另一个模板,里面有一个yield,一个变量作为标题。这个嵌套的产量将有另一个产量或内容......然后我们用于该框的同一个框将被再次使用以另一个标题和另一个内容呈现@yield('second'),这可能与第一产量。
我不明白如何使用刀片模板系统制作这种级联。有没有办法做类似的事情?
我知道这很复杂,但如果你曾经使用过 .net,你就会明白我的意思。
感谢和抱歉我的英语。
这样做与HMVC模型有相似之处,但又不一样。
【问题讨论】:
-
您找到解决方案了吗?通常我使用 AngularJS 和他的指令在客户端处理模板和部分,但只是因为我不需要任何服务器端操作(否则我必须为此目的向服务器发送新请求)