2017-12-12 5 views
1

나는 Laravel의 블레이드 템플릿에서 많은 루프를 수행하고 때로는 $ found 또는 $ needToSave와 같은 조건을 기억해야합니다. 이제Laravel의 블레이드에서 루프 변수

<?php $found = false; ?> 
@foreach ($users as $user) 
    @foreach ($user->posts as $post) 

     @if ($post->something == "value") 
      <?php $found = true; ?> 
     @endif 

     @if ($loop->parent->last) 
      @if ($found) 
       I really found something! Do something special! 
      @endif 
     @endif 

    @endforeach 
@endforeach 

<?php $found = false|true ?> 부분에 대한 더 나은 방법이 여기있다 :

작은 예입니다? 저에게 이것은 부정확 한 것 같아서 템플릿 엔진으로 재생되는 더 깨끗한 솔루션을 찾고 있습니다. 나는 @php에 대해 안다. 그러나 이것은 나에게보기 흉하게 보인다. 엔진 내에 로컬 바를 지정하는 것이 있습니까?

건배

+0

내에서 일반 PHP 블록을 실행하기 위해 블레이드 @php 지시어를 사용할 수 있습니까? 특정 값의 게시물이있는 사용자가 있는지 알고 싶습니까? 그렇다면 컨트롤러에서이 작업을 수행하고 데이터베이스 쿼리를 만들어야합니다. – Jerodev

+0

음, 네가 그렇게 염두에 두었던 것은'{{$ found = false}}'라고하지만 나는 그걸 밖으로 인쇄 할 거라고 생각하지 않니? 그렇지 않다면, 그게 내가 찾고 있던거야! – andi79h

+0

네 말이 맞아! 죄송합니다! 변수를 반환하기 만하면 변수를 dd() 할 때이 이론을 테스트했을 때 검사조차하지 않았습니다. – Option

답변

5

당신이 변수 나중에 필요가없는 경우, 당신은 당신의 코드를 리팩토링 할 수 있습니다 : 당신이 미래에서 사용하게하는 경우, 당신은 @php를 사용할 수있는 경우

@foreach ($users as $user) 
    @foreach ($user->posts as $post) 
     @if ($loop->parent->last && $post->something === 'value') 
      I really found something! Do something special! 
     @endif 
    @endforeach 
@endforeach 

@endphp

경우에 따라 PHP 코드를보기에 삽입하는 것이 유용합니다. 당신은 정확하게 당신이 뭘 하려는지 템플릿

https://laravel.com/docs/5.5/blade#php

+0

그래, 내가 쓴 것처럼, 나는 @php에 대해 알고 있지만 @local ("found", "something")과 같은 해결책을 찾고 있었다. $ post-> something은 예제 일뿐입니다. 나는 훨씬 더 복잡한 조건을 실행하고 때마다 마커를 유지해야합니다. – andi79h

+0

@AndreasHerbert Blade에는 그런 것이 없기 때문에'@ php'를 사용하거나 코드를 리팩토링하는 것이 좋습니다. –

+1

감사합니다. 그렇다면 @php와 함께 살거야 :) – andi79h