반응형
컨트롤러 (Controller)
출처:
http://ci4doc.cikorea.net/incoming/controllers.html
'Helloworld.php' 컨트롤러 파일의 이름은 대문자 로 시작
example.com/class/method/ID
- 첫 번째 세그먼트는 호출해야 하는 컨트롤러 클래스를 나타냄
- 두 번째 세그먼트는 호출해야 할 클래스 메소드를 나타냄
- 세 번째 세그먼트와 추가 세그먼트는 컨트롤러에 전달될 ID 및 변수를 나타냄
형식
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class Helloworld extends Controller
{
public function index()
{
echo 'Hello World!';
}
}
컨트롤러 클래스 이름은 대문자로 시작해야 하며, 첫번째 문자만 대문자로 표기 해야함
올바른 예
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class Helloworld extends Controller {
}
틀린 예
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class helloworld extends Controller {
}
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class HelloWorld extends Controller {
}
메소드
URI의 두 번째 세그먼트가 일반적으로 메소드를 나타내며 만약 비어 있다면 "index" 메소드가 항상 기본적으로 로드됨
example.com/index.php/helloworld/index/
example.com/index.php/helloworld/comment/
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class Helloworld extends Controller
{
public function index()
{
echo 'Hello World!';
}
public function comment()
{
echo 'I am not flat!';
}
}
메소드에 URI 세그먼트 전달
example.com/index.php/products/shoes/sandals/123
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class Products extends Controller
{
public function shoes($sandals, $id)
{
echo $sandals;
echo $id;
}
}
기본 컨트롤러 지정
기본 컨트롤러를 지정하려면 app/Config/Routes.php 에서 수정
$routes->setDefaultController('Helloworld');
비공개 메서드
protected function utility()
{
// some code
}
컨트럴에 포함된 속성
모든 컨트롤러는 CodeIgniter\Controller 클래스를 확장
Request Object
$this->request 속성 제공
Response Object
$this->response 속성 제공
Logger Object
$this->logger 속성 제공
forceHTTPS
if (! $this->request->isSecure())
{
$this->forceHTTPS();
}
컨트럴에서 헬퍼사용
컨트롤러가 로드될 때마다 정의된 헬퍼도 자동으로 로드
컨트롤러 내부의 어느 위치에서든 헬퍼에 정의된 메소드를 사용할 수 있음
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class MyController extends Controller
{
protected $helpers = ['url', 'form'];
}
데이터 검증
public function updateUser(int $userID)
{
if (! $this->validate([
'email' => "required|is_unique[users.email,id,{$userID}]",
'name' => 'required|alpha_numeric_spaces'
]))
{
return view('users/update', [
'errors' => $this->validator->getErrors()
]);
}
// do something here if successful...
}
'CI4' 카테고리의 다른 글
[코드이그나이터] IncomingRequest Class (0) | 2020.09.04 |
---|---|
[코드이그나이터] 요청(Request) Class (0) | 2020.09.03 |
[코드이그나이터] 모듈화 (0) | 2020.09.03 |
[코드이그나이터] AJAX Requests (0) | 2020.09.02 |
[코드이그나이터] 웹 페이지 캐싱(caching) (0) | 2020.09.02 |