0

以下はcodeigniter/phpのビューには多すぎると考えられていますか?$ springtrailは、モデルで計算された配列ですか?

<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
    }
}
4

3 に答える 3

4

いいえ、それは外観ロジックに関係しているため、ビューの外に配置すると、本質的にビューからロジックが削除され(そして別の場所に配置され)、MVCモデルが破損します

于 2012-12-18T17:23:07.107 に答える
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; ?>
于 2012-12-18T17:25:22.857 に答える
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 ?>

構文がどのように異なるかに注意してください。代替のPHP構文を使用することを強くお勧めします。

ビューで変数値を割り当てていることに気付いたときはいつでも、それは間違った道を進んでいることを示していると思います。そして、リストの最初のアイテムを別の方法で表示することに関しては、まあ、最初のアイテムが他のアイテムと異なる場合、それは実際にはそのリストのメンバーではないと思いますよね?コントローラで別の値にします。ただし、最初の項目の変数値を出力しているようには見えないので、リストの出力を開始する前に静的に表示してみませんか?

お役に立てば幸いです。

于 2012-12-18T17:24:25.140 に答える