私はCodeIgniterのWebサイトを構築しています。データベースから取得したデータに基づいてデータを返すヘルパーを作成しました。このMVCを適切な状態に保つためにどのようにレイアウトするべきかはわかりません。このヘルパーを使用する正しい方法は何ですか?
コントローラー:
$char = $this->uri->segment(4);
$q = $this->kal_db_model->get_char($this->session->userdata('uid'), $char);
$q_row = $q->row();
$data['items'] = $this->kal_db_model->get_items($q_row->PID);
$data['page'] = 'control_view_char';
モデル:
function get_items($pid)
{
$kal_db = $this->load->database('kal_db', TRUE);
$sql = "
SELECT i.*, n.Name, n.Grade, n.type, p.Name AS PrefixName, m.Name AS MixName
FROM dbo.Item as i
INNER JOIN dbo.ItemName as n
ON i.[Index] = n.[Index]
INNER JOIN dbo.PrefixName as p
ON i.[Prefix] = p.[Prefix]
INNER JOIN dbo.MixName as m
ON i.[Info] = m.[Info]
WHERE i.PID = '". $pid ."'
";
$query = $kal_db->query($sql);
return $query;
}
ビュー:
<?php if ($items->num_rows() > 0)
{
foreach ($items->result() as $item): ?>
<tr class="odd">
<td><img src="<?php echo base_url(); ?>/assets/items/<?php echo $item->Index; ?>.bmp" alt="" /></td>
<?php if($item->type == 1)
{
echo '<td>G' . $item->Grade . '<span style="color:blue">' . $item->PrefixName . '</span> <span style="color:red">' . $item->XAttack . '/' . $item->UpgrLevel . '/' . $item->XHit . '</span> ' .$item->Name; if($item->Info > 50000){ echo ' <span style="color:green">' . $item->MixName . '</span>'; } echo '</td>';
}
elseif($item->type == 2)
{
echo '<td>G' . $item->Grade . '<span style="color:blue">' . $item->PrefixName . '</span> <span style="color:red">' . $item->XDefense . '/' . $item->XDodge . '</span> ' .$item->Name . '</td>';
}
elseif($item->type == 3)
{
echo '<td>' .$item->Name . '</td>';
}
elseif($item->type == 4)
{
echo '<td><span style="color:blue">G' . $item->Info . '</span> ' .$item->Name . '</td>';
}
?>
</tr>
<?php endforeach;
} ?>
は、簡単に言えば、私はビューに$item->Name
の値を表示しないしたいと思いますむしろ何かがヘルパーから戻ってきました。
parse_item($Index, $Prefix, $Info)
をし、このような何かを返す:
ヘルパー関数は次のようになります
Array ([name] => Short Iron Sword [prefix] => The King, GuhBalHan's [mix] => Shadow)
私が得ることができるが$Index
$Prefix
$item->Info
$item->Prefix
などと
$Info
、
$item->Index
など
私は、ヘルパーをビューにロードし、明らかにロジックがたくさんあるという悪い習慣を知っているので、これをどうやって行うのかは分かりませんが、返されるアイテムごとにこの関数を呼び出す必要があります。それは私がちょうどforeach文内の関数を呼び出すことなく、それを行うための方法を見つけるように見えることはできません$item->Name
$data['prefix']
として$item->Prefix
、$data['name']
などと$item->MixName
$data['mix']
として提供されます。何か不足していますか?
思考/提案?
ありがとうございます。
--------------一部は、これが部分的に解決され、私はモデルでこれを入れているが、それはちょうど、17回の最初の行を返している
を解決しました。 $ qが最初の行にすぎない理由は分かりません。配列ではないでしょうか?
$query = $kal_db->get('Item');
$q = $query->row();
$i = 1;
foreach($q as $row)
{
$item[$i]['IID'] = $q->IID;
$i = $i + 1;
}
return $item;
コントローラでヘルパーを読み込むことができ、ビューは引き続き機能にアクセスできます。ビューの中でこれらの関数を使うのは悪い習慣ではありません.CIのタイポグラフィヘルパー、URIヘルパーを考えてみましょう。あらゆる種類のビューはビュー内で使用するのに完全に適切です。 MVCはコンセプトです。**あなたがそれを遵守する**とは思わないでください。 – Ross