class Presenter

Presenter

  • Response 할 때 View 대체해서 사용
  • request 에 따라 response 를 컨트롤
  • 출력할 때 스킨, 테마, 메뉴 사용
  • Controller 에 출력에 대해서 API 지원에 따라 코드를 다시 작성해야하는 문제에 대응, Presenter 설정에 따라 출력 방식을 결정할 수 있음

App binding

  • xe.presenter 로 바인딩 되어 있음
  • Presenter facade 제공

사용법

스킨 사용 등록

// 사용자 스킨 사용
XePresenter::setSkinTargetId('skin-target-id');

// 관리자 스킨 사용
XePresenter::setSettingsSkinTargetId('skin-target-id');

Html 형식만 지원

public controllerMethodName()
{
     ... 생략 ...
     return XePresenter::make('skin.view.name');
}

Api(json) 형식만 지원 할 경우

public controllerMethodName()
{
     ... 생략 ...
     return XePresenter::makeApi(['data']);
}

모든 형식을 지원 할 경우

public controllerMethodName()
{
     ... 생략 ...
     return XePresenter::makeAll('skin.view.name');
}

Constants

RENDER_ALL

render type

RENDER_POPUP

render type

RENDER_CONTENT

render type

Properties

protected string $id output id
protected array $shared Data that should be available to all templates.
protected array $data Data that should be available at current presentable
protected bool $isSettings is settings present
protected string $skinTargetId skin class name
protected string $type
protected Factory $viewFactory
protected Request $request
protected ThemeHandler $themeHandler
protected SkinHandler $skinHandler
protected SettingsHandler $settingsHandler
protected InstanceConfig $instanceConfig
protected bool $api is support api
protected bool $html is support html
protected array $presentables registered presentable instance

Methods

__construct(Factory $viewFactory, Request $request, ThemeHandler $themeHandler, SkinHandler $skinHandler, SettingsHandler $settingsHandler, InstanceConfig $instanceConfig)

Create a new instance.

Factory
getViewFactory()

get ViewFactory

Request
getRequest()

get request

getInstanceConfig()

get menu config

getSkinHandler()

get skin handler

getThemeHandler()

get theme handler

getManageHandler()

get settings handler

getSettingsHandler()

get settings handler

void
register(string $format, Closure $callback)

register presentable classes

getPresenter(string $format)

get renderer

void
setSkinTargetId(string $skinTargetId)

set skin class name

void
setSettingsSkinTargetId(string $skinTargetId)

set settings skin class name

void
renderType(string $type = self::RENDER_ALL)

render 방식 설정 $type [ 'all' => theme, skin 처리 'content' => content 만 render ]

void
htmlRenderPartial(bool $partial = true)

render 방식을 content 로 설정

void
htmlRenderPopup(bool $popup = true)

render 방식을 content 로 설정

null|array
share(mixed $key, mixed $value = null)

Add a piece of shared data to the environment.

array
getShared()

get shared

make(string $id, array $data = array(), array $mergeData = array(), bool $html = true, bool $api = false)

출력 처리할 renderer 반환 api 지원 안함

makeApi(array $data = array(), array $mergeData = array())

API 지원하는 renderer 반환 html 지원 안하지 않고 api만 처리 할 경우 사용

makeAll(string $id, array $data = array(), array $mergeData = array())

api, html 모두 지원하는 renderer 반환

redirect(null $to = null, int $status = 302, array $headers = array(), null $secure = null, array $data = array())

xeRedirect() 메소드와 같은 형태의 파라메터 사용

string
getId()

get id

void
setId(string $id)

set id

array
getData()

get shared data

void
setData(array $data)

set shared data

string
getSkinTargetId()

get skin target id

bool
getIsSettings()

get is settings support

string
getRenderType()

get render type

get()

Presenter Package 는 JsonRenderer, HtmlRenderer 를 지원한다.

void
setUse(bool $html, bool $api)

html, api 사용 유무 설정

void
setApi(bool $use = true)

API로 출력 사용 유무 설정

void
setHtml(bool $use = true)

HTML로 출력 사용 유무 설정

bool
isApproveFormat(string $format)

render 할 수 있도록 허용된 요청 fotmat인가?

Details

at line 207
__construct(Factory $viewFactory, Request $request, ThemeHandler $themeHandler, SkinHandler $skinHandler, SettingsHandler $settingsHandler, InstanceConfig $instanceConfig)

Create a new instance.

Parameters

Factory $viewFactory view factory
Request $request Request instance
ThemeHandler $themeHandler theme handler
SkinHandler $skinHandler skin handler
SettingsHandler $settingsHandler manage handler
InstanceConfig $instanceConfig menu config

at line 228
Factory getViewFactory()

get ViewFactory

Return Value

Factory

at line 238
Request getRequest()

get request

Return Value

Request

at line 248
InstanceConfig getInstanceConfig()

get menu config

Return Value

InstanceConfig

at line 258
SkinHandler getSkinHandler()

get skin handler

Return Value

SkinHandler

at line 268
ThemeHandler getThemeHandler()

get theme handler

Return Value

ThemeHandler

at line 279
SettingsHandler getManageHandler()

get settings handler

Return Value

SettingsHandler

at line 290
SettingsHandler getSettingsHandler()

get settings handler

Return Value

SettingsHandler

at line 302
void register(string $format, Closure $callback)

register presentable classes

Parameters

string $format format
Closure $callback closure for get presentable instance

Return Value

void

at line 313
Presentable getPresenter(string $format)

get renderer

Parameters

string $format renderer format

Return Value

Presentable

at line 324
void setSkinTargetId(string $skinTargetId)

set skin class name

Parameters

string $skinTargetId skin target id

Return Value

void

at line 335
void setSettingsSkinTargetId(string $skinTargetId)

set settings skin class name

Parameters

string $skinTargetId skin class name

Return Value

void

at line 352
void renderType(string $type = self::RENDER_ALL)

render 방식 설정 $type [ 'all' => theme, skin 처리 'content' => content 만 render ]

Parameters

string $type render type

Return Value

void

at line 363
void htmlRenderPartial(bool $partial = true)

render 방식을 content 로 설정

Parameters

bool $partial render to content

Return Value

void

at line 378
void htmlRenderPopup(bool $popup = true)

render 방식을 content 로 설정

Parameters

bool $popup render to popup

Return Value

void

at line 394
null|array share(mixed $key, mixed $value = null)

Add a piece of shared data to the environment.

Parameters

mixed $key key(string|array)
mixed $value value

Return Value

null|array

at line 411
array getShared()

get shared

Return Value

array

at line 427
RendererInterface make(string $id, array $data = array(), array $mergeData = array(), bool $html = true, bool $api = false)

출력 처리할 renderer 반환 api 지원 안함

Parameters

string $id skin output id
array $data data
array $mergeData merge data
bool $html use html
bool $api use api

Return Value

RendererInterface

at line 445
RendererInterface makeApi(array $data = array(), array $mergeData = array())

API 지원하는 renderer 반환 html 지원 안하지 않고 api만 처리 할 경우 사용

Parameters

array $data data
array $mergeData merge data

Return Value

RendererInterface

at line 458
RendererInterface makeAll(string $id, array $data = array(), array $mergeData = array())

api, html 모두 지원하는 renderer 반환

Parameters

string $id skin output id
array $data data
array $mergeData merge data

Return Value

RendererInterface

at line 473
RedirectResponse|Redirector redirect(null $to = null, int $status = 302, array $headers = array(), null $secure = null, array $data = array())

xeRedirect() 메소드와 같은 형태의 파라메터 사용

Parameters

null $to redirect url
int $status status code
array $headers header
null $secure secure
array $data data

Return Value

RedirectResponse|Redirector

at line 483
string getId()

get id

Return Value

string

at line 494
void setId(string $id)

set id

Parameters

string $id id

Return Value

void

at line 503
array getData()

get shared data

Return Value

array

at line 514
void setData(array $data)

set shared data

Parameters

array $data data

Return Value

void

at line 524
string getSkinTargetId()

get skin target id

Return Value

string

at line 534
bool getIsSettings()

get is settings support

Return Value

bool

at line 544
string getRenderType()

get render type

Return Value

string

at line 555
protected RendererInterface get()

Presenter Package 는 JsonRenderer, HtmlRenderer 를 지원한다.

Xpressengine 은 Register Container 로 등록된 Renderer 를 사용한다.

Return Value

RendererInterface

at line 586
private void setUse(bool $html, bool $api)

html, api 사용 유무 설정

Parameters

bool $html use or disuse
bool $api use or disuse

Return Value

void

at line 598
private void setApi(bool $use = true)

API로 출력 사용 유무 설정

Parameters

bool $use use or disuse

Return Value

void

at line 609
private void setHtml(bool $use = true)

HTML로 출력 사용 유무 설정

Parameters

bool $use use or disuse

Return Value

void

at line 620
private bool isApproveFormat(string $format)

render 할 수 있도록 허용된 요청 fotmat인가?

Parameters

string $format request format

Return Value

bool