| 제목 | 라라벨의 블레이드 템프레이트 엔진을 가져와 적용해 봤습니다. | ||
|---|---|---|---|
| 글쓴이 | 호짱 | 작성시각 | 2017/09/13 08:36:30 |
|
|
|||
|
우선 블레이드를 라라벨 없이 사용가능한 컴포넌트를 받아 오토로드 합니다. 컴포저가 설치됐다는 가정 하에 커멘드라인에서 컴포넌트 설치. $ composer require duncan3dc/blade 패키지스트 : https://packagist.org/packages/duncan3dc/blade 깃허브 : https://github.com/duncan3dc/blade
컴포저 오토로드 후. 블레이드 컴포넌트를 CI 컨트롤러 안에서 사용할 수 있게 라이브러리를 만듭니다. <라이브러리 예제>
<?php
defined("BASEPATH") OR exit("No direct script access allowed");
use duncan3dc\Laravel\BladeInstance;
use duncan3dc\Laravel\Blade as coreBlade;
class Blade extends coreBlade {
public static $ci;
public function __construct()
{
self::$ci =& get_instance();
// view파일 경로, cache파일 경로를 지정하기 위해 BladeInstance 객체 생성 후 코어 클레스에 인스턴스 지정
// ex) BladeInstance(view 경로: application/views, cache 경로: application/cache/balde/views)
// Blade 문법으로 작성된 view는 렌더링 후 cache 경로에 php문법으로 변환하여 저장된다.
// cache 경로는 777 or 707 권한부여
parent::setInstance(new BladeInstance(APPPATH . "views", APPPATH . "cache/blade/views"));
}
public static function __callStatic($method, array $args)
{
// render method는 실행 전 파라미터 값 무결성, Blade view 파일 존재 유무 확인.
if ($method == "render") {
if (is_array($args) && count($args) == 2 && is_string($args[0]) && !empty($args[0]) && is_array($args[1])) {
if (file_exists(APPPATH . "views/" . $args[0] . ".blade.php")) {
// 렌더링된 view 정보를 CI output 결과에 주입.
return self::$ci->output->set_output(parent::render(...$args));
} else {
return self::$ci->output->set_content_type("text/html")->set_output("<p>blade view 파일이 없습니다.</p>");
}
} else {
return self::$ci->output->set_content_type("text/html")->set_output("<p>파라미터 값이 잘못 입력되었습니다.</p>");
}
} else {
// render method를 제외한 method는 바로 실행.
return parent::$method(...$args);
}
}
}
컨트롤러에 로드 후 사용 <컨트롤러 예제>
<?php // controller
defined('BASEPATH') OR exit('No direct script access allowed');
class Ctrler extends CI_Controller
{
public function __construct()
{
$this->load->library->("blade");
}
public function index($data)
{
$data["ex_var"] = "예제변수";
blade::render("view", $data); // view.blade.php
}
}
<뷰 예제>
// ------ view.blade.php
@extends('layouts.app')
@section('title', 'Page Title')
@section('sidebar')
@parent
<p>This is appended to the master sidebar.</p>
{{ blade::$ci->session->userdata("something") }}
{{ blade::$ci->input->get("something") }}
@endsection
@section('content')
<p>This is my body content.</p>
{{ $ex_var }}
@endsection
<레이아웃 예제>
<html>
<head>
<title>App Name - @yield('title')</title>
</head>
<body>
@section('sidebar')
This is the master sidebar.
@show
{{ blade::$ci->session->userdata("something") }}
{{ blade::$ci->input->get("something") }}
<div class="container">
@yield('content')
</div>
</body>
</html>
그럼 불코하세요~ 그리고 라라벨 블레이드 템플레트 엔진 메뉴얼 입니다. https://laravel.kr/docs/5.5/blade
오류나 부족한 부분있으면 댓글주세요~ |
|||
| 태그 | 템플레이트 엔진,블레이드,라라벨 | ||
| 관련링크 |
https://github.com/duncan3dc/blade https://laravel.kr/docs/5.5/blade http://khanorder.tistory.com/entry/ci-blade |
||
| 다음글 | post 한글 일본어 utf-8 깨짐 (1) | ||
| 이전글 | 세션 redirect 끊김 (1) | ||
|
곰멍
/
2017/09/13 08:39:17 /
추천
0
좋은 정보 감사합니다~
|
|
한대승(불의회상)
/
2017/09/13 08:39:24 /
추천
0
라라벨 블레이드 템플릿 기능을 코드이그나이터에서도 사용 가능하게 되었네요. ^^ 좋은 정보 감사 합니다. |
|
변종원(웅파)
/
2017/09/13 09:06:45 /
추천
0
정보 감사합니다.
|