| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- namespace Dcat\Admin\Http\Controllers;
- use Dcat\Admin\Admin;
- use Dcat\Admin\Contracts\LazyRenderable;
- use Dcat\Admin\Support\Helper;
- use Illuminate\Http\Request;
- class RenderableController
- {
- public function handle(Request $request)
- {
- $this->initTranslation($request);
- $renderable = $this->newRenderable($request);
- if (method_exists($renderable, 'passesAuthorization') && ! $renderable->passesAuthorization()) {
- return $renderable->failedAuthorization();
- }
- $this->addScript();
- $this->forgetDefaultAssets();
- return $this->render($renderable);
- }
- protected function render(LazyRenderable $renderable)
- {
- $asset = Admin::asset();
- return Helper::render($renderable->render())
- .Admin::html()
- .$asset->jsToHtml()
- .$asset->cssToHtml()
- .$asset->scriptToHtml()
- .$asset->styleToHtml();
- }
- protected function initTranslation(Request $request)
- {
- if ($path = $request->get('_trans_')) {
- Admin::translation($path);
- }
- }
- protected function newRenderable(Request $request): LazyRenderable
- {
- $class = $request->get('renderable');
- $class = str_replace('_', '\\', $class);
- $renderable = new $class();
- $renderable->payload($request->all());
- if (method_exists($renderable, 'requireAssets')) {
- $renderable->requireAssets();
- }
- return $renderable;
- }
- protected function addScript()
- {
- // 等待JS脚本加载完成
- Admin::script('Dcat.wait()', true);
- }
- protected function forgetDefaultAssets()
- {
- Admin::baseJs([], false);
- Admin::baseCss([], false);
- Admin::fonts([]);
- }
- }
|