2012-12-18 40 views
0

以下考慮在codeigniter/php中的視圖太多了嗎? $ 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

視圖不是模板。 –

相關問題