我对编程非常陌生,对于MVC模式我有一个简单的问题。我开始学习Laravel,它有视图,控制器和模型。
我的问题是:我的观点中能有像这样的if吗?
<option value="dayofweek" {{Input::get('group') == 'dayofweek' ? 'selected' : ''}}>Day Of week </option>
我的<select>中有几个<select>,它看起来有点难看,特别是当我向条件Input::has('group') && ...中添加额外的语句时。
是否应该在控制器中构建带有其选项的select,因为这里有相同的数据并执行所有检查,然后让视图呈现选定的和非选定的选项?
PS:我知道我可以,但是应该 I吗?
发布于 2016-04-05 07:57:38
是的,您可以在视图中执行if语句。不这样做是疯狂的,因为这将意味着你的观点将完全是静态的,这是相当不切实际的。
--但是--让这些语句依赖于类似于Input的东西可能是个坏主意。你的观点应该比这更解耦。假设您将在几种不同的场景中使用特定的视图;换句话说,许多不同的控制器可能希望呈现相同的视图。不能保证在所有这些场景中都使用了一个Input,或者具体地调用了这个输入。控制器应该处理直接输入,视图应该接收像控制器设置的$currentGroup这样的变量。您希望在输入和输出之间设置一些隔离,而不是立即将它们连接在一起,以提高可重用性和灵活性。
发布于 2016-04-05 07:33:22
你可以像下面这样做
<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']) !!}发布于 2016-04-05 07:42:47
问题是,您的控制器住在哪里?您正在进行服务器端编程吗?然后控制器和模型驻留在服务器上。
如果您正在进行客户端编程,那么所有三个层都位于浏览器HTML/CSS (视图)、Javascript (Controller和Model)中。
如果是后者,那么您应该清除HTML:
<option value="dayofweek">Day Of week </option>只有Javascript (在控制器中)进行操作:
 val = get('group') == 'dayofweek' ? 'selected' : ''}}
$('dayofweek').val = val;(对不起,javascript可能是错的.但你知道这个主意。)
https://stackoverflow.com/questions/36419551
复制相似问题