Как включить другое представление шаблона лезвия в условие if-else в 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 Script.

Код скрипта 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 / 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

0

Решение

Если вы делаете запрос на Laravel, вам нужно иметь маршрут с помощью метода, связанного с ним (будь то простое замыкание, как в их примерах мира приветствия, или метод внутри контроллер учебный класс).

Внутри тот Метод, в котором вы можете выполнить свою логику, для которого возвращать представление:

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() будет неявно устанавливать содержимое элемента DOM с вопросами ID, равными всему выводу запроса (независимо от того, что содержится в возвращаемом представлении). От JQuery Docs:

Этот метод является самым простым способом получения данных с сервера. Он примерно эквивалентен $ .get (url, data, success), за исключением того, что это метод, а не глобальная функция, и он имеет неявную функцию обратного вызова. Когда обнаружен успешный ответ (т. Е. Когда textStatus имеет значение «success» или «notmodified»), .load () устанавливает содержимое HTML сопоставленного элемента в возвращаемые данные.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]