2012-12-18 2 views
0

아래 코드 네임은/code의 codeigniter에서보기에는 너무 많은가? 여기서 $ springtrail은 모델에서 계산 된 배열입니까?MVC보기에 있어야 할 내용

<div id="page_name">Website</div> 
<?php 
$count = count($springtrail); 
for($i = $count; $i >= 1; $i--){ 
    if ($i != 1) 
    { 
     ?> <div class="springtrail_button" id="st-0">arrayitem</div> <?php 
    } else 
    { 
     ?> <a class="springtrail_link" href="#" id="1">Add</a> <?php 
    } 
} 
+0

을 너무 무엇? –

+1

나는 너무 많은 논리를 생각한다. –

+4

개인적으로 나는 당신이보기에 필요한 데이터를 표현하기 위해 필요한 모든 논리를 포함하는 것이 좋다고 생각합니다. 어쨌든 Codeigniter는 많은 유연성을 허용하지만 규칙을 적용하지 않습니다. 뷰에 루프와 조건부 논리를 포함 시키면 아무 것도 깨지 않을 것이므로 궁극적으로 판단에 남습니다. – IsisCode

답변

4

아니, 그것은 본질적으로 당신의 MVC 모델

0

을 깨는,보기에서 논리를 제거 (다른 곳에 넣어) 것보기 외부에서 퍼팅 때문에, 외모 로직과 관련이있다 예, 너무 많은 논리라고 말할 수 있습니다. 이런 식으로 대신 할 수도 있다고 생각합니다.

<div id="page_name">Website</div> 

<a class="springtrail_link" href="#" id="1">Add</a> 

<?php foreach ($springtrail as $item): ?> 
    <div class="springtrail_button" id="st-0">arrayitem</div> 
<?php endforeach ?> 

구문이 다른 점에 유의하십시오. alternative PHP syntax을 사용하는 것이 좋습니다.

언제든지 뷰에서 변수 값을 지정하면 잘못된 경로로 향하게된다는 신호입니다. 그리고 목록의 첫 번째 항목을 다른 방식으로 표시하는 것과 마찬가지로 첫 번째 항목이 나머지 항목과 다른 경우 실제로 해당 목록의 구성원이 아니라고 말할 수 있습니다. 컨트롤러에서 별도의 값으로 만드십시오. 첫 번째 항목에 대한 변수 값을 출력하는 것조차 보이지 않는 것처럼 보이므로 목록 출력을 시작하기 전에 정적으로 표시하지 않는 이유는 무엇입니까?

희망이 있습니다.

+0

처음에는이 경로를 사용하려고했으나 배열에는 동적 개수가 포함되어 있었고 1 또는 10인지 여부에 관계없이 업데이트 할 때마다 끝에 "추가"링크를 배치하려고했습니다. –

1

많은 부분으로 확장하지 않는 한 괜찮습니다.

, 컨트롤러 내부에 그 논리를 유지하기 위해 더 나은 것 ... 그 때문에 당신과 같이 뭔가를 할 수 :

컨트롤러 :

$count = count($springtrail); 
for($i = $count; $i >= 1; $i--) { 
    $data['s_count'] = ($i !== 1 ? 'button' : 'link'); 
} 

보기 :

<?php if($s_count == 'button'): ?> 
    <html here> 
<?php else: ?> 
    <other html here> 
<?php endif; ?> 
+1

보기가 템플릿이 아닙니다. –

관련 문제