2016-07-26 5 views
5

laravel에서 사용자 지정 지시문을 작성하려고합니다. 그러나, 그것은 오직 칼럼 부분의 경로를 문자열로 반환하고, 실제로는 hinclude와 같지 않습니다.@ include가 laravel에서 어떻게 작동합니까?

@customInclude('authenticated/partials/header2') 


    Blade::directive('customInclude', function($partial){ 
     if(Config::get('constants.ORG_ID') === 'organizationId'){ 
      return "<?php echo $partial; ?>"; 
     } 
    }); 

나는 그러나, 그 날이 경로 내 PHP에서 경로임을 인식되지 않는 것 같습니다, 사용자 정의 지시어는 '/ 파셜/HEADER2 인증'경로에 HTML을 반환합니다. 내 사용자 지정 지시문은 AppServiceProvider.php 파일 btw에 있습니다. 누구나 @include가 실제로 어떻게 작동하는지 알기 때문에 내 경로가 인식되지 않는 이유를 설명 할 수 있습니다.

+0

힌트. '$ partial'의 값은'authenticated/partials/header2'입니다. 'echo authenticated/partials/header2;가 발생하면 어떻게됩니까? – ceejayoz

+0

@ceejayoz 페이지가 아웃됩니다. 구문 오류, 예기치 않은 '인증 된'(T_STRING), ','또는 ';'을 반환합니다. – ksong12345

+0

당신이''결과 컴파일 된 블레이드 템플리트에서. 유효하지 않은 PHP이며,'''를 추가하여 유효하게 만들었더라도, 그 경로를 템플릿 파일에 에코합니다. 사용자 지정 지시문을 만들 필요가 있습니다. – ceejayoz

답변

1

쿨 질문, 그것은 파고의 비트를했다,하지만 당신은 laravel은 아주 쉽게 무엇을 복제 할 수 있습니다 :

Blade::directive('customInclude', function($partial){ 
    if(Config::get('constants.ORG_ID') === 'organizationId'){ 
     return "<?php echo view($partial); ?>"; 
    } 
}); 
+0

이 오류가 발생합니다 ec6488ec73fd89a9fcb067be4180e524 줄 0 : 메서드 Illuminate \ View \ __ toString()은 위의 구현을 시도 할 때 예외를 throw하면 안됩니다. – ksong12345

+1

부분적인 소리가 들리겠습니까? "hello world"가있는 foo.blade.php와 같이 간단한 블레이드를 사용해보십시오. 또한 PHP 장인보기로 캐시를 지우십시오. clear – Chris

+0

아, 네 말이 맞아 보인다. 그러나 이제는 템플릿이 정규 @include를 수행 할 때 사용한 변수를 인식하지 못하는 문제가 있습니다. 다른 게시물을 읽고 incuded 뷰 ($ partial) -> render(); 이제 정의되지 않은 변수 오류가 발생합니다. – ksong12345

0

감사 크리스 당신의 대답. 맞았 어. 그러나 특정 변수를보기에 전달하려는 경우. 아래를 수행

Blade::directive('customInclude', function($partial){ 
     if(Config::get('constants.ORG_ID') === 'organizationId'){ 
      return "<?php echo view($partial,compact('variable1','variable2','variable3')); ?>"; 
     } 
    }); 

compact()를 통한 변수를 포함한 전체가 나를 버렸다.

+0

걱정할 필요가 없습니다. 내 의견에 언급했듯이, 당신은 그냥 일반 뷰 방법에 따라 변수를 전달합니다. 컴팩트는 필요하지 않지만 오히려 그것의 멋진 지름길. – Chris

관련 문제