Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel的if else子句中包含不同的刀片模板视图?_Php_Laravel_Blade - Fatal编程技术网

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

Php 如何在Laravel的if else子句中包含不同的刀片模板视图?,php,laravel,blade,Php,Laravel,Blade,我经历过。我已经在我的项目中使用了它。但我想根据下拉列表中选择的项目添加不同的刀片模板视图 示例:-我有一个create Question.blade.php页面 Question.blade.php <div class="question_type"> <?php $question_type= array('--' => '--- Select Question Type ---') +QuestionType::lists('name', 'id') ?>

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

示例:-我有一个create 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>
但我收到错误localhost/mywebsite/question/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 world示例中的简单闭包还是类中的方法)

在该方法的内部,您可以对要返回的视图执行逻辑:

if($someCondition) {
    return View::make('template1');
} else {
    return View::make('template2');
}
在javascript中,将
question\u 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()
的调用将隐式地将带有ID问题的DOM元素的内容设置为请求的整个输出(返回视图中包含的内容)。从:

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


$.load(“questions/type1.blade.php”)
需要的是url(返回视图),而不是视图文件的路径。我可以使用PHP吗?您不能在js中访问blade,也不能在{{}中运行js。有什么办法吗?我的意思是我不想在JavaScript页面中编写整个HTML代码来附加它。它不喜欢清洁剂。谢谢你的回复。我能用JavaScript做吗?我的意思是,如何在不刷新页面的情况下加载不同类型的子视图?如果我知道Laravel如何将@include(blade_sub_视图)转换为HTML代码,我的问题就会得到解决。。。。仍然在挣扎……是的,可以用javascript实现,但需要将AJAX请求定向到laravel路由。您不能直接请求刀片模板。是的……正确的方法……谢谢兄弟……)但AJAX将返回整个页面或返回子视图。我可以在问题表单中附加这些内容?我已经更新了答案。对.load的调用应自动获取请求的输出,并将
$(“#Questions')
的内容设置为它。。但是
$(“#问题”).load(“问题/类型”,“问题类型=“+问题类型”)
正在替换我的整个页面。我可以附加AJAX返回的HTML代码吗?
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");
    }
});