Laravel Blade 설명서를 읽고 있는데 나중에 사용할 템플릿 내에 변수를 할당하는 방법을 알 수 없습니다. 나는 {{ $old_section = "whatever" }}
그것이 “무엇이든”을 반향시키고 그것을 원하지 않기 때문에 할 수 없습니다 .
나는 할 수 있음을 이해 <?php $old_section = "whatever"; ?>
하지만 우아하지 않습니다.
블레이드 템플릿에서 더 좋고 우아한 방법이 있습니까?
답변
블레이드 태그가 없으므로보기에서는 사용하지 않는 것이 좋습니다. 블레이드보기에서이 작업을 수행하려면 PHP 태그를 작성한대로 열거 나 새 블레이드 태그를 등록하면됩니다. 예를 들면 :
<?php
/**
* <code>
* {? $old_section = "whatever" ?}
* </code>
*/
Blade::extend(function($value) {
return preg_replace('/\{\?(.+)\?\}/', '<?php ${1} ?>', $value);
});
답변
LARAVEL 5.5 이상
@php 블레이드 지시어는 더 이상 인라인 태그를 허용하지 않습니다. 대신 지시문의 전체 형식을 사용하십시오.
@php
$i = 1
@endphp
라 라벨 5.2 이상
당신은 단지 사용할 수 있습니다 :
@php ($i = 1)
또는 블록 명령문에서 사용할 수 있습니다.
@php
$i = 1
@endphp
라 라벨 5
다음과 같이 블레이드를 확장하십시오.
/*
|--------------------------------------------------------------------------
| Extend blade so we can define a variable
| <code>
| @define $variable = "whatever"
| </code>
|--------------------------------------------------------------------------
*/
\Blade::extend(function($value) {
return preg_replace('/\@define(.+)/', '<?php ${1}; ?>', $value);
});
그런 다음 다음 중 하나를 수행하십시오.
빠른 해결책 : 게으른 경우 AppServiceProvider.php의 boot () 함수에 코드를 넣으십시오.
더 나은 솔루션 : 자체 서비스 제공 업체를 만드십시오. Laravel 5에서 블레이드를 확장하는 방법 은 https://stackoverflow.com/a/28641054/2169147 을 참조 하십시오 .이 방법은 조금 더 많은 작업이지만 공급자를 사용하는 방법에 대한 좋은 연습입니다.
라 라벨 4
위의 코드를 app / start / global.php (또는 더 나은 느낌이 든다면 다른 곳) 의 맨 아래에 넣으십시오 .
위의 변경 후 다음을 사용할 수 있습니다.
@define $i = 1
변수를 정의합니다.
답변
에 라 라벨 -4템플릿 주석 구문을 사용하여 변수를 정의 / 설정할 수 있습니다.
주석 구문은 {{-- anything here is comment --}}
의해 렌더링됩니다.잎 엔진
<?php /* anything here is comment */ ?>
약간의 트릭으로 변수를 정의하는 데 사용할 수 있습니다. 예를 들어
{{-- */$i=0;/* --}}
에 의해 렌더링됩니다 잎로
<?php /* */$i=0;/* */ ?>
하는 우리를 위해 변수를 설정합니다. 코드 줄을 바꾸지 않고.
답변
코드를 변경할 필요가없는 간단한 해결 방법이 있으며 Laravel 4에서도 작동합니다.
예를 들어와 같은 연산자 대신 문에 =
전달 된 식에 대입 연산자 ( )를 사용하면 @if
됩니다 ==
.
@if ($variable = 'any data, be it string, variable or OOP') @endif
그런 다음 다른 변수를 사용할 수있는 곳이라면 어디서나 사용할 수 있습니다.
{{ $variable }}
유일한 단점은 과제를 해결 방법으로 수행하고 있음을 알지 못하는 사람에게는 과제가 실수처럼 보일 것입니다.
답변
나중에 너무 복잡하게 만들고 있습니다.
그냥 일반 PHP를 사용하십시오
<?php $i = 1; ?>
{{$i}}
논문.
(또는 https://github.com/alexdover/blade-set도 꽤 까다로워 보입니다)
우리는 모두보기에서 변수를 설정하여 시스템을 “해킹”하고 있는데, 왜 “해킹”을 더 복잡하게 만드는가?
Laravel 4에서 테스트되었습니다.
또 다른 이점은 구문 강조가 제대로 작동한다는 것입니다 (이전에 주석 해킹을 사용하고 있었고 읽기가 끔찍했습니다)
답변
블레이드 템플릿 엔진에서 변수를 설정할 수있는 방법은 다음과 같습니다.
1. 일반 PHP 블록
설정 변수 : <?php $hello = "Hello World!"; ?>
출력 : {{$hello}}
2. 블레이드 PHP 블록
설정 변수 : @php $hello = "Hello World!"; @endphp
출력 : {{$hello}}
답변
Laravel 5.2.23부터는 @php Blade 지시문 이 있으며 인라인 또는 블록 명령문으로 사용할 수 있습니다.
@php($old_section = "whatever")
또는
@php
$old_section = "whatever"
@endphp