Manuelde ve başlangıç seviyesindeki eğitimlerde gösterilen şekli budur. Doğru diyemeyiz ama yaptığı iş bakımından yanlış da sayılmaz. Dilerseniz ben kendi kullandığım şeklini anlatayım hoşunuza giderse kullanabilirsiniz. Tam kodları ücretsiz almak için pm'de atabilirsiniz.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
?>
<!DOCTYPE html>
<html>
<head>
<?php $this->load->view('back/_include/meta'); ?>
<?php if (isset($specific_css_files)): ?>
<!-- spes css -->
<?php foreach ($specific_css_files as $css): ?>
<link rel="stylesheet" href="<?php echo base_url('assets/back/'); echo $css; ?>">
<?php endforeach ?>
<!-- spes css -->
<?php endif ?>
<?php $this->load->view('back/_include/style'); ?>
</head>
<body class="hold-transition skin-blue sidebar-mini">
<!-- Site wrapper -->
<div class="wrapper">
<?php $this->load->view('back/_include/header'); ?>
<!-- =============================================== -->
<?php $this->load->view('back/_include/aside'); ?>
<!-- =============================================== -->
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<?php $this->load->view('back/breadcrumb'); ?>
<?php $this->load->view("back/$folder_path/content"); ?>
</div>
<!-- /.content-wrapper -->
<?php $this->load->view('back/_include/footer'); ?>
</div>
<!-- ./wrapper -->
<?php $this->load->view('back/_include/scripts'); ?>
<?php if (isset($specific_js_files)): ?>
<!-- spes js -->
<?php foreach ($specific_js_files as $js): ?>
<script src="<?php echo base_url('assets/back/'); echo $js; ?>"></script>
<?php endforeach ?>
<!-- spes js -->
<?php endif ?>
<?php $this->load->view('back/_include/customjs') ?>
</body>
</html>Yukarıdaki kod bloğu benim şu anda üzerinde kod yazdığım projenin admin panelinin ana view kısmıdır, bu kısım
view klasörü içindeki,
back klasöründeki
template.php dosyasıdır. Bu template.php viewini, admin panelinin içindeki bütün sayfalar ortak olarak kullanıyor.
$this->load->view($this->route, $data); şeklinde view çağrılıyor.
$this->route kısmınında ise
"back/template" değeri var. Yani
$this->load->view('back/template', $data) da aynı işi görür. Bu gönderdiğim data değişkeni içerisinde
folder_path isimli bir indis var. Bu
$data['folder_path'] = 'sayfaadi' olarak tanımlanan indis, template kısmında -yani yukarıda uzun uzun kodları bulunan kısımda-
<?php $this->load->view("back/$folder_path/content"); ?> olarak çağırılan satırda işlem görüyor.
$data['folder_path'] olarak yolladığımız veriyi direkt
$folder_path değişkeni ile kullanabiliyoruz view'in içerisinde. Bunu da controllarda view'i çağırırken değil de, $this->load->view'in üst satırlarında
$data['folder_path'] = 'hashtag'; olarak tanımlıyoruz. Mesela burada
hashtag sayfasını
folder_path olarak tanımlamışız. Yani ilk olarak
$this->load->view('back/template', $data); kodu çalışacak ve
view klasörü içindeki
back klasörü içindeki
template.php dosyasını çalıştıracak. Ardından klasör kendi içerisinde include edilen meta gibi, head gibi, scripts gibi dosyaları çağıracak ve dosyanın orta kısmında yer alan ana content çağırma kısmında
$folder_path da bulunan
hashtag verisi ile
back/hashtag/content'i include edecek. Aynı şekilde
$data olarak gönderien -varsa- css ve/veya js dosyalarını da, bu yapıda dinamik olarak controller'dan verebiliriz. Mesela örnek olması açısından view çağırma ve data gönderme işlemini gösterebileceğim bir kod blogu atayım;
public function index()
{
$data['data_hashtag'] = $this->crud_model->get_result('hashtag',NULL,'hashtag_id','desc');
$data['specific_css_files'] = array(
'bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css'
);
$data['specific_js_files'] = array(
'bower_components/datatables.net/js/jquery.dataTables.js',
'bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js'
);
$data['data_breadcrumb']['first_page_name'] = 'Etiketler';
$data['data_breadcrumb']['first_page_class'] = 'fa fa-slack';
$data['data_breadcrumb']['first_page_url'] = '#';
$data['dynamic_header'] = 'Etiket Listesi';
$data['folder_path'] = 'hashtag';
$this->load->view($this->route, $data);
}Eğer aklınızda bir soru varsa çekinmeden mesaj atabilirsiniz (forumda yeniyim iş böyle mi yürür bilmem, yöntem ne ise o şekilde bana uaşınız), eğer anlatamamışsam yine bana ulaşarak daha detaylı bir şekilde anlatmamı isteyebilirsiniz. Dilerseniz anlattığım kısımların kodlarını ücretsiz bir şekilde de atabilirim.
Ekleme:
Bir ekleme yapmak istiyorum. Üstteki kod blogunda breadcrumb tanımlaması yapılmış. Sadece bir sayfanın olduğu senaryoda yukarıdaki şekilde tanımlanmış ve alt sayfa olduğu senaryoda da aşağıdaki şekilde tanımlıyorum
$data['data_breadcrumb']['first_page_name'] = 'Etiketler';
$data['data_breadcrumb']['first_page_class'] = 'fa fa-slack';
$data['data_breadcrumb']['first_page_url'] = base_url('ey-admin/hashtag');
$data['data_breadcrumb']['second_page_name'] = 'Etiket Düzenle';
$data['data_breadcrumb']['second_page_class'] = 'fa fa-pencil';
$data['data_breadcrumb']['second_page_url'] = '#';Fakat template.php'de yani ilk attığım ana kod blogunda sadece
include dosyası içerisindeki
breadcrumb.php'nin çağırıldığını görebilirsiniz. Ana kod blogunda yani
template.php'de
$data['data_breadcrumb]'ın alt indisleri olarak tanımladığımız veriler görünmüyor. Bu veriler
template.php içerisinden çağırdığımız
breadcrumb.php'de şu şekilde kullanılıyor;
<section class="content-header">
<h1>
<?php if (isset($dynamic_header)) {echo $dynamic_header;} ?>
<small></small>
</h1>
<ol class="breadcrumb">
<li><a href="<?php echo base_url('ey-admin'); ?>"><i class="fa fa-home"></i> Yönetim Paneli Anasayfası</a></li>
<?php if (isset($data_breadcrumb['first_page_name'])): ?>
<li><a href="<?php echo $data_breadcrumb['first_page_url'] ?>"><i class="<?php echo $data_breadcrumb['first_page_class'] ?>"></i> <?php echo $data_breadcrumb['first_page_name'] ?></a></li>
<?php endif ?>
<?php if (isset($data_breadcrumb['second_page_name'])): ?>
<li><a href="<?php echo $data_breadcrumb['second_page_url'] ?>"><i class="<?php echo $data_breadcrumb['second_page_class'] ?>"></i> <?php echo $data_breadcrumb['second_page_name'] ?></a></li>
<?php endif ?>
</ol>
</section>Yani
$data arrayinin değerlerini ve alt değerlerini hemen load ettiğiniz view dosyası olan
template.php'de kullanmak durumunda değilsiniz, onun da kendi içinde çağırdığınız diğer include edilen php dosyalarında kullabilirsiniz. Yukarıdaki örnekte veriler,
template.php'den çağırılmış
breadcrumb.php'de kullanılmıştır.