0

Codeigniterコントローラーを扱っているときに、繰り返しコードがたくさんあるように見えることに気づきました。より正確には、ビューをロードするときはいつでも。したがって、次のインデックスメソッドを持つloginというコントローラーがあるとします。

$data['title'] = 'Login';
$data['main_content'] = 'forms/login';
$this->load->view('frontpage', $data);

次に、次のインデックス方式のフロントページコントローラーがあります。

$data['title'] = 'Welcome';
$data['main_content'] = 'content/welcome';
$this->load->view('frontpage', $data);

変更されるのは$data内にあるものだけなので、これらをより一般的なコードにして、コードの繰り返しを排除する方法があるかどうか疑問に思いました。

私はこれを処理するための個別のメソッドを作成する($ dataをパラメーターとして渡し、メソッドをビューローディングに任せる)か、クラスの前に$data配列を初期化して$this-でコンテンツを変更するというアイデアをいじっています。 >。これについて専門家の意見をお願いします。私は自分の考え方で正しい方向に進んでいますか?

4

1 に答える 1

0

「ビュー」ごとに個別のビューを用意することをお勧めします。このアプローチは、コントローラーを簡素化し、ビューファイル内の(乱雑な)ロジックの必要性を排除します。

public function index()
{
  $data['title'] = 'Welcome';
  $this->load->view('content/welcome', $data);
}

public function login()
{
  $data['title'] = 'Login';
  $this->load->view('forms/login', $data);
}

次に、ビューファイルでincludesを使用して、ヘッダーなどを追加します。

(views / forms / login.phpの例)

<?php include(APPPATH.'/views/includes/header.php'); ?>

<!--login form ....  -->

<?php include(APPPATH.'/views/includes/footer.php'); ?>

(注:ビュー内のロジックは必要ありません:if ($main_content == 'forms/login'):etcetera ...)

于 2013-01-26T10:34:41.097 に答える