1

私はDoctrine2とCodeIgniter2を使用していますが、両方とOOP / MVCを初めて使用するので、簡単な説明を使用してください:)

テストの目的で、コントローラー、モデル、およびビューがあります。ユーザー情報を含むテーブルのデータを表示したい。名、姓、ID番号など。

私のコントローラーはモデルを呼び出します-モデルは教義エンティティからデータを取得し、次にコントローラーはそのデータをビューに渡します。

(コントローラ)

class Test_v_to_m extends CI_Controller {

    public function index() {

        $this->load->model('testing/test_v_to_m_model');
        $data = $this->test_v_to_m_model->display_user_info();

        $this->load->view('testing/test_v_to_m_view', $data );
    }
}

(モデル)

class Test_v_to_m_model extends CI_Model{

public function display_user_name() {

    $query = $this->doctrine->em->createQuery("select u from ORM\Dynasties2\Users u");
    return $query->getResult();

(見る)

//print_r($data);

最初の質問は、オブジェクトまたは配列を便利な方法でビューに渡すにはどうすればよいですか?これは、単一の変数を扱っている場合に機能します。

(コントローラ)

$user = $this->doctrine->em->find('Entities\User', $user_id);
$data['firstname'] = $user->getFirstName();
$this->load->view('testing/test_v_to_c_view_2',$data);

(見る)

echo $firstname;

しかし、配列や多次元配列の場合、似たようなことをする方法がわかりません。

2番目の質問は、ビューに実際の作業(phpロジック、ループ、foreachなど)を実行させるか、それともコントローラーですべてを実行し、ビューにフォーマットと表示のみを実行させるかどうかです。

4

3 に答える 3

2

はい、多次元配列をビューに渡して、必要に応じてアクセスできます。例えば

$template_date['result_arr'] = array(
array('firstname' => 'abc', 'lastname' => 'xyz')
, array('firstname' => 'abc', 'lastname' => 'xyz')
);

ビューファイル内-

foreach($result_arr as $key => $row) {
echo $row['firstname'].' <br />';
}

2番目の質問について-私の理解によると-ビュー内のループに対してforeachを使用することは問題ありませんが、ビジネスロジックをコントローラーとモデルに保持するのが最善です。それがあなたにとって理にかなっていることを願っています。

于 2012-04-10T16:48:17.747 に答える
1

あなたの最初の質問については、頭のてっぺんから答えがわかりません(ごめんなさい!)。ただし、配列はデータの一部として(単一のアイテムとして)渡すことができると思いますが、ビューでそれを繰り返す必要があります(以下を参照)。ただの推測ですが...

2番目の質問については、MVCの原則は、ビューに表示ロジックのみを含めることです。したがって、すべての「実際の作業」はコントローラーで実行する必要があります。

さて、テーブルにデータを表示するためのループが必要な場合、それはビューで行われる「実際の作業」ですが、それはフォーマットと表示の一部であるため、許容されます。

于 2012-04-10T16:48:22.300 に答える
1

最初の質問に関しては、実際には非常に簡単です。

$data = array(
    'firstname' => 'string',
    'array' => array(1, 2, 3),
    'multidimensional_array' => array('ocean' => 'deep')
);

ビューでは、次のようにこれらにアクセスできます。

$firstname;
$array;
$multidimensional_array;

これらはビューにエクスポートされるだけなので、$ data配列の各キーを変数として扱い、$data配列の値を変数の値として扱うことができます。

2番目の質問に関しては、通常、ビューにフォーマットと表示のみを実行させるのが最適です。場合によっては、ifまたはループを使用すると便利な場合があります。たとえば、特定の変数に基づいて異なるメッセージを表示する場合や、テーブルに一連の行を入力する場合などです。ただし、できるだけ多くのロジックを使用しないことを強くお勧めします。ビューは、必要なすべてのデータを受け取り、それに適した方法で表示することを目的としています。

これには多くの理由があります。つまり、保守性(ロジックが変更された場合、ビューを更新する必要はありません)、再利用性(ビューをできるだけ一般的にすると、非常に簡単に再利用できます)、さらにはロジックを気にせずに、新しいビューを作成するか、そのビューを別のビューに置き換えます。

これがお役に立てば幸いです。:)

于 2012-04-10T16:54:41.313 に答える