0

私は初心者です。最終的に、フッターとヘッダー部分を除いて M​​Y_Controller.php を使用して、サイトにページを表示させることができました。

ここに私の MY_Controller.php があります:

class MY_Controller extends CI_Controller {

  protected $data = array();

  function __construct() {
    parent::__construct();
  }

  function render_page($view) {
    //do this to don't repeat in all controllers...
    $this->load->view('templates/header', $this->data);
    //menu_data must contain the structure of the menu...
    //you can populate it from database or helper

    $this->load->view($view, $this->data);
    $this->load->view('templates/footer', $this->data);
  }

そして私のホームコントローラー:

class Home extends MY_Controller {
         function __construct() {
    parent::__construct();
  }

        public function view($page = 'home')
        {
         $this->load->helper('text');
            $data['records']= $this->services_model->getAll();
            if ( ! file_exists('application/views/pages/'.$page.'.php'))
            {
                // Whoops, we don't have a page for that!
                show_404();
            }

            $data['title'] = ucfirst($page); // Capitalize the first letter


            $this->load->view('pages/'.$page, $data);


        }

config/config.rb:

$config['index_page'] = 'index.php';
$config['subclass_prefix'] = 'MY_';

config/routes.rb:

$route['default_controller'] = 'home/view';
$route['(:any)'] = 'home/view/$1';

ソース コードでは、home.php コードしか確認できません。header および footer.php コードはロードされません。あなたの提案は何ですか?

4

1 に答える 1

2

Homeコントローラでは、関数を使用する代わりに、ビューを直接ロードしていますrender_page

したがって、変更します。

$this->load->view('pages/'.$page, $data)

に:

$this->render_page('pages/'.$page);

うまくいけば、これはヘッダー/フッターをロードします。

于 2012-08-02T07:55:59.570 に答える