控制codeigniter分页URL

时间:2013-04-06 11:56:38

标签: php html codeigniter pagination

首先,我需要向你解释我在做什么:

注意:此项目正在使用codeigniter框架

我有一个view标题和标签:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Backend-Vihara Dharma Bhakti</title>
<link href="../../../style/style_backend.css" rel="stylesheet" type="text/css">
<link href="<?php echo base_url(); ?>style/style_backend.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="<?php echo base_url(); ?>jquery/jquery-ui-1.10.2.custom/css/ui-lightness/jquery-ui-1.10.2.custom.min.css" />
<script language="javascript" type="text/javascript" src="<?php echo base_url(); ?>jquery/jquery-ui-1.10.2.custom/js/jquery-1.9.1.js"></script>
<script language="javascript" type="text/javascript" src="<?php echo base_url(); ?>jquery/jquery-ui-1.10.2.custom/js/jquery-ui-1.10.2.custom.min.js"></script>

<script>
  $(function() {
    $( "#datepicker" ).datepicker();
  });

  $(function() {
    $( "#tabs" ).tabs();
  });
</script>

<div id="header"><h1>HEADER</h1></div>
    <div id="tabs">
        <ul>
            <li><a href="backend/umat">Daftar Umat</a></li>
            <li><a href="backend/pengurus">Daftar Pengurus</a></li>
            <li><a href="backend/absensi">Absensi</a></li>
        </ul>
    </div>
</head>

请注意,我使用标签在标题和标签下加载不同的内容(controller

标题和标签的controller

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Backend_home extends CI_Controller {
    public function index()
    {
        $this->load->view('template/header_v');
    }
}

然后,我有另一个view来显示内容(我将使用第一个链接(backend/umat)作为示例)

<body>
    <link rel="stylesheet" href="<?php echo base_url(); ?>jquery/jquery-ui-1.10.2.custom/css/ui-lightness/jquery-ui-1.10.2.custom.min.css" />
    <script language="javascript" type="text/javascript" src="<?php echo base_url(); ?>jquery/jquery-ui-1.10.2.custom/js/jquery-1.9.1.js"></script>
    <script language="javascript" type="text/javascript" src="<?php echo base_url(); ?>jquery/jquery-ui-1.10.2.custom/js/jquery-ui-1.10.2.custom.min.js"></script>

    <script>
      $(function() {
        $( "#datepicker" ).datepicker();
      });
     </script>

    <div id="form_search">
        <?php echo form_open('backend/index') ?>
            <!--<p>
                <?php echo form_dropdown('ddl_search', $data_search, 'id="ddl_search"');?>
            </p>-->
            <p>
                Kelas :
                <?php echo form_dropdown('ddl_kelas1', $list_kelas, 'id="ddl_kelas1"');?> -
                <?php echo form_dropdown('ddl_kelas2', $list_kelas, 'id="ddl_kelas2"');?>
            </p>
            <p>
                Nama : <?php echo form_input('txt_nama');?>
                Alamat : <?php echo form_input('txt_alamat');?>
                Tanggal Lahir : <input type="text" id="datepicker" />
            </p>
                <?php echo form_submit('btn_search', 'Search');?>
        <?php echo form_close(); ?>
    </div>
    <div>
        <?php echo $table ?>
        <?php echo $pagination ?>
    </div>
</body>
</html>

及其controller

public function umat() {
        //check authorization
        if(!isset($_SESSION['username']))
            redirect('backend');

        //pagination
        $config['base_url'] = site_url('/backend/umat/');
        $config['total_rows'] = $this->backend_m->count_umat();
        $config['per_page'] = 10; 
        $config['uri_segment'] = 3;
        $config['full_tag_open'] = '<div id="pagination">';
        $config['full_tag_close'] = '</div>';

        $this->pagination->initialize($config); 

        $data['pagination'] = $this->pagination->create_links();

        //table     
        $data_umat = $this->backend_m->get_umat();

        $this->table->set_heading(
            'No',
            'Nama',
            'Kelas',
            'Alamat',
            'Sekolah',
            'Nomor Telepon',
            'Keterangan'        
        );

        $no = 1;
        foreach($data_umat as $list_temp) 
        {
            $this->table->add_row(
                $no++,
                $list_temp->nama,
                $list_temp->kelas,
                $list_temp->alamat,
                $list_temp->sekolah,
                $list_temp->no_tlpn,
                $list_temp->keterangan
            );
        }


        //masukkan data dari DB ke DDL
        $data_kelas = $this->backend_m->get_kelas();

        $data['list_kelas'][0] = 'Pilih Kelas';

        foreach($data_kelas as $row)
        {
            $data['list_kelas'][$row->kelas_id] = $row->kelas;
        }

        /*$data_search = array('kelas' => 'Kelas', 
                             'nama' => 'Nama',
                             'alamat' => 'Alamat',
                             'bulan' => 'Bulan Lahir');*/

        $data['table'] = $this->table->generate();

        $this->load->view('backend/umat_v', $data);
    }

请注意,我在此控制器中使用分页。

主要问题

因为我在页面中使用了2个不同的view(html),url将跟随标题(标签)。 其urlhttp://localhost/ci_gabdb/index.php/backend_home

一切正常,直到我点击我的分页索引的第二页。 url更改更改为http://localhost/ci_gabdb/index.php/backend/umat/10,这会使我的网页丢失其css和标题(标签)。

屏幕截图

之前我点击任何分页(分页索引在下面,我不包括它,所以你可以看到标题和标签):( http://localhost/ci_gabdb/index.php/backend_home

enter image description here

点击后点击我的分页索引的第二页:(http://localhost/ci_gabdb/index.php/backend/umat/10

enter image description here

很抱歉很长的帖子:D如果您有任何解决方案可以帮助我,我不介意更改我的代码很多

1 个答案:

答案 0 :(得分:2)

您需要重新考虑如何使用模板。我也使用模板,你需要做的是将视图传递给模板。

基本示例。

模板页面:

$this->load->view('header');
$this->load->view('content',$main_content);
$this->load->view('footer');

然后在每个页面的控制器中执行此操作:

$data['main_content'] = 'umat';
$this->load->view('template',$data);

基本上你要做的就是你加载的每个页面都要加载模板文件,特定页面将通过$ data传递到该模板中的正确位置。

这样您就不必尝试从每个控制器函数传递多个视图,并且您不必担心现在的问题,即分页需要单个URL的问题。

如果我正确理解您的问题,请正确地重新加工您的网页,以便解决您的问题。