creating a master template in CodeIgniter

2019-02-15 08:23发布

问题:

Hey guys i am stuck with a very basic problem, ok the problem is this that i want a master template in which i can call the header, body and footer. I am unable to send title and css in header and also how can i send multiple css files. I am doing something like this:

This is the code in controller

$data['title'] = 'Login To WePOS';
$data['css']   = base_url().'style/login-box.css';

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

This is the code in header

<head>
<title><?php echo $title ?> - CodeIgniter 2 Tutorial</title>
    <link href=" <?php echo $css;?>" rel="stylesheet" type="text/css" />
</head>

This is the code in template name as default

<html>
<?php 
$this->load->view('templates/header', $data);
?>
<body>

<?php 
     $this->load->view('login/index', $data);
?>
</body>
<?php 
     $this->load->view('templates/footer', $data);
 ?>
</html>

回答1:

hi there is different method to use template in codeigniter .

1- you can use this procedure

In controller

 $data['main_content'] = 'login_view';  
 $data['title']        = 'Login To WePOS';  
 $data['css']          = 'login-box.css';  
 $this->load->view('templates/default',$data);

In template.php View

$this->load->view('header_view');  
 $this->load->view($main_content);   
 $this->load->view('footer_view');  

in your main content variable you can pass the view file

if you want to add multiple css or multiple js files you can use MY_MARK idea as

$data['cssFiles'] = array(
    'login-box.css',
    'other.css'
);  

and in your header file

 if(is_array($cssFiles)){
    foreach($cssFiles as $cssFile) {
        <link href="<?php echo base_url() . 'style/' . $css; ?>" rel="stylesheet" type="text/css" />
    }
}

Hope it helps.



回答2:

You don't have to pass $data again in your default template.

<html>
    <?php $this->load->view('templates/header'); ?>
    <body>
        <?php $this->load->view('login/index'); ?>
    </body>
    <?php $this->load->view('templates/footer'); ?>
</html>

This should allow you to pick up the $title and $css variables in your header as you have got currently.

With regards to sending multiple css files, create an array of files, like:

$data['cssFiles'] = array(
    'login-box.css',
    'other.css'
);

And modify the code in your header to be:

foreach($cssFiles as $cssFile) {
    <link href="<?php echo base_url() . 'style/' . $css; ?>" rel="stylesheet" type="text/css" />
}

Hope that helps...