Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Tạo blade template như trong Laravel

23:59 05-05-2017 981 lượt xem 0 bình luận 17:38 19-01-2018

E đang thử tạo 1 blade template như trong laravel. E có thử làm ntn:

E tạo 1 file FT_View_Loader có class FT_View_Loader với 2 hàm là extends_layout và include_layout:

public function extends_layout($view, $data = [])
/* có 2 tham số chính $view để gọi đến đường dẫn, $data để truyền vào dữ liệu */
{

    /* e truyền vào $view = layout.index */
	$view = implode('/', explode('.', $view));

    /* hàm sẽ gọi đến file abcdef/layout/index.php
	require_once PATH_APPLICATION . '/views/' . $view . '.php';

    // Nếu tồn tịa layout cha cần extends như trong laravel
	if(isset($view_extends))
	{
		$view_extends = implode('/', explode('.', $view_extends));
		ob_start();
		require_once PATH_APPLICATION . '/views/' . $view_extends . '.php';
		$content = ob_get_clean();
		$this->__content = $content;
	}
}

Đây là file giao diện trang chủ của e

<?php

// E cho biến view extends = layout. Lúc đấy hàm extends_layout sẽ gọi đến file layout của e
$view_extends = 'layout';


$title['en'] = 'Tobacconomics';
$title['vi'] = 'Công nghiệp thuốc lá';
ob_start();
?>

<link rel="stylesheet" type="text/css" href="/redirect?Id=JqvEaKXOBeKOzjQcNWUrmYIHuWrKQMCIst5cwpflPtbu8SknEfMAhEL%2fSqqgaZo2"
<script type="text/javascript" src="./public/assets/js/index.js"></script>

<?php
$files = ob_get_clean(); // Biến file sẽ bằng những đoạn code link vs script ở trên
ob_start();
$this->include_layout('front.header');
?>

<section class="homepage-body-container">
	<?php $this->include_layout('front.slide'); ?>
</section>

<?php
$content = ob_get_clean(); // Biến content sẽ bằng code trong file header
?>
//File layouts
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title><?= isset($title) ? $title[LANG] : ''?></title>
	<link rel="stylesheet" type="text/css" href="/redirect?Id=JqvEaKXOBeKOzjQcNWUrmdTIHov6zXw8LknhxI2mCOhT9JxMQrFAqqyGPX%2fQ0Op8H6egM7VhMnWV51Kr675bxQ%3d%3d"
	<link rel="stylesheet" type="text/css" href="/redirect?Id=JqvEaKXOBeKOzjQcNWUrme%2b1Qs4QjW47%2fhzdO5kTwtFnoRZqMK6qONl2faqXd4mv46fUSlwsA8%2bkstPVzJgLBw%3d%3d"
	<script type="text/javascript" src="./public/jquery/jquery-3.2.1.min.js"></script>
	<script type="text/javascript" src="./public/bootstrap/js/bootstrap.min.js"></script>
	<?= isset($files) ? $files : ''?> 
</head>
<body>
	<div class="container-fluid">
		<?= isset($content) ? $content : ''?>
	</div>
</body>
</html>

 

A chị nào cho e hỏi cách e làm như trên thì liệu có ổn và dễ sử dụng ko ạ. Hoặc a chị nào có ý tưởng hay hơn có thể chia sẻ cho em được ko ạ. E xin cảm ơn

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập

Câu hỏi mới nhất