2014-09-16 1 views
0

나는 Laravel Blade tutorial을 거쳤습니다. 내 프로젝트에서 사용하고있다. 그러나 드롭 다운 목록에서 선택된 항목에 따라 다른 블레이드 템플릿보기를 추가하려고합니다.Laravel의 if-else 절에 다른 블레이드 템플릿보기를 포함시키는 방법은 무엇입니까?

예 : - 하나의 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 드롭 다운에서 선택한 옵션의 기초에 대해 의견의 다른 유형을 추가 할 수 있습니다. 나는 자바 스크립트에서 그것을하려고 노력하고있다.

자바 스크립트 코드 : -

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"); 
    } 
} 

하지만 점점 오전 오류는/질문/type1.blade.php 404 (찾을 수 없음)

가 어떤 로컬 호스트/mywebsite/질문이다 드롭 다운 선택한 항목의 값에 따라 @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

뷰 파일의 경로가 아닌 URL (뷰를 반환하는)을 기대합니다. –

+0

PHP를 사용할 수 있습니까? –

+0

js에서 블레이드를 방문 할 수 없으며 {{}}에서 js를 실행할 수 없습니다. – worldask

답변

0

당신이 laravel하는 요청을하는 경우, 당신은 그들의 안녕하세요 세계 예제로 (그 여부를 간단한 폐쇄와 관련된 방법과 route이 필요합니다 또는 controller 클래스 내부의 메소드). 메소드의 내부

당신이 돌아 볼 수있는 로직 수행 할 수있는 곳입니다 : 보내, 당신의 자바 스크립트에서

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

을하여 Ajax 요청에 매개 변수로를 따라 question_type. 그런 다음 컨트롤러 방법 당신은 당신의 결정을 내릴 수 있습니다

$("#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"); 
    } 
}); 

귀하의 전화 암시의 전체 출력과 동일한 ID 질문과 DOM 요소의 내용을 설정합니다 jQuery.load()에 요청 (리턴 된 뷰에 포함 된 모든 것). jQuery docs :

이 방법은 서버에서 데이터를 가져 오는 가장 간단한 방법입니다. $ .get (url, data, success)는 전역 함수가 아니라 메소드이며 암시 적 콜백 함수가 있다는 점을 제외하고는 $ .get (url, data, success)와 거의 같습니다. 성공적인 응답이 감지되면 (즉, textStatus가 "success"또는 "notmodified"일 때), .load()는 일치 된 요소의 HTML 내용을 반환 된 데이터로 설정합니다.

+0

답장을 보내 주셔서 감사합니다. JavaScript로 할 수 있습니까? 변경 이벤트의 드롭 다운에서 페이지 새로 고침없이 다른 유형의 하위보기를로드하려면 어떻게해야합니까? Laravel이 @include (blade_sub_view)를 HTML 코드로 변환하는 방법을 알고 있으면 내 문제가 해결됩니다. .... 여전히 고생 중입니다 ... –

+0

예, 자바 스크립트로 할 수 있지만 _Laravel route_에 AJAX 요청을 보내야합니다. 블레이드 템플리트를 직접 요청할 수는 없습니다. –

+0

yup..Right approach ... 고마워요 .... :)하지만 AJAX가 전체 페이지를 반환하거나 하위보기를 반환합니다. Question_form에 추가 할 수 있습니까? –

관련 문제