v1.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. namespace zin;
  3. class remotePicker extends wg
  4. {
  5. /**
  6. * @var mixed[]
  7. */
  8. protected static $defineProps = array(
  9. 'label?: string', // 控件标签。
  10. 'id?: string', // 控件 ID。
  11. 'name?: string="users[]"', // 控件名称。
  12. 'value?: string', // 控件默认值。
  13. 'type?: string="user"', // 控件类型。
  14. 'params?: string=""', // 额外参数,如user的pofirst。
  15. 'items?: string|array', // picker 列表项或列表项获取方法。
  16. 'menu?: array', // picker 附加的菜单选项。
  17. 'toolbar?: boolean|array', // picker 列表工具栏。
  18. 'multiple?: boolean|number=false', // picker 是否允许选择多个值,如果指定为数字,则限制多选的数目,默认 `false`。
  19. 'inputGroupClass?: string=""' // inputGroup 的 class 属性。
  20. );
  21. protected function created()
  22. {
  23. $items = $this->prop('items');
  24. if(!$items)
  25. {
  26. $type = $this->prop('type');
  27. $params = $this->prop('params') ? $this->prop('params') : 'noclosed,nodeleted';
  28. switch($type)
  29. {
  30. case 'user':
  31. $items = createLink('user', 'ajaxGetItems', 'params=' . $params);
  32. break;
  33. case 'casestories':
  34. $items = createLink('story', 'ajaxGetCaseStories', $params);
  35. break;
  36. default:
  37. $items = createLink('user', 'ajaxGetItems', 'params=' . $params);
  38. break;
  39. }
  40. $this->setProp('items', $items);
  41. }
  42. if(!$this->prop('id')) $this->setProp('id', '_' . $this->prop('name'));
  43. }
  44. protected function build()
  45. {
  46. return zui::picker(set::_class('form-group-wrapper picker-box'), set::_map(array('value' => 'defaultValue', 'formID' => 'id')), set($this->props->pick(array('id', 'name', 'value', 'items', 'toolbar', 'menu', 'multiple'))));
  47. }
  48. }