* html 으로 출력될 경우 사용 * Skin, Theme 를 출력할 수 있도록 지원
Author: XE Developers (developers@xpressengine.com)
Inheritance: implements Xpressengine\Presenter\Presentable
 /**
  * register presenter
  *
  * @return void
  */
 private function registerPresenter()
 {
     $this->app->singleton('xe.presenter', function ($app) {
         $proxyClass = $app['xe.interception']->proxy(Presenter::class, 'Presenter');
         /** @var \Xpressengine\Presenter\Presenter $presenter */
         $presenter = new $proxyClass($app['view'], $app['request'], $app['xe.theme'], $app['xe.skin'], $app['xe.settings'], InstanceConfig::instance());
         HtmlPresenter::setCommonHtmlWrapper(app('config')['xe.HtmlWrapper.common']);
         HtmlPresenter::setPopupHtmlWrapper(app('config')['xe.HtmlWrapper.popup']);
         /** @var \Xpressengine\Presenter\Presentable $htmlProxy */
         $htmlProxy = $app['xe.interception']->proxy(HtmlPresenter::class, 'HtmlRenderer');
         /** @var \Xpressengine\Presenter\Presentable $jsonProxy */
         $jsonProxy = $app['xe.interception']->proxy(JsonPresenter::class, 'JsonRenderer');
         $presenter->register($htmlProxy::format(), function (Presenter $presenter) use($htmlProxy) {
             return new $htmlProxy($presenter, app('xe.seo'), app('xe.widget.parser'));
         });
         $presenter->register($jsonProxy::format(), function (Presenter $presenter) use($jsonProxy) {
             return new $jsonProxy($presenter);
         });
         return $presenter;
     });
 }
示例#2
0
 /**
  * Presenter Package 는 JsonRenderer, HtmlRenderer 를 지원한다.
  * Xpressengine 은 Register Container 로 등록된 Renderer 를 사용한다.
  *
  * @return RendererInterface
  */
 protected function get()
 {
     $format = $this->request->format();
     if (isset($this->presentables[$format]) === false) {
         throw new NotFoundFormatException(['name' => $format]);
     }
     if ($format == HtmlPresenter::format() && $this->api === true && $this->html === false) {
         $format = JsonPresenter::format();
     }
     $presenter = $this->getPresenter($format);
     if (is_subclass_of($presenter, RendererInterface::class) === false && is_subclass_of($presenter, Presentable::class) === false) {
         throw new InvalidPresenterException(['name' => get_class($presenter)]);
     }
     return $presenter;
 }