MVC - 我可以在视图中执行ifs

时间:2016-04-05 07:15:13

标签: model-view-controller

我对编程很新,我对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:我知道我可以,但应该我?

3 个答案:

答案 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可能不对......但你明白了。)