RenderableController.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace Dcat\Admin\Controllers;
  3. use Dcat\Admin\Admin;
  4. use Dcat\Admin\Support\Helper;
  5. use Dcat\Admin\Support\LazyRenderable;
  6. use Illuminate\Http\Request;
  7. class RenderableController
  8. {
  9. /**
  10. * @param Request $request
  11. *
  12. * @return mixed|string
  13. */
  14. public function handle(Request $request)
  15. {
  16. $renderable = $this->newRenderable($request);
  17. $renderable::collectAssets();
  18. $this->addScript();
  19. $this->forgetDefaultAssets();
  20. return $this->render($renderable);
  21. }
  22. protected function render(LazyRenderable $renderable)
  23. {
  24. $asset = Admin::asset();
  25. return Helper::render($renderable->render())
  26. .Admin::html()
  27. .$asset->jsToHtml()
  28. .$asset->cssToHtml()
  29. .$asset->scriptToHtml()
  30. .$asset->styleToHtml();
  31. }
  32. protected function newRenderable(Request $request)
  33. {
  34. $class = $request->get('renderable');
  35. $class = str_replace('_', '\\', $class);
  36. return new $class($request->all());
  37. }
  38. protected function addScript()
  39. {
  40. Admin::script('Dcat.pjaxResponded()', true);
  41. }
  42. protected function forgetDefaultAssets()
  43. {
  44. Admin::baseJs([]);
  45. Admin::baseCss([]);
  46. Admin::fonts([]);
  47. }
  48. }