2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

Cakephp 3.x 에 TwitterBootstrap 적용하는 방법

먼저, 여러가지 플러그인 중 하나를 선택한다.


이 중에서 friendsofcake 의 bootstrap-ui 를 선택(했다기 보다는 일본에서 예제로 본 것이 이것뿐임 ㅋ)했다고 가정함.

1. composer를 이용해서 플러그인을 어플리케이션 루트 폴더에 인스톨한다.
> command line
$ php composer.phar require friendsofcake/bootstrap-ui:dev-master

2. bootstrap.php 에 플러그인을 로드하는 코드를 추가한다.
> config/bootstrap.php
Plugin::load('BootstrapUI');

3. AppView.php에 Helper를 로드하는 코드를 추가한다.
> src/View/AppView.php
    public $layout = 'BootstrapUI.default';

    public function initialize()
    {
        $this->loadHelper('Html', ['className' => 'BootstrapUI.Html']);
        $this->loadHelper('Form', ['className' => 'BootstrapUI.Form']);
        $this->loadHelper('Flash', ['className' => 'BootstrapUI.Flash']);
        $this->loadHelper('Paginator', ['className' => 'BootstrapUI.Paginator']);
    }
* $layout 변수에 위와 같이 디폴트 값을 설정하면, BootstrapUI 플러그인의 디렉토리에 있는 src/Template/Layout/Default.ctp가 사용됨.

4. Layout 폴더에 있는 Default.ctp 파일에 필요한 js, css 파일을 추가해준다. (CDN도 가능하고 프로젝트의 webroot 폴더에 필요한 파일을 복사한 후 로컬로 링크를 걸어도 무방함.)
> vendor/friendsofcake/bootstrap-ui/src/Template/Layout/default.ctp
$this->prepend('css', $this->Html->css(['bootstrap/bootstrap']));
 ↓
$this->prepend('css', $this->Html->css(['//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css']));

$this->prepend('script', $this->Html->script(['jquery/jquery', 'bootstrap/bootstrap']));
 ↓
$this->prepend('script', $this->Html->script(['jquery/jquery', '//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js'])); 
* $layout 변수에 디폴트 값을 설정하지 않은 경우는 기존의 cakephp 의 Default.ctp 에 정의함.

5. 확인을 위해서 적당히 Test 컨트롤러와 뷰를 만들어 확인.(http://localhost/test)
> src/Controller/TestController.php
<?php
namespace App\Controller;

use App\Controller\AppController;

class TestController extends AppController
{

    public function index()
    {
    }
}
> src/Template/Test/index.ctp
<nav class="navbar navbar-inverse">
    <div class="container">
        <div class="navbar-header">
            <a class="navbar-brand" href="/">Bootstrap Test</a>
        </div>
    </div>
</nav>
<div class="container theme-showcase" role="main">
<?php
    echo $this->Form->create();
    echo $this->Form->input('textbox');
    echo $this->Form->input('select box', [
        'type' => 'select',
        'options' => [1, 2, 3]
    ]);
    echo $this->Form->input('radio', [
        'label' => 'radio',
        'type' => 'radio',
        'options' => [1, 2, 3]
    ]);
    echo $this->Form->input('checkbox', [
        'multiple' => 'checkbox',
        'options' => [1, 2, 3]
    ]);
    echo $this->Form->button('Submit', [
        'class' => 'btn btn-primary'
    ]);
    echo $this->form->end();
?>
</div>

* 원본 포스트에 의하면, https://github.com/friendsofcake/bootstrap-ui 의 업데이트가 꽤나 빠르고 빈번해서 기능이 추가되거나 revision이 갱신되면, 이전 버전을 쓸 수 없게 될 가능성이 있으므로 revision 을 고정하는 방법도 있다.
어플리케이션 폴더의 루트에 있는 composer.json 파일에 코드를 추가하는 것으로 고정이 가능함.
> composer.json
"require": {
    "friendsofcake/bootstrap-ui": "dev-master#27d320545f6c407a1679bf05b6d2e90227728278"
}

vendor/friendsofcake/bootstrap-ui/src/Template/Layout/examples/ 폴더 밑에 cover.ctp、dashboard.ctp、signin.ctp 샘플 레이아웃 파일이 있으므로 활용 가능함.

*http://bootstrapzero.com 에서 테마를 다운로드 받아서 디자인을 변경하는 방법도 있음.

댓글

이 블로그의 인기 게시물

성공적인 소셜커머스를 위한 10단계 전략

[C# & LINQ] 랜덤으로 데이터를 한 개 추출하는 방법

[메모] PostgreSQL에서 Insert 하는 경우 자동채번 PK가 중복에러 나는 경우