{"id":466,"date":"2021-05-07T07:53:03","date_gmt":"2021-05-07T07:53:03","guid":{"rendered":"http:\/\/robinluo.top\/?p=466"},"modified":"2021-05-07T07:53:03","modified_gmt":"2021-05-07T07:53:03","slug":"laravel-admin-%e6%b7%bb%e5%8a%a0%e6%96%87%e4%bb%b6%e5%af%bc%e5%85%a5","status":"publish","type":"post","link":"https:\/\/robinluo.top\/?p=466","title":{"rendered":"laravel-admin \u6dfb\u52a0\u6587\u4ef6\u5bfc\u5165"},"content":{"rendered":"\n<p>\u5b89\u88c5excel \u5305<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>composer require maatwebsite\/excel<\/code><\/pre>\n\n\n\n<p>\u65b0\u589e\u4e00\u4e2aaction\u64cd\u4f5c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan admin:action WeinpinhuiUser\/ImportAction --name=\"\u5bfc\u5165\"<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\r\n\r\nnamespace App\\Admin\\Actions\\WeinpinhuiUser;\r\n\r\nuse App\\Imports\\WeipinhuiUser\\ImportWeipinhuiUser;\r\nuse Encore\\Admin\\Actions\\Action;\r\nuse Encore\\Admin\\Facades\\Admin;\r\nuse Illuminate\\Http\\Request;\r\nuse Maatwebsite\\Excel\\Facades\\Excel;\r\n\r\n\r\nclass ImportAction extends Action\r\n{\r\n    protected $selector = '.import-action';\r\n\r\n    public function handle(Request $request)\r\n    {\r\n        \/\/ $request ...\r\n        try{\r\n            \/\/ $request ...\r\n            $file = $request-> file('file');\r\n            Excel::import(new ImportWeipinhuiUser(),$file);\r\n\r\n            return $this->response()->success('\u6570\u636e\u5bfc\u5165\u6210\u529f')->refresh();\r\n        }catch (\\Exception $e){\r\n            return $this->response()->error($e -> getMessage());\r\n        }\r\n\r\n    }\r\n\r\n    public function html()\r\n    {\r\n        return &lt;&lt;&lt;HTML\r\n        &lt;a class=\"btn btn-sm btn-default import-action\">\u5bfc\u5165&lt;\/a>\r\nHTML;\r\n    }\r\n\r\n    public function form()\r\n    {\r\n        $this\r\n            ->file('file', '\u8bf7\u9009\u62e9\u6587\u4ef6')\r\n            ->options(&#91;'showPreview' => false,\r\n                'allowedFileExtensions'=>&#91;'xlsx','xls'],\r\n                'showUpload'=>false\r\n            ]);\r\n    }\r\n\r\n    public function handleActionPromise()\r\n    {\r\n        $resolve = &lt;&lt;&lt;SCRIPT\r\nvar actionResolverss = function (data) {\r\n            $('.modal-footer').show()\r\n            $('.tips').remove()\r\n            var response = data&#91;0];\r\n            var target   = data&#91;1];\r\n\r\n            if (typeof response !== 'object') {\r\n                return $.admin.swal({type: 'error', title: 'Oops!'});\r\n            }\r\n\r\n            var then = function (then) {\r\n                if (then.action == 'refresh') {\r\n                    $.admin.reload();\r\n                }\r\n\r\n                if (then.action == 'download') {\r\n                    window.open(then.value, '_blank');\r\n                }\r\n\r\n                if (then.action == 'redirect') {\r\n                    $.admin.redirect(then.value);\r\n                }\r\n            };\r\n\r\n            if (typeof response.html === 'string') {\r\n                target.html(response.html);\r\n            }\r\n\r\n            if (typeof response.swal === 'object') {\r\n                $.admin.swal(response.swal);\r\n            }\r\n\r\n            if (typeof response.toastr === 'object') {\r\n                $.admin.toastr&#91;response.toastr.type](response.toastr.content, '', response.toastr.options);\r\n            }\r\n\r\n            if (response.then) {\r\n              then(response.then);\r\n            }\r\n        };\r\n\r\n        var actionCatcherss = function (request) {\r\n            $('.modal-footer').show()\r\n            $('.tips').remove()\r\n\r\n            if (request &amp;&amp; typeof request.responseJSON === 'object') {\r\n                $.admin.toastr.error(request.responseJSON.message, '', {positionClass:\"toast-bottom-center\", timeOut: 10000}).css(\"width\",\"500px\")\r\n            }\r\n        };\r\nSCRIPT;\r\n\r\n        Admin::script($resolve);\r\n\r\n        return &lt;&lt;&lt;SCRIPT\r\n         $('.modal-footer').hide()\r\n         let html = `&lt;div class='tips' style='color: blue;font-size: 15px;'>\u6b63\u5728\u5904\u7406\u4e2d&lt;img src=\"data:image\/gif;base64,R0lGODlhEAAQAPQAAP\/\/\/1VVVfr6+np6eqysrFhYWG5ubuPj48TExGNjY6Ojo5iYmOzs7Lq6utjY2ISEhI6OjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH\/C05FVFNDQVBFMi4wAwEAAAAh\/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFUCAgjmRpnqUwFGwhKoRgqq2YFMaRGjWA8AbZiIBbjQQ8AmmFUJEQhQGJhaKOrCksgEla+KIkYvC6SJKQOISoNSYdeIk1ayA8ExTyeR3F749CACH5BAkKAAAALAAAAAAQABAAAAVoICCKR9KMaCoaxeCoqEAkRX3AwMHWxQIIjJSAZWgUEgzBwCBAEQpMwIDwY1FHgwJCtOW2UDWYIDyqNVVkUbYr6CK+o2eUMKgWrqKhj0FrEM8jQQALPFA3MAc8CQSAMA5ZBjgqDQmHIyEAIfkECQoAAAAsAAAAABAAEAAABWAgII4j85Ao2hRIKgrEUBQJLaSHMe8zgQo6Q8sxS7RIhILhBkgumCTZsXkACBC+0cwF2GoLLoFXREDcDlkAojBICRaFLDCOQtQKjmsQSubtDFU\/NXcDBHwkaw1cKQ8MiyEAIfkECQoAAAAsAAAAABAAEAAABVIgII5kaZ6AIJQCMRTFQKiDQx4GrBfGa4uCnAEhQuRgPwCBtwK+kCNFgjh6QlFYgGO7baJ2CxIioSDpwqNggWCGDVVGphly3BkOpXDrKfNm\/4AhACH5BAkKAAAALAAAAAAQABAAAAVgICCOZGmeqEAMRTEQwskYbV0Yx7kYSIzQhtgoBxCKBDQCIOcoLBimRiFhSABYU5gIgW01pLUBYkRItAYAqrlhYiwKjiWAcDMWY8QjsCf4DewiBzQ2N1AmKlgvgCiMjSQhACH5BAkKAAAALAAAAAAQABAAAAVfICCOZGmeqEgUxUAIpkA0AMKyxkEiSZEIsJqhYAg+boUFSTAkiBiNHks3sg1ILAfBiS10gyqCg0UaFBCkwy3RYKiIYMAC+RAxiQgYsJdAjw5DN2gILzEEZgVcKYuMJiEAOwAAAAAAAAAAAA==\">&lt;\\\/div>`\r\n         $('.modal-header').append(html)\r\nprocess.then(actionResolverss).catch(actionCatcherss);\r\nSCRIPT;\r\n    }\r\n}\r\n<\/code><\/pre>\n\n\n\n<p>\u5728\u5217\u8868\u5de5\u5177\u6309\u94ae\u6dfb\u52a0\u5bfc\u5165action<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> $grid->tools(function (Grid\\Tools $tools) {\r\n            $tools->append(new ImportAction());\r\n        });<\/code><\/pre>\n\n\n\n<p>\u754c\u9762\u6e32\u67d3\u5df2\u5b8c\u6210<\/p>\n\n\n\n<p>\u73b0\u5728\u5904\u7406\u6570\u636e\u4fdd\u5b58<\/p>\n\n\n\n<p>\u6dfb\u52a0\u6570\u636e\u4fdd\u5b58\u5bf9\u8c61<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan make:import WeipinHuiUser\/ImportWeipinhuiUser --model=App\\Models\\WeipinhuiUser<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace App\\Imports\\Member;\n\nuse App\\Models\\MemberModel;\nuse Maatwebsite\\Excel\\Concerns\\ToModel;\nuse Maatwebsite\\Excel\\Concerns\\WithStartRow;\n\nclass ImportWeinpinhuiUser implements ToModel,WithStartRow\n{\n    \/**\n    * @param array $row\n    *\n    * @return \\Illuminate\\Database\\Eloquent\\Model|null\n    *\/\n    public function model(array $row)\n    {\n        \/\/ 0\u4ee3\u8868\u7684\u662f\u7b2c\u4e00\u5217 \u4ee5\u6b64\u7c7b\u63a8\n        \/\/ $row \u662f\u6bcf\u4e00\u884c\u7684\u6570\u636e\n        return new WeipinhuiUser(&#91;\n             'employee_no' => $row&#91;0],\r\n            'name' => $row&#91;1]\n        ]);\n    }\n\n\n    \/**\n     * \u4ece\u7b2c\u51e0\u884c\u5f00\u59cb\u5904\u7406\u6570\u636e \u5c31\u662f\u4e0d\u5904\u7406\u6807\u9898\n     * @return int\n     *\/\n    public function startRow(): int\n    {\n        return 2;\n    }\n}<\/code><\/pre>\n\n\n\n<p>\u6ce8\u610f:\u5bf9\u5e94\u7684model\u6dfb\u52a0\u5bf9\u5e94\u5c5e\u6027\u4e3a\u53ef\u6279\u91cf\u5904\u7406<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class WeipinhuiUser extends Model\r\n{\r\n    use HasFactory;\r\n\r\n    protected $fillable = &#91;'employee_no', 'name'];\r\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5b89\u88c5excel \u5305 \u65b0\u589e\u4e00\u4e2aaction\u64cd\u4f5c \u5728\u5217\u8868\u5de5\u5177\u6309\u94ae\u6dfb\u52a0\u5bfc\u5165action \u754c\u9762\u6e32\u67d3\u5df2\u5b8c\u6210 \u73b0\u5728\u5904\u7406\u6570\u636e\u4fdd\u5b58 \u6dfb\u52a0\u6570\u636e\u4fdd\u5b58\u5bf9\u8c61 \u6ce8\u610f:\u5bf9\u5e94\u7684model\u6dfb\u52a0\u5bf9\u5e94\u5c5e\u6027\u4e3a\u53ef\u6279\u91cf\u5904\u7406<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[76,51],"_links":{"self":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/466"}],"collection":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=466"}],"version-history":[{"count":5,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/466\/revisions"}],"predecessor-version":[{"id":471,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/466\/revisions\/471"}],"wp:attachment":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}