2014-06-19 10 views
0

블레이드에 표시하기 전에 어디에서 정보를 래핑 할 수 있습니까?Laravel 4 포장 텍스트를 반환하는 논리 조직

사실 내 생각에 나는 보통 비슷한 것을 사용한다.

<td>{{ $computer->component->id }}</td> 
<td>{{ $computer->component->price }}</td> 
<td>{{ $computer->component->status->name }}</td> 

좋아, 그것은 멋진하지만 시각적으로, 다른 클래스, clor으로, exemple를 들어, 아이콘을 표시하는 상태, "친절한 이상의 사용자", 꽤 가난, 그리고 내가 만들 것 상태 값에 따라 다릅니다.

질문은 어디에서해야합니까? 파일로? 모델에서이 작업을 수행 할 수는 있지만 MVC를 논리적으로 유지하고 깨끗한 코드를 유지하는 좋은 방법은 아닙니다.

저는 발표자 클래스를 사용하려고하지만 $ 컴퓨터 뷰에서 Component 표현자를 호출 할 수 없으며 다른 구성 요소에이 상태 디자인을 표시하려고합니다.

아이디어, 제안, 다른 논리가 있다면 "알고 있습니다"!

+0

'보기 '는 처리를위한 것이 아니며,'발표자 '의 문제점은 무엇입니까? –

+0

'HTML'이 없다면 모델에'accessor' 메쏘드를 만들 수 있습니다. –

+0

html이 있습니다! - "발표자에게 잘못된 점이 있습니다." 웅변적인 동적 관계 속성을 사용하여 발표자의 의견을 말할 수 없습니다. 예 : $ computer-> component-> designStatus() 가 작동하지 않았습니다. Presenter는 $ component-> designStatus()를 사용하는 경우에만 작동합니다. – kesm0

답변

1

@include을 사용하여 블레이드 전용 접근 방식에 대해 다른 아이디어를 던질 것입니다.

응용 프로그램/뷰/computer.blade.php

<td>{{ $computer->component->id }}</td> 
<td>{{ $computer->component->price }}</td> 
@include('partials.status', ['status' => $computer->component->status->code, 'label' => $computer->component->status->name]) 

응용 프로그램/뷰/파셜/status.blade.php : 만들기

<td> 
    <div class="{{ $status }}"> 
     {{ $label }} 
    </div> 
</td> 

또는 여기에, 디스플레이가 더욱 유연 해집니다. 나는 이것이 당신이 성취하고자하는 것에 너무 지저분하지 않기를 바랍니다.

응용 프로그램/뷰/computer.blade.php

<td>{{ $computer->component->id }}</td> 
<td>{{ $computer->component->price }}</td> 
@include('partials.status', ['status' => $computer->component->status->name]) 

응용 프로그램/뷰/파셜/status.blade.php :

<td> 
    @if($status == 'in stock') 
     <img src="icon-in-stock.png" /> In stock 
    @if($status == 'out of order') 
     <img src="icon-out-of-order.png" /> Out of order 
     <a href="/notify-me">Tell me when items are available!</a> 
    @endif 
</td> 

또는 당신은 혼합하고 일치시킬 수 있습니다 위의 두 가지 예, <td>의 수업은 상태에 따라 달라지며, 내용은 보기에 따라 달라 지므로 <td> 내에 있습니다.

또 다른 방법으로 위의 예에서 @if 안에 다른 @include을 중첩시킬 수 있습니다.

+0

좋아, 할 길을 이해합니다. 당신의 마음에, 블레이드를 배열을 differents 뷰로 전달할 때만 이것을하는 것이 더 나을 것입니다. 나쁜 생각이 아닙니다! 고마워 – kesm0