自定义页面

Dcat Admin中构建自定义页面非常简单,可以参考如下两个例子

示例1

{tip} Dcat Admin构建的是一个单页应用,加载的JS脚本只会执行一次,所以初始化操作不能直接放在JS脚本中,应该使用Admin::script方法载入。

  1. <?php
  2. use Illuminate\Contracts\Support\Renderable;
  3. use Dcat\Admin\Admin;
  4. class MyPage implements Renderable
  5. {
  6. // 定义页面所需的静态资源,这里会按需加载
  7. public static $js = [
  8. // js脚本不能直接包含初始化操作,否则页面刷新后无效
  9. 'xxx/js/page.min.js',
  10. ];
  11. public static $css = [
  12. 'xxx/css/page.min.css',
  13. ];
  14. public function script()
  15. {
  16. return <<<JS
  17. console.log('所有JS脚本都加载完了');
  18. // 初始化操作写在这里
  19. JS;
  20. }
  21. public function render()
  22. {
  23. // 在这里可以引入你的js或css文件
  24. Admin::js(static::$js);
  25. Admin::css(static::$css);
  26. // 需要在页面执行的JS代码
  27. // 通过 Admin::script 设置的JS代码会自动在所有JS脚本都加载完毕后执行
  28. Admin::script($this->script());
  29. return view('admin.pages.my-page')->render();
  30. }
  31. }

视图admin.pages.my-page,注意视图代码里面不要包含<body><html>等标签

  1. <div>
  2. <h3>自定义页面演示</h3>
  3. </div>
  4. <script>
  5. Dcat.ready(function () {
  6. // js代码也可以放在模板里面
  7. console.log('所有JS脚本都加载完了!!!');
  8. });
  9. </script>

使用

  1. public function index(Content $content)
  2. {
  3. return $content->body(new MyPage());
  4. }

示例2

后台的仪表盘页面/admin,也可以看做是一个自定义页面,代码实现如下

  1. public function index(Content $content)
  2. {
  3. return $content
  4. ->header('Dashboard')
  5. ->description('Description...')
  6. ->body(function (Row $row) {
  7. $row->column(6, function (Column $column) {
  8. $column->row(Dashboard::title());
  9. $column->row(new Examples\Tickets());
  10. });
  11. $row->column(6, function (Column $column) {
  12. $column->row(function (Row $row) {
  13. $row->column(6, new Examples\NewUsers());
  14. $row->column(6, new Examples\NewDevices());
  15. });
  16. $column->row(new Examples\Sessions());
  17. $column->row(new Examples\ProductOrders());
  18. });
  19. });
  20. }