ورود

View Full Version : مستر پیج به روش ASP.NET MVC در CodeIgniter



sinakordi
چهارشنبه 26 آبان 1395, 21:20 عصر
سلام
اینجا روش شبیه سازی مستر پیج در ASP.NET MVC رو در کد ایگنیتر رو براتون پیاده کردم

میدونید که در asp با صدا کردن رندر ویو ، asp میره در پوشه ویو ها و در پوشه ای هم نام کنترلر و ویو ای رو هم نام اکشن متد در کنترلر پیدا میکنه و رندر میکنه

در اینجا ما میخوایم کدایگنیتر رو مجبور کنیم که همانطور برای ما عمل کنه و با پوشه بندی و تعیین نام ها و صدا کردن یک متد کار خودکار انجام بشه و ویو و لی اوت مون لود بشه

1- در آدرس ویو ها (application\views) فایلی با این نام _start_view.php ایجاد میکنیم و محتوای زیر رو توش ذخیره میکنیم



<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$content=$this->load->view($this->router->fetch_class().'/'.$this->router->fetch_method().'_view','',TRUE);
$this->load->view($this->_ci_cached_vars['layout'],['content'=>$content]);
?>



2- در همون آدرس فایل لی اوت مورد نظر رو میسازیم مثلا _layout.php و محتوای اون رو مثل زیر ذخیره می کنیم



<?php
defined('BASEPATH') OR exit('No direct script access allowed');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title><?= !isset($title) ? '' : $title ?></title>
<!-- start head_content -->
<?= !isset($head_content) ? '' : $head_content ?>
<!-- end head_content -->
<!-- start head_css -->
<style>
<?= !isset($head_css)?'':$head_css ?>
</style>
<!-- end head_css -->
<!-- start head_js -->
<script>
<?= !isset($head_js) ? '' : $head_js?>
</script>
<!-- end head_js -->
</head>
<body>
<div id="content">
<?= $content ?>
</div>
<!-- start end_content -->
<?= !isset($end_content) ? '' : $end_content ?>
<!-- end end_content -->
<!-- start end_js -->
<script>
<?= !isset($end_js) ? '' : $end_js?>
</script>
<!-- end end_js -->
</body>
</html>



3- در فایل ویو هم که مورد نظر هست در پوشه ای با نام کنترلر و نام متد موجود در کنترلر + _view در انتهای نام و محتوای زیر ایجاد میکنیم(در اینجا در پوشه application\views\Home فایلی با نام index_view.php ایجاد کردیم)



<?php
defined('BASEPATH') OR exit('No direct script access allowed');
!empty($layout)?:$this->_ci_cached_vars['layout']='_layout';
?>
index_view



4- در فایل کنترلر (در اینجا Home.php) محتوای زیر رو می نویسیم



<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Home extends CI_Controller {
public function index()
{
$this->load->view('_start_view',['layout'=>'_layout']);
}
}



5- با مراجعه به آدرس home میبینید که ویو همراه مستر پیجش (لی اوت) لود میشه


در این روش شما هم میتونید مستر پیج رو در ویو تعیین کنید هم در متد درون کنترلر و یا اینکه کلاً بدون صدا کردن ویو استارت ویو رو به روش قدیمی لود کنید

فایل های تغییر یافته در ضمیمه هست