Presenter
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
Create a new instance.
get ViewFactory
get request
get menu config
get skin handler
get theme handler
get settings handler
get settings handler
get renderer
set skin class name
set settings skin class name
render 방식 설정 $type [ 'all' => theme, skin 처리 'content' => content 만 render ]
render 방식을 content 로 설정
render 방식을 content 로 설정
Add a piece of shared data to the environment.
get shared
출력 처리할 renderer 반환 api 지원 안함
API 지원하는 renderer 반환 html 지원 안하지 않고 api만 처리 할 경우 사용
api, html 모두 지원하는 renderer 반환
xeRedirect() 메소드와 같은 형태의 파라메터 사용
get id
set id
get shared data
set shared data
get skin target id
get is settings support
get render type
Presenter Package 는 JsonRenderer, HtmlRenderer 를 지원한다.
html, api 사용 유무 설정
API로 출력 사용 유무 설정
HTML로 출력 사용 유무 설정
render 할 수 있도록 허용된 요청 fotmat인가?
Details
at line 207
__construct(Factory $viewFactory, Request $request, ThemeHandler $themeHandler, SkinHandler $skinHandler, SettingsHandler $settingsHandler, InstanceConfig $instanceConfig)
Create a new instance.
at line 228
Factory
getViewFactory()
get ViewFactory
at line 238
Request
getRequest()
get request
at line 248
InstanceConfig
getInstanceConfig()
get menu config
at line 258
SkinHandler
getSkinHandler()
get skin handler
at line 268
ThemeHandler
getThemeHandler()
get theme handler
at line 279
SettingsHandler
getManageHandler()
get settings handler
at line 290
SettingsHandler
getSettingsHandler()
get settings handler
at line 302
void
register(string $format, Closure $callback)
register presentable classes
at line 313
Presentable
getPresenter(string $format)
get renderer
at line 324
void
setSkinTargetId(string $skinTargetId)
set skin class name
at line 335
void
setSettingsSkinTargetId(string $skinTargetId)
set settings skin class name
at line 352
void
renderType(string $type = self::RENDER_ALL)
render 방식 설정 $type [ 'all' => theme, skin 처리 'content' => content 만 render ]
at line 363
void
htmlRenderPartial(bool $partial = true)
render 방식을 content 로 설정
at line 378
void
htmlRenderPopup(bool $popup = true)
render 방식을 content 로 설정
at line 394
null|array
share(mixed $key, mixed $value = null)
Add a piece of shared data to the environment.
at line 411
array
getShared()
get shared
at line 427
RendererInterface
make(string $id, array $data = array(), array $mergeData = array(), bool $html = true, bool $api = false)
출력 처리할 renderer 반환 api 지원 안함
at line 445
RendererInterface
makeApi(array $data = array(), array $mergeData = array())
API 지원하는 renderer 반환 html 지원 안하지 않고 api만 처리 할 경우 사용
at line 458
RendererInterface
makeAll(string $id, array $data = array(), array $mergeData = array())
api, html 모두 지원하는 renderer 반환
at line 473
RedirectResponse|Redirector
redirect(null $to = null, int $status = 302, array $headers = array(), null $secure = null, array $data = array())
xeRedirect() 메소드와 같은 형태의 파라메터 사용
at line 483
string
getId()
get id
at line 494
void
setId(string $id)
set id
at line 503
array
getData()
get shared data
at line 514
void
setData(array $data)
set shared data
at line 524
string
getSkinTargetId()
get skin target id
at line 534
bool
getIsSettings()
get is settings support
at line 544
string
getRenderType()
get render type
at line 555
protected RendererInterface
get()
Presenter Package 는 JsonRenderer, HtmlRenderer 를 지원한다.
Xpressengine 은 Register Container 로 등록된 Renderer 를 사용한다.
at line 586
private void
setUse(bool $html, bool $api)
html, api 사용 유무 설정
at line 598
private void
setApi(bool $use = true)
API로 출력 사용 유무 설정
at line 609
private void
setHtml(bool $use = true)
HTML로 출력 사용 유무 설정
at line 620
private bool
isApproveFormat(string $format)
render 할 수 있도록 허용된 요청 fotmat인가?