0

一般的なビュー ページのすべてのデータを取得するコントローラーの 1 つで、foreach ループを使用しますが$object->column_name、このデータを使用していくつかのことを行うことにしました。

  • 編集する -> それぞれの編集ページ$objectです$id
  • $object->nameコントローラーを介してフィールドを使用して、フィールドで使用できるようにします$data['pageTitle']= Edit '.$object->name.';

以下のモデルを変更して、多くの目的/操作のためにデータを表示するさまざまな方法で使用できるようにする最良の方法は何ですか?

public function showAll()
{

    $database = $this->db->get('form');

    if($database->num_rows() > 0)
    {
        $row = $database->result();
    }

    return $row;
}
4

2 に答える 2

1

コントローラーではなくモデルにデータベース クエリ パーツを保持することをお勧めします。

コントローラーでは、次のようなことができます。

$recs = $this->sample_model->model_function();
foreach ($recs as $r)
{
    $r->additional_info_appended_to_each_row = 'whatever';
} 

このようにして、データベースの各行に追加の変数を追加して、表示/編集などを行うことができます。

于 2012-08-10T12:11:57.747 に答える
0

そのコードは、その質問に答えるのに十分な関連コードを実際に示していません。$database->result()行の配列(データベースクエリの結果セット)を返すと仮定すると、そこに含まれるデータはクエリの外観によって異なります。表示するのは$this->db->get('form')、です。これは、ほぼすべてを意味します。

あなたの質問に対する一般的な答えは次のようになります。idフィールドとnameフィールドを含むようにSQLクエリを変更します。次に、コントローラーを介してそれらをビューに挿入します。(または、ビューから直接取得します。それはあなた次第です。)

コントローラーやビューについて何も知らないので、ビューがSmartyテンプレートエンジンを拡張すると仮定した例を次に示します。

public function GeneralController
{
    public function defaultAction()
    {
        $model = new GeneralModel();
        $objects = $model->getAll();

        $view = new GeneralView();
        $view->assign("objects", $objects);
        $view->show();
    }
}

Smartyテンプレートは、HTMLを生成するときにこれらの行を使用します

{foreach $objects as $object}
<section class="object">
    <header>
        <h1>{$object->name}</h1>
    </header>
    <p>{$object->contents}</p>
    <footer>
        <a href="/general/edit/?id={$object->id}">Edit</a>
    </footer>
</section>
{/foreach}   
于 2012-08-10T08:07:05.090 に答える