我对编程很新,我对MVC模式有一个简单的问题。我开始学习Laravel,它有视图,控制器和模型。
我的问题是:我的观点中可以std::string compare_string = "";
strPairMap::iterator compare_it = working_tuples_deque.at(l).find(cur_relation_vector.at(j).scheme.at(k));
if (compare_it != working_tuples_deque.at(l).end()){
std::pair<std::string,std::string> compare_pair = compare_it->second;
compare_string = compare_pair.second;
}
像这样吗?
if
我的<option value="dayofweek" {{Input::get('group') == 'dayofweek' ? 'selected' : ''}}>Day Of week </option>
中有几个<option>
,看起来很丑陋,尤其是当我在条件<select>
中添加其他语句时。
我是否应该在我的控制器中使用其选项构建选择,因为我在那里有相同的数据并执行所有检查,然后让视图呈现选定的和未选择的选项?
PS:我知道我可以,但应该我?答案 0 :(得分:2)
是的,您可以在视图中执行if
语句。这不是疯狂,因为这意味着你的观点将是完全静态的,这是非常不切实际的。
然而 ,让这些陈述依赖Input
之类的东西可能是一个坏主意。您的观点应该比解耦更多。想象一下,您将在几种不同的场景中使用特定视图;换句话说,许多不同的控制器可能想要渲染相同的视图。无法保证在每个场景中都使用Input
,或者具体称为该输入。 控制器应该处理直接输入,视图应该接收控制器设置的$currentGroup
之类的变量。您希望在输入和输出之间加一些绝缘,而不是立即将它们连接在一起,以提高可重用性和灵活性。
答案 1 :(得分:0)
你可以这样做,
<select>
@foreach ($dropItems as $item)
{{-- */
$selected = '';
if ( Input::has('group') && Input::get('group') == $item) {
$selected = 'selected';
}
/* --}}
<option value="dayofweek" {{ $selected }}>Day Of week </option>
@endforeach
</select>
或者你可以使用
{!! Form::select('day_drop_down', $daysArray , ( Input::has('group') && Input::get('group') == '')?Input::get('group'):0, ['class' => 'form-control', 'id'=>'productTemplate']) !!}
答案 2 :(得分:0)
问题是,您的控制器驻留在哪里?你在做服务器端编程吗?然后控制器和模型驻留在服务器上。
如果您正在进行客户端编程,那么所有三个层都存在于浏览器HTML / CSS(视图),Javascript(控制器和模型)中。
如果稍后你应该清理你的HTML:
<option value="dayofweek">Day Of week </option>
只有你的Javascript(在控制器中)才能进行操作:
val = get('group') == 'dayofweek' ? 'selected' : ''}}
$('dayofweek').val = val;
(抱歉javascript可能不对......但你明白了。)