englishtokorea/web/app/Controllers/BaseController.php
2025-05-28 14:26:49 +09:00

127 lines
3.2 KiB
PHP

<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\HTTP\CLIRequest;
use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use Config\Database;
/**
* Class BaseController
*
* BaseController provides a convenient place for loading components
* and performing functions that are needed by all your controllers.
* Extend this class in any new controllers:
* class Home extends BaseController
*
* For security be sure to declare any new methods as protected or private.
*/
abstract class BaseController extends Controller
{
/**
* Instance of the main Request object.
*
* @var CLIRequest|IncomingRequest
*/
protected $request;
/**
* An array of helpers to be loaded automatically upon
* class instantiation. These helpers will be available
* to all other controllers that extend BaseController.
*
* @var list<string>
*/
protected $helpers = [];
/**
* Be sure to declare properties for any property fetch you initialized.
* The creation of dynamic property is deprecated in PHP 8.2.
*/
protected $session;
/**
* @return void
*/
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
// Do Not Edit This Line
parent::initController($request, $response, $logger);
// Preload any models, libraries, etc, here.
// E.g.: $this->session = \Config\Services::session();
// Load the form helper
// 세션 인스턴스 초기화
$this->session = session();
}
protected function view($view,$data=[],$option=[])
{
$html = view('layouts/_head_').view($view,$data,$option).view('layouts/_footer_');
return $html;
}
protected function checkLogin()
{
if (!$this->session->get('logged_in') || empty($this->session->get('logged_in'))) {
redirect()->to('/login')->send();
exit();
}
}
protected function checkLogout()
{
if ($this->session->get('logged_in')) {
redirect()->to('/')->send();
exit();
}
}
protected function checkLogin_ajax()
{
if ($this->session->get('logged_in')) {
return true;
}
return false;
}
protected function showQueries()
{
if (ENVIRONMENT !== 'development') {
return;
}
$queries = $this->session->get('queries') ?? [];
if (count($queries) === 0) {
return;
}
echo '<div style="background-color: #f8f9fa; border: 1px solid #ddd; padding: 10px; margin: 10px 0;">';
echo '<h3>Executed Queries</h3>';
echo '<ul>';
foreach ($queries as $query) {
echo '<li>' . htmlspecialchars($query) . '</li>';
}
echo '</ul>';
echo '</div>';
// 쿼리 로그 초기화
$this->session->remove('queries');
}
protected function jsConsoleLog($message)
{
// JavaScript 코드를 생성
echo "<script>console.log(" . json_encode($message) . ");</script>";
}
}