0

CodeIgniter アプリケーションのどこで mysql クエリを処理する必要がありますか?
たとえば、単純なプロジェクトでは、次のようにします。

コントローラ用:

class Blog extends CI_Controller {
    function posts(){
        $data['query'] = $this->blog_model->index_posts();
        $this->load->view('blog_view', $data);
    }
}

とビューで:

<?php
while ($post = mysql_fetch_object($query)):
?>
<div>
    <p><?= $post->body; ?></p>
</div>
<?php endwhile; ?>

しかし、印刷する前に投稿の本文で何かをしたい場合、どこでそれを行うべきでしょうか?
たとえば、投稿の本文をフォーマットし、エコーを行う前に本文を渡す関数を書きたいとします。

CoeIgniter の構造と推奨されるプラクティスに従って、どこに配置する必要がありますか? (最良の選択肢)

  • コントローラーで?(そうであれば、それを使用する方法)
  • ビューで?
  • ヘルパーを書く?
  • 他のアプローチ?
4

2 に答える 2

2

推奨事項は次のとおりです。

コントローラ:

function posts() {
   $this->load->model("blog_model");
   $data['rows'] = $this->blog_model->index_posts(); 
   $this->load->view("blog_view", $data);
}

モデル: (blog_model.php)

function index_posts() {
   $this->load->database();
   $query = $this->db->get('your_table');
   $return = array();
   foreach ($query->result_array() as $line) {
      $line['body'] = ... do something with the body....
      $return[] = $line;
   }
   return $return;
}

ビュー: (blog_view.php)

<?php foreach ($rows as $line): ?>
<div>
<p><?php echo $line['column']; ?></p>
</div>
<?php endforeach; ?>

基本的に何が起こるかというと、モデルが多次元配列を返し、それがビューに渡され、foreach()ループを使用して処理されるということです。

幸運を!

于 2012-08-14T14:23:51.110 に答える
0

その関数を再利用する場合は、ヘルパーを作成します。この関数が一度だけ必要な場合は、コントローラーに入れ、そのコントローラーから呼び出します。

モデルは、データベースにアクセスするためだけに、または他のいくつかの場合にのみ使用されますが、ほとんどの場合、データベース内のものにアクセスしたり、編集、削除などを行ったり、結果をコントローラーに送信してさらに処理したりするためのものです。

あなたの場合、私はヘルパーに固執します。

たとえば、ファイルtop_mega_best_functions.phpを作成し、 helpers フォルダー内に配置します。

あなたがそこに書くより、例えば次のようなもの

function red_text($input) {

    echo '<span style="color: red;">';
    echo $input;
    echo '</span>';
}

次に、ヘルパーをオートローダー ファイルにロードするか、使用する前にロードします。

そして、ビューまたはコントローラーで次のように使用します

$blablabla = "This text will be red";

red_text($blablabla);
于 2012-08-14T15:45:27.430 に答える