config.tpl 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. @extends('admin.master')
  2. @section('title', '示例插件的配置页')
  3. @section('content')
  4. {{-- 使用 plugin_assets($pluginId, $relativeUri) 加载插件目录下的文件 --}}
  5. {{-- plugin($pluginId)->assets($relativeUri) 效果相同 --}}
  6. {{-- 请不要使用带固定的 插件所在目录名 路径的方式加载 --}}
  7. <script type="text/javascript" src="{{ plugin_assets('example-plugin', 'assets/js/example2.js') }}"></script>
  8. <!-- Content Wrapper. Contains page content -->
  9. <div class="content-wrapper">
  10. <!-- Content Header (Page header) -->
  11. <section class="content-header">
  12. <h1>
  13. 示例插件
  14. <small>Example Plugin</small>
  15. </h1>
  16. </section>
  17. <!-- Main content -->
  18. <section class="content">
  19. <?php
  20. /**
  21. * 通过 OptionForm,你可以仅使用几行代码生成一个配置页面
  22. */
  23. $form = Option::form('unique_id', '配置标题', function($form) {
  24. $form->text('example_plugin_text', '文本框')
  25. ->hint('通过 hint 方法可以在这里添加提示');
  26. $form->checkbox('example_plugin_checkbox', '这是复选框')->label('这是复选框的标签');
  27. $form->checkbox('example_plugin_checkbox2', '禁用元素')->label('按 E 可赛艇')->disabled();
  28. $form->select('example_plugin_select', '下拉选择框')
  29. ->option('0', '蛤蛤蛤')
  30. ->option('1', '戳木娘')
  31. ->option('2', '你好啊')
  32. ->description('通过 <code>description</code> 方法可以在这里添加描述');
  33. $form->group('example_plugin_group', '这是 Input Group')
  34. ->text('example_plugin_group')->addon('个智障');
  35. $form->textarea('example_plugin_textarea', '这是 Textarea')->rows(10)->value('
  36. 目前 OptionForm 支持这些 input 元素:["text", "checkbox", "textarea", "select", "group"]
  37. $form->{input}() 得到的 OptionItem 实例支持链式调用
  38. ==============================
  39. 你可以使用 value 方法手动设定各个 OptionItem 的值
  40. 如果没有设置,OptionForm 将会从 options 表中通过 id 寻找并自动赋值
  41. 可以通过 with 方法手动绑定数据到表单上,自动赋值时会优先从这里寻找
  42. id 为 xxx[yy] 格式的 option 将会被自动转化为数组并序列化存入数据库
  43. ==============================
  44. 定义完 OptionForm 后不要忘记执行 handle 方法,否则不会响应 POST 请求
  45. 这个方法在哪里执行都可以,在一处定义,另一处执行也没关系
  46. ==============================
  47. OptionForm 有许多定制方法:
  48. type:修改表单外 box 的边框颜色,支持 ["default", "primary", "success", "info", "warning", "danger"]
  49. addButton:添加按钮到表单底部
  50. addMessage:添加信息提示到表单顶部
  51. always:设置一个表单渲染之前总会被执行的回调
  52. renderWithOutTable:不要用 table 元素包裹 OptionItem
  53. renderInputTagsOnly:只渲染 input 等元素,不渲染左边的标题
  54. renderWithOutSubmitButton:不渲染「提交」按钮
  55. 注意:定制完毕后都要使用 render 方法渲染表单
  56. ')->disabled();
  57. })->addMessage('更多示例请查看 稍后给出,蟹蟹')->handle();
  58. ?>
  59. {{-- 在 Blade 模板引擎中渲染表单 --}}
  60. {!! $form->render() !!}
  61. <div class="box">
  62. <div class="box-header with-border">
  63. <h3 class="box-title">README.md(此文件在插件根目录下)</h3>
  64. </div><!-- /.box-header -->
  65. <div class="box-body table-responsive">
  66. <?php
  67. $path = app('plugins')->getPlugin('example-plugin')->getPath()."/README.md";
  68. $markdown = @file_get_contents($path);
  69. if (!$markdown) {
  70. echo "<p>无法加载 README.md</p>";
  71. } else {
  72. echo app('parsedown')->text($markdown);
  73. }
  74. ?>
  75. </div>
  76. </div>
  77. </section><!-- /.content -->
  78. </div><!-- /.content-wrapper -->
  79. @endsection