如何在Laravel的if-else子句中包含不同的刀片模板视图


How to include different blade template view in if-else clause in Laravel?

我已经完成了Laravel Blade教程。我在我的项目中使用了它。但我想根据下拉列表中选择的项目添加不同的刀片模板视图。

示例:-我有一个创建Question.blade.php页面。

Question.blade.php

<div class="question_type">
<?php $question_type= array('--' => '--- Select Question Type ---') 
+QuestionType::lists('name', 'id') ?>
{{ Form::select('question_type', $question_type,'--' ,array('id'=>'question_type','class' => 'form-control')) }}
</div>

现在,我想根据在Question_type下拉列表中选择的选项添加不同类型的视图。我正在尝试用Java脚本来做这件事。

Java脚本代码:-

 function addQuestion() 
 {
   var question_type=$("#question_type").val();
   switch (question_type) 
   {
    case 1:
    $("#Questions").load("questions/type1.blade.php");
    case 2:
    $("#Questions").load("questions/type2.blade.php");
    default:
    $("#Questions").load("questions/default_type.blade.php");
  }
} 

但我收到错误localhost/mywebsite/questions/type1.blade.php 404(未找到)

有没有任何解决方案可以根据下拉选择项的值使用@if@else或@switch包含刀片视图?

我的伪代码:-

@if {{question_type.selected.val='1'}}
@include(question.type1);
@elseif {{question_type.selected.val='2'}}
@include(question.type2);
@else
@include(question.default_type);
@endif

如果您向laravel发出请求,则需要有一个带有与其关联的方法的路由(无论是hello世界示例中的简单闭包,还是控制器类中的方法)。

的内部,方法是您可以对返回的视图执行逻辑的地方:

if($someCondition) {
    return View::make('template1');
} else {
    return View::make('template2');
}

在javascript中,将question_type作为参数发送到AJAX请求中。然后在您的控制器方法中,您可以做出您的决定:

$("#Questions").load("questions/type", "question_type="+question_type);

您的路线:

Route::get('questions/type', function() {
    switch(Input::get('question_type')) {
        case 1:
            return View::make("questions/type1.blade.php");
        case 2:
            return View::make("questions/type2.blade.php");
        default:
            return View::make("questions/default_type.blade.php");
    }
});

jQuery.load()的调用将隐式地将IDQuestions的DOM元素的内容设置为等于请求的整个输出(返回视图中包含的内容)。来自jQuery文档:

此方法是从服务器获取数据的最简单方法。它大致相当于$.get(url,data,success),只是它是一个方法而不是全局函数,并且它有一个隐式回调函数。当检测到成功响应时(即,当textStatus为"success"或"notmodified"时),.load()将匹配元素的HTML内容设置为返回的数据。