## app binding * xe.widget 으로 바인딩 되어 있음 * Widget Facade 제공 ## 생성자에서 필요한 항목들 * PluginRegister $register - 등록된 위젯 정보를 획득하기 위한 plugin register * GuardInterface $guard - 위젯을 render 할 때 현재 접속한 사용자의 권한을 확인하기 위한 guard * Factory $view - 렌더링을 하기위한 view factory ## 사용법 ### Widget Id 에 해당하는 클래스 이름 획득 php $handler->getClassName($id) ### Widget Id 에 해당하는 위젯 HTML 렌더링 코드 반환 * widget id 와 렌러링에 필요한 arguments param array 를 인자로 전달 php $handler->create($id, $args = []) ### Widget Id 에 설정 view form 반환 * 위젯 코드를 생성하기 위한 설정 화면에 대한 view form 반환 php $handler->setUp($id); ### 원하는 위젯 class List 반환 * filter 를 전달하여 원하는 widget class 정보를 획득한다 php $handler->getAll(callable $filter = null); ### Widget Id 에 해당하는 위젯 코드(custom xml)을 획득한다 * widget id 와 렌러링에 필요한 arguments param array 를 인자로 전달 php $handler->getGeneratedCode($id, array $inputs)
Author: XE Team (developers) (developers@xpressengine.com)
 /**
  * render
  *
  * @param WidgetHandler $widgetHandler
  *
  * @return mixed
  */
 public function render(WidgetHandler $widgetHandler)
 {
     $id = Input::get('widget');
     $args = Input::except('widget');
     $render = $widgetHandler->create($id, $args);
     return $render;
 }
 /**
  * testGetGeneratedCode
  *
  * @return void
  */
 public function testGetGeneratedCode()
 {
     $widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
     $id = 'fakeWidgetId';
     $inputs = ['args1' => 'value1', 'args2' => 'value2', 'args3' => 'value3'];
     $resultString = $widgetHandler->getGeneratedCode($id, $inputs);
     $this->assertEquals("<xewidget id='fakeWidgetId'><param title='args1'>value1</param><param title='args2'>value2</param><param title='args3'>value3</param></xewidget>", $resultString);
 }
 /**
  * testGetGeneratedCode
  *
  * @return void
  */
 public function testGetGeneratedCode()
 {
     $widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
     $id = 'fakeWidgetId';
     $inputs = ['args1' => 'value1', 'args2' => 'value2', 'args3' => 'value3'];
     $this->register->shouldReceive('get')->with('widget/' . $id)->andReturn($this->fakeWidgetClassName);
     $resultString = $widgetHandler->generateCode($id, $inputs);
     $expected = "<xewidget>\n  <args1>value1</args1>\n  <args2>value2</args2>\n  <args3>value3</args3>\n</xewidget>\n";
     $this->assertEquals($expected, $resultString);
 }