CI 묻고 답하기

제목 ci4 layout에서 php 데이타 사용 관련 문의드립니다.
카테고리 CI 4 관련
글쓴이 글링 작성시각 2024/12/31 18:09:36
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 209   RSS

매뉴얼에 있는대로 

$this->extend('/default');

로 레이아웃 파일을 만들어서 레이아웃을 사용중입니다.

 

레이아웃 파일인 default.php에서 세션, 모델에서 가져온 데이타 등을 사용해야 하는데,

세션은 $_SESSION으로 사용이 가능해서 일단 그걸로 사용중입니다.

문제는 모델에서 가져온 데이타를 사용해야 하는데,

예전에 ci3에서는 $CI라는 전역변수가 있어서 $CI->config에 넣으면 어디서든 사용이 가능했던걸로 기억하는데,

ci4에서는 이것과 같은 $CI 같은 전역변수가 있는지 문의드립니다.

 

현재 계획은 config의 event.php에서 

Events::on('pre_system', static function () {

넣거나

BaseController 의 initController() 

넣어서  전역변수에 메뉴를 넣고, 레이아웃 파일에서 사용 하는 것입니다.

 

안되면 메뉴를 세션에 넣어서라도 사용해야 할 것 같긴 하지만,

다른 방법이 있는지 문의 드립니다.

 

 이전글 게시판 페이징처리 질문 보완해서 올립니다, (2)

댓글

PureAni / 2025/01/01 12:01:55 / 추천 1

여러가지 방법이 있습니다.

 

1. http://ci4doc.cikorea.net/general/common_functions.html?highlight=view#view

페이지 부분 호출에 view 함수를 사용하시는 경우 위 URL에서 data 에 넣습니다.

 

2. view 를 사용 안하시는경우..

Controller 에서 \Config\Services::renderer()->setData(['a'=>'b'], 'raw'); 를 사용해서 layout 에서 사용할 데이터를 직접 넣어줍니다.

 

3. 메뉴가 고정적이라면, Config 폴더에서 파일을 생성해서 사용도 가능합니다.

http://ci4doc.cikorea.net/general/configuration.html

/app/Config/Navigation.php 를 생성 후, 메뉴를 설정합니다.

<?php
namespace App\Config;

class Navigation
{
    public array navigation = [
        [
            'name' => 'Menu 1',
            'url' => 'menu 1 url',
        ],
        [
            'name' => 'Menu 2',
            'url' => 'menu 2 url'
        ],
    ];
}

레이아웃 파일에서는 아래와 같이 사용합니다.

<?php
$navigation = config('Navigation');
echo print_r($navigation);

 

글링 / 2025/01/02 11:05:21 / 추천 0
3번 방식이 딱 제가 원하는 방식이네요. 답변 감사합니다. 덕분에 완벽하게 처리 되었어요.