header('广告列表') ->description(' ') ->body(view('admin.content.ad_list')->with(['grid' => $this->grid()])); } /** * Show interface. * * @param mixed $id * @param Content $content * @return Content */ public function show($id, Content $content) { return $content ->header('广告列表') ->description(' ') ->body($this->detail($id)); } /** * Edit interface. * * @param mixed $id * @param Content $content * @return Content */ public function edit($id, Content $content) { $info = Ad::find($id); $form = new ValueForm(); $ad_info = Ad::findOrFail($id); //$form->action('/admin/content/ads/update'); $form->action(route('admin.ad.update')); $form->attribute('enctype', 'multipart/form-data'); $form->disablePjax(); $form->text('title', '广告标题')->default($ad_info->title)->help('(区分不同广告条目,并不在广告中显示)')->setWidth(4)->setMustMark(); $display_option = [ 'on' => ['value' => 1, 'text' => '是', 'color' => 'success'], 'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'], ]; $form->switch('is_display', '显示状态')->states($display_option)->default($ad_info->is_display)->setMustMark(); if ($info->subsite_id == 0) { $subsites = Subsite::where(['effective' => 1])->orderBy('order', 'asc')->get()->pluck('sitename', 'id'); } else { $subsites = Subsite::where([['effective', '=', 1], ['id', '<>', $info->subsite_id]])->orderBy('order', 'asc')->get()->pluck('sitename', 'id')->toArray(); $subsites['0'] = '总站'; $subsites = collect($subsites); } if ($subsites->isNotEmpty() && $info->subsite_id == 0) { $relations = SubsiteAd::where(['ad_id' => $id])->get()->pluck('subsite_id')->toArray(); $form->multipleSelect('relate_subsites', '同步分站')->options($subsites)->default($relations); } else { $form->hidden('relate_subsites'); } $form->ignore(['relate_subsites']); $cate_option = AdCategory::all()->pluck('category_name', 'id'); $form->select('category_id', '广告位')->options($cate_option)->default($ad_info->category_id)->setWidth(4)->attribute(['id' => 'sub_category'])->setMustMark(); $form->number('list_order', '显示顺序')->default($ad_info->list_order)->min(0)->help('(数字越大越靠前)')->setMustMark(); $form->date('started_at', '开始日期') ->format('YYYY-MM-DD') ->default($ad_info->started_at) ->rules('required|date', ['required' => '开始日期不能为空。', 'date' => '开始日期格式不正确。']) ->help('(设置广告起始日期,格式yyyy-mm-dd,留空为不限制起始日期)'); $form->date('ended_at', '结束日期') ->format('YYYY-MM-DD') ->default($ad_info->ended_at) ->rules('required|date', ['required' => '结束日期不能为空。', 'date' => '结束日期格式不正确。']) ->help('(设置广告结束日期,格式yyyy-mm-dd,留空为不限制结束日期)'); $form->textarea('note', '备注')->default($ad_info->note); $form->html("
")->plain(); $form->hidden('alias')->value($ad_info->alias)->attribute('id', 'alias'); $form->hidden('theme')->value($ad_info->theme); $form->hidden('type_id')->value($ad_info->type_id)->attribute('id', 'type_id'); $form->hidden('id')->value($ad_info->id); $template = new Template(); $template->setTemplatesId("text_div"); if ($ad_info->type_id == '1') { $template->text('content', '文字内容')->default($ad_info->content)->help('(文字广告的显示内容)')->setMustMark(); $template->url('url', '文字链接')->default($ad_info->url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)'); $template->color('text_color', '文字颜色')->default($ad_info->text_color)->setMustMark(); } else { $template->text('content', '文字内容')->help('(文字广告的显示内容)')->setMustMark(); $template->url('url', '文字链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)'); $template->color('text_color', '文字颜色')->setMustMark(); } $template->setTemplatesId("image_div"); if ($ad_info->type_id == '2') { $img_file = null; $img_url = null; if (preg_match('/^http/', $ad_info->content)) { $img_url = $ad_info->content; } else { $img_file = $ad_info->content; } $template->image('img_file', '本地上传')->uniqueName()->help('(允许格式为gif/jpg/bmp/png,文件大小1000KB)')->value($img_file)->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]); $template->text('img_url', '或图片地址')->default($img_url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/img/baidu_logo.gif)'); $template->url('url', '图片链接')->default($ad_info->url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)'); $template->text('target', 'target')->default($ad_info->target)->help('(请输入_self等,默认_blank)'); $template->text('explain', '图片说明文字')->default($ad_info->explain); $template->number('uid', '会员UID')->default($ad_info->uid)->min(0)->help('(设置会员UID后,当鼠标移动到图片上将会显示相关的职位和企业信息)'); } else { $template->image('img_file', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为gif/jpg/bmp/png,文件大小1000KB)')->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]); $template->text('img_url', '或图片地址')->help('(请输入包含http://或https://的完整链接,如http://www.baidu.com/img/baidu_logo.gif)'); $template->url('url', '图片链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)'); $template->text('explain', '图片说明文字'); $template->number('uid', '会员UID')->min(0)->help('(设置会员UID后,当鼠标移动到图片上将会显示相关的职位和企业信息)'); } $template->setTemplatesId("code_div"); if ($ad_info->type_id == '3') { $template->textarea('content', '代码')->default($ad_info->content)->rows(1)->help('(请直接输入需要展现的广告代码)')->setMustMark(); } else { $template->textarea('content', '代码')->rows(1)->help('(请直接输入需要展现的广告代码)')->setMustMark(); } $template->setTemplatesId("flash_div"); if ($ad_info->type_id == '4') { $flash_file = null; $flash_url = null; if (preg_match('/^images\//', $ad_info->content)) { $flash_file = $ad_info->content; } else { $flash_url = $ad_info->content; } $template->image('content', '本地上传')->default($flash_file)->uniqueName()->setWidth(3)->help('(允许格式为:swf,文件大小:1000KB)')->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]); $template->url('url', '或者Flash地址')->default($flash_url)->help('(请输入包含http://或https://的完整链接,如: http://www.baidu.com/123.swf)'); } else { $template->file('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为:swf,文件大小:1000KB)')->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]); $template->url('url', '或者Flash地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)'); } $template->setTemplatesId("vedio_div"); if ($ad_info->type_id == '5') { $vedio_file = null; $vedio_url = null; if (preg_match('/^images\//', $ad_info->content)) { $vedio_file = $ad_info->content; } else { $vedio_url = $ad_info->content; } $template->file('content', '本地上传')->default($vedio_file)->uniqueName()->setWidth(3)->help('(允许格式为swf/flv/f4v,文件大小5000KB,大文件FTP上传)')->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]); $template->url('url', '或者视频地址')->default($vedio_url)->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)'); } else { $template->file('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为swf/flv/f4v,文件大小5000KB,大文件FTP上传)')->setMustMark()->options(['layoutTemplates' => ['actionDelete' => '']]); $template->url('url', '或者视频地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)'); } $form->disableReset(); $data['custom_form'] = $form->render(); $data['temp'] = $template->render(); $data['ad_info'] = $ad_info; return $content ->header('广告') ->description(' ') ->body(view('admin.content.ad_edit')->with($data)); } public function update(Request $request) { $ad = Ad::findOrFail($request->input('id')); $rules = [ 'title' => 'required|max:50', 'is_display' => 'required', 'category_id' => 'required', 'list_order' => 'required|max:10', 'note' => 'max:80', ]; $message = [ 'title.required' => '广告标题不能为空。', 'title.max' => '广告标题长度不能超过50。', 'is_display.required' => '请选择显示状态。', 'category_id.required' => '请选择广告位。', 'list_order.required' => '显示顺序不能为空。', 'list_order.max' => '显示顺序长度不能大于10。', 'note.max' => '备注长度不能超过80。', ]; if ($request->input('started_at')) { $rules['started_at'] = 'date'; $message['started_at.date'] = '开始日期格式不正确。'; } if ($request->input('ended_at')) { $rules['ended_at'] = 'date|after_or_equal:started_at'; $message['ended_at.date'] = '结束日期格式不正确。'; $message['ended_at.after_or_equal'] = '结束日期不能早于开始日期。'; } $type_id = $request->input('type_id'); if ($type_id == '1') { $rules['content'] = 'required'; $rules['text_color'] = 'required'; $message['content.required'] = '文字内容不能为空。'; $message['text_color.required'] = '文字颜色不能为空。'; } else if ($type_id == '2') { $rules['img_file'] = 'mimes:gif,jpeg,bmp,png|max:1024'; $rules['explain'] = 'max:80'; $rules['uid'] = 'nullable|numeric'; $message['img_file.mimes'] = '本地上传格式不正确。'; $message['img_file.max'] = '本地上传文件大小不能超过1M。'; $message['explain.max'] = '图片说明文字长度不能大于80。'; /*$message['uid.required'] = 'UID不能为空。';*/ $message['uid.numeric'] = 'UID只能填写数字。'; } else if ($type_id == '3') { $rules['content'] = 'required'; $message['content.required'] = '代码不能为空。'; } else if ($type_id == '4') { $rules['content'] = 'mimes:swf'; $message['content.mimes'] = '本地上传格式不正确。'; } else if ($type_id == '5') { $rules['content'] = 'mimes:swf,flv,f4v'; $message['content.mimes'] = '本地上传格式不正确。'; } $request->validate($rules, $message); $time = date('Y-m-d H:i:s', time()); $is_display = $request->input('is_display') == 'on' ? 1 : 0; $started_at = $request->input('started_at') ? strtotime($request->input('started_at')) : 0; $ended_at = $request->input('ended_at') ? strtotime($request->input('ended_at')) : 0; $type_id = $request->input('type_id'); $theme = $request->input('theme') ? $request->input('theme') : 'default'; $note = $request->input('note') ? $request->input('note') : ''; $ad->theme = $theme; $ad->alias = $request->input('alias'); $ad->is_display = $request->input('is_display') == 'on' ? 1 : 0; $ad->category_id = $request->input('category_id'); $ad->type_id = $type_id; $ad->title = $request->input('title'); $ad->note = $request->input('note') ? $request->input('note') : ''; $ad->list_order = $request->input('list_order'); $ad->started_at = $request->input('started_at') ? strtotime($request->input('started_at')) : 0; $ad->ended_at = $request->input('ended_at') ? strtotime($request->input('ended_at')) : 0; $ad->updated_at = $time; if ($type_id == '1') { //文字广告 $ad->content = $request->input('content'); $ad->url = $request->input('url') ? $request->input('url') : ''; $ad->text_color = $request->input('text_color') ? $request->input('text_color') : '#000000'; $ad->uid = 0; } else if ($type_id == '2') { //图片广告 $img_file = $request->input('img_file'); $img_url = $request->input('img_url'); $url = $request->input('url') ? $request->input('url') : ''; $target = $request->input('target') ? $request->input('target') : '_blank'; $explain = $request->input('explain'); $uid = $request->input('uid'); $up_file = null; if ($request->hasFile('img_file')) { $file = 'img_file'; $up_file = $request->$file->store(config('admin.upload.directory.image'), config('admin.upload.disk')); } $content = $up_file ? $up_file : $img_url; if ($content) { $ad->content = $content; } $ad->url = $url; $ad->target = $target; $ad->text_color = '#000000'; $ad->uid = $uid ? $uid : 0; $ad->explain = $explain; } else if ($type_id == '3') { //代码广告 $content = $request->input('content') ? $request->input('content') : 0; if ($content) { $ad->content = $content; } $ad->uid = 0; $ad->text_color = '#000000'; $ad->url = ''; } else if ($type_id == '4' || $type_id == '5') { //flash广告 、视频广告 $url = $request->input('url') ? $request->input('url') : ''; $up_file = null; if ($request->hasFile('content')) { $file = 'content'; $up_file = $request->$file->store(config('admin.upload.directory.file'), config('admin.upload.disk')); } $content = $up_file ? $up_file : $url; if ($content) { $ad->content = $content; } $ad->url = ''; $ad->uid = 0; $ad->text_color = '#000000'; } $set_data = []; $subsites = $request->input('relate_subsites'); if (empty($subsites)) { $subsites = []; } $subsites = array_merge([$ad->subsite_id], $subsites); foreach ($subsites as $k => $v) { if ($v !== null) { $set_data[] = [ 'ad_id' => $ad->id, 'subsite_id' => $v, ]; } } if ($ad->save()) { if ($set_data) { SubsiteAd::where('ad_id', $ad->id)->delete(); SubsiteAd::insert($set_data); } admin_toastr(trans('admin.save_succeeded'), 'success'); return redirect(admin_base_path() . '/content/ad/index'); } else { throw new \Exception(trans('admin.save_failed')); } } public function updates(Request $request) { $rules = [ 'title' => 'required|max:50', 'is_display' => 'required', 'category_id' => 'required', 'list_order' => 'required|max:10', 'note' => 'max:80', ]; $message = [ 'title.required' => '广告标题不能为空。', 'title.max' => '广告标题长度不能超过50。', 'is_display.required' => '请选择显示状态。', 'category_id.required' => '请选择广告位。', 'list_order.required' => '显示顺序不能为空。', 'list_order.max' => '显示顺序长度不能大于10。', 'note.max' => '备注长度不能超过80。', ]; if ($request->input('started_at')) { $rules['started_at'] = 'date'; $message['started_at.date'] = '开始日期格式不正确。'; } if ($request->input('ended_at')) { $rules['ended_at'] = 'date|after_or_equal:started_at'; $message['ended_at.date'] = '结束日期格式不正确。'; $message['ended_at.after_or_equal'] = '结束日期不能早于开始日期。'; } $type_id = $request->input('type_id'); if ($type_id == '1') { $rules['content'] = 'required'; $rules['text_color'] = 'required'; $message['content.required'] = '文字内容不能为空。'; $message['text_color.required'] = '文字颜色不能为空。'; } else if ($type_id == '2') { $rules['img_file'] = 'required_without:img_url|mimes:gif,jpeg,bmp,png'; $rules['img_url'] = 'required_without:img_file'; $rules['explain'] = 'max:80'; $rules['uid'] = 'required|numeric'; $message['img_file.required_without'] = '本地上传或者图片地址填写一项。'; $message['img_file.mimes'] = '本地上传格式不正确。'; $message['img_url.required_without'] = '本地上传或者图片地址填写一项。'; $message['explain.max'] = '图片说明文字长度不能大于80。'; $message['uid.required'] = 'UID不能为空。'; $message['uid.numeric'] = 'UID只能填写数字。'; } else if ($type_id == '3') { $rules['content'] = 'required'; $message['content.required'] = '代码不能为空。'; } else if ($type_id == '4') { $rules['content'] = 'required_without:url|mimes:swf'; $rules['url'] = 'required_without:content'; $message['content.required_without'] = '本地上传或者Flash地址填写一项。'; $message['content.mimes'] = '本地上传格式不正确。'; $message['url.required_without'] = '本地上传或者Flash地址填写一项。'; } else if ($type_id == '5') { $rules['content'] = 'required_without:url|mimes:swf,flv,f4v'; $rules['url'] = 'required_without:content'; $message['content.required_without'] = '本地上传或者填写视频地址填写一项。'; $message['content.mimes'] = '本地上传格式不正确。'; $message['url.required_without'] = '本地上传或者填写视频地址填写一项。'; } $request->validate($rules, $message); $is_display = $request->input('is_display') == 'on' ? 1 : 0; $time = date('Y-m-d H:i:s', time()); $started_at = $request->input('started_at') ? strtotime($request->input('started_at')) : 0; $ended_at = $request->input('ended_at') ? strtotime($request->input('ended_at')) : 0; $type_id = $request->input('type_id'); $theme = $request->input('theme') ? $request->input('theme') : 'default'; $note = $request->input('note') ? $request->input('note') : ''; $form_data = [ 'theme' => $theme, 'alias' => $request->input('alias'), 'is_display' => $is_display, 'category_id' => $request->input('category_id'), 'type_id' => $type_id, 'title' => $request->input('title'), 'note' => $note, 'list_order' => $request->input('list_order'), 'started_at' => $started_at, 'ended_at' => $ended_at, 'updated_at' => $time, ]; if ($type_id == '1') { //文字广告 $form_data['content'] = $request->input('content'); $form_data['url'] = $request->input('url'); $form_data['text_color'] = $request->input('text_color') ? $request->input('text_color') : '#000000'; $form_data['uid'] = 0; } else if ($type_id == '2') { //图片广告 $img_file = $request->input('img_file'); $img_url = $request->input('img_url'); $url = $request->input('url'); $explain = $request->input('explain'); $uid = $request->input('uid'); $up_file = null; if ($request->hasFile('img_file')) { $file = 'img_file'; $up_file = $request->$file->store(config('admin.upload.directory.image'), config('admin.upload.disk')); } $content = $up_file ? $up_file : $img_url; $form_data['content'] = $content; $form_data['url'] = $url; $form_data['text_color'] = '#000000'; $form_data['uid'] = $uid; $form_data['explain'] = $explain; } else if ($type_id == '3') { //代码广告 $content = $request->input('content') ? $request->input('content') : 0; $form_data['content'] = $content; $form_data['uid'] = 0; $form_data['text_color'] = '#000000'; $form_data['url'] = ''; } else if ($type_id == '4' || $type_id == '5') { //flash广告 、视频广告 $url = $request->input('url') ? $request->input('url') : ''; $up_file = null; if ($request->hasFile('content')) { $file = 'content'; $up_file = $request->$file->store(config('admin.upload.directory.file'), config('admin.upload.disk')); } $content = $up_file ? $up_file : $url; $form_data['content'] = $content; $form_data['url'] = ''; $form_data['uid'] = 0; $form_data['text_color'] = '#000000'; } if (Ad::where(['id' => $request->input('id')])->update($form_data)) { admin_toastr(trans('admin.save_succeeded'), 'success'); return redirect(admin_base_path() . '/content/ad/index'); } else { throw new \Exception(trans('admin.save_failed')); } } /** * Create interface. * * @param Content $content * @return Content */ public function create(Content $content) { $form = new ValueForm(); $form->action(route('ad.index')); $form->text('title', '广告标题')->help('(区分不同广告条目,并不在广告中显示)')->setWidth(4)->setMustMark(); $display_option = [ 'on' => ['value' => 1, 'text' => '是', 'color' => 'success'], 'off' => ['value' => 0, 'text' => '否', 'color' => 'danger'], ]; $form->switch('is_display', '显示状态')->states($display_option)->default('1')->setMustMark(); if (get_subsite_id() == 0) { $subsites = Subsite::where(['effective' => 1])->orderBy('order', 'asc')->get()->pluck('sitename', 'id'); } else { $subsites = Subsite::where([['effective', '=', 1], ['id', '<>', get_subsite_id()]])->orderBy('order', 'asc')->get()->pluck('sitename', 'id')->toArray(); $subsites['0'] = '总站'; $subsites = collect($subsites); } if ($subsites->isNotEmpty() && get_subsite_id() == 0) { $form->multipleSelect('relate_subsites', '同步分站')->options($subsites); } else { $form->hidden('relate_subsites'); } $form->ignore(['relate_subsites']); $form->hidden('subsite_id')->value(get_subsite_id()); $cate_option = AdCategory::all()->pluck('category_name', 'id'); $form->select('category_id', '广告位')->options($cate_option) ->rules('required', ['required' => '请选择广告位。']) ->setWidth(4)->attribute(['id' => 'sub_category'])->setMustMark(); $form->number('list_order', '显示顺序')->min(0)->default(0)->help('(数字越大越靠前)')->setMustMark(); $form->date('started_at', '开始日期') ->format('YYYY-MM-DD') ->rules('required|date', ['required' => '开始日期不能为空。', 'date' => '开始日期格式不正确。']) ->help('(设置广告起始日期,格式yyyy-mm-dd,留空为不限制起始日期)'); $form->date('ended_at', '结束日期') ->format('YYYY-MM-DD') ->rules('required|date', ['required' => '结束日期不能为空。', 'date' => '结束日期格式不正确。']) ->help('(设置广告结束日期,格式yyyy-mm-dd,留空为不限制结束日期)'); $form->textarea('note', '备注'); $form->html("")->plain(); $form->hidden('alias')->attribute('id', 'alias'); $form->hidden('theme')->value('default'); $form->hidden('type_id')->attribute('id', 'type_id'); $template = new Template(); $template->setTemplatesId("text_div"); $template->text('content', '文字内容')->help('(文字广告的显示内容)')->setMustMark(); $template->url('url', '文字链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)'); $template->color('text_color', '文字颜色')->default('#000000')->setMustMark(); $template->setTemplatesId("image_div"); $template->image('img_file', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为gif/jpg/bmp/png,文件大小1000KB)')->setMustMark(); $template->text('img_url', '或图片地址')->help('(如/images/logo.gif 或 http://www.baidu.com/img/baidu_logo.gif)'); $template->url('url', '图片链接')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com)'); $template->text('target', 'target')->help('(请输入_self等,默认_blank)'); $template->text('explain', '图片说明文字'); $template->number('uid', '会员UID')->min(0)->default(0) ->help('(设置会员UID后,当鼠标移动到图片上将会显示相关的职位和企业信息)') ->attribute(['maxlength' => '10', 'onkeyup' => 'if(event.keyCode !=37 && event.keyCode != 39) value=value.replace(/\D/g,\'\');', 'onbeforepaste' => "clipboardData.setData('text',clipboardData.getData('text').replace(/\D/g,''))"]); $template->setTemplatesId("code_div"); $template->textarea('content', '代码')->rows(1)->help('(请直接输入需要展现的广告代码)')->setMustMark(); $template->setTemplatesId("flash_div"); $template->image('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为:swf,文件大小:1000KB)')->setMustMark(); $template->url('url', '或者Flash地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)'); $template->setTemplatesId("vedio_div"); $template->image('content', '本地上传')->uniqueName()->setWidth(3)->help('(允许格式为swf/flv/f4v,文件大小5000KB,大文件FTP上传)')->setMustMark(); $template->url('url', '或者视频地址')->help('(请输入包含http://或https://的完整链接,如:http://www.baidu.com/123.swf)'); $form->disableReset(); $data['custom_form'] = $form->render(); $data['temp'] = $template->render(); return $content ->header('广告') ->description(' ') ->body(view('admin.content.ad')->with($data)); } public function changeCategory(Request $request) { $cate_option = AdCategory::all()->toArray(); return response()->json(['data' => $cate_option, 'status' => '1']); } public function store(Request $request) { $rules = [ 'title' => 'required|max:50', 'is_display' => 'required', 'category_id' => 'required', 'list_order' => 'required|max:10', 'note' => 'max:80', ]; $message = [ 'title.required' => '广告标题不能为空。', 'title.max' => '广告标题长度不能超过50。', 'is_display.required' => '请选择显示状态。', 'category_id.required' => '请选择广告位。', 'list_order.required' => '显示顺序不能为空。', 'list_order.max' => '显示顺序长度不能大于10。', 'note.max' => '备注长度不能超过80。', ]; if ($request->input('started_at')) { $rules['started_at'] = 'date'; $message['started_at.date'] = '开始日期格式不正确。'; } if ($request->input('ended_at')) { $rules['ended_at'] = 'date|after_or_equal:started_at'; $message['ended_at.date'] = '结束日期格式不正确。'; $message['ended_at.after_or_equal'] = '结束日期不能早于开始日期。'; } $type_id = $request->input('type_id'); if ($type_id == '1') { $rules['content'] = 'required'; $rules['text_color'] = 'required'; $message['content.required'] = '文字内容不能为空。'; $message['text_color.required'] = '文字颜色不能为空。'; } else if ($type_id == '2') { $rules['img_file'] = 'required_without:img_url|mimes:gif,jpeg,bmp,png|max:1024'; $rules['img_url'] = 'required_without:img_file'; $rules['explain'] = 'max:80'; $rules['uid'] = 'nullable|numeric'; $message['img_file.required_without'] = '本地上传或者图片地址填写一项。'; $message['img_file.mimes'] = '本地上传格式不正确。'; $message['img_file.max'] = '本地上传文件大小不能超过1M。'; $message['img_url.required_without'] = '本地上传或者图片地址填写一项。'; $message['explain.max'] = '图片说明文字长度不能大于80。'; //$message['uid.required'] = 'UID不能为空。'; $message['uid.numeric'] = 'UID只能填写数字。'; } else if ($type_id == '3') { $rules['content'] = 'required'; $message['content.required'] = '代码不能为空。'; } else if ($type_id == '4') { $rules['content'] = 'required_without:url|mimes:swf'; $rules['url'] = 'required_without:content'; $message['content.required_without'] = '本地上传或者Flash地址填写一项。'; $message['content.mimes'] = '本地上传格式不正确。'; $message['url.required_without'] = '本地上传或者Flash地址填写一项。'; } else if ($type_id == '5') { $rules['content'] = 'required_without:url|mimes:swf,flv,f4v'; $rules['url'] = 'required_without:content'; $message['content.required_without'] = '本地上传或者填写视频地址填写一项。'; $message['content.mimes'] = '本地上传格式不正确。'; $message['url.required_without'] = '本地上传或者填写视频地址填写一项。'; } $request->validate($rules, $message); $is_display = $request->input('is_display') == 'on' ? 1 : 0; $time = date('Y-m-d H:i:s', time()); $started_at = $request->input('started_at') ? strtotime($request->input('started_at')) : 0; $ended_at = $request->input('ended_at') ? strtotime($request->input('ended_at')) : 0; $subsite_id = $request->input('subsite_id'); $theme = $request->input('theme') ? $request->input('theme') : 'default'; $note = $request->input('note') ? $request->input('note') : ''; $form_data = [ 'theme' => $theme, 'alias' => $request->input('alias'), 'is_display' => $is_display, 'category_id' => $request->input('category_id'), 'type_id' => $type_id, 'title' => $request->input('title'), 'note' => $note, 'list_order' => $request->input('list_order'), 'started_at' => $started_at, 'ended_at' => $ended_at, 'subsite_id' => $subsite_id, 'created_at' => $time, 'updated_at' => $time, ]; if ($type_id == '1') { //文字广告 $form_data['content'] = $request->input('content'); $form_data['url'] = $request->input('url') ? $request->input('url') : ''; $form_data['text_color'] = $request->input('text_color') ? $request->input('text_color') : '#000000'; $form_data['uid'] = 0; } else if ($type_id == '2') { //图片广告 $img_file = $request->input('img_file'); $img_url = $request->input('img_url'); $url = $request->input('url') ? $request->input('url') : ''; $target = $request->input('target') ? $request->input('target') : '_blank'; $explain = $request->input('explain'); $uid = $request->input('uid', 0); $up_file = null; if ($request->hasFile('img_file')) { $file = 'img_file'; $up_file = $request->$file->store(config('admin.upload.directory.image'), config('admin.upload.disk')); } $content = $up_file ? $up_file : $img_url; $form_data['content'] = $content; $form_data['url'] = $url; $form_data['target'] = $target; $form_data['text_color'] = '#000000'; $form_data['uid'] = $uid ? $uid : 0; $form_data['explain'] = $explain; } else if ($type_id == '3') { //代码广告 $content = $request->input('content') ? $request->input('content') : 0; $form_data['content'] = $content; $form_data['uid'] = 0; $form_data['text_color'] = '#000000'; $form_data['url'] = ''; } else if ($type_id == '4' || $type_id == '5') { //flash广告 、视频广告 $url = $request->input('url') ? $request->input('url') : ''; $up_file = null; if ($request->hasFile('content')) { $file = 'content'; $up_file = $request->$file->store(config('admin.upload.directory.file'), config('admin.upload.disk')); } $content = $up_file ? $up_file : $url; $form_data['content'] = $content; $form_data['url'] = ''; $form_data['uid'] = 0; $form_data['text_color'] = '#000000'; } $subsites = $request->input('relate_subsites'); if (empty($subsites)) { $subsites = []; } if ($ad = Ad::create($form_data)) { $set_data = []; $set_data[] = [ 'ad_id' => $ad->id, 'subsite_id' => get_subsite_id(), ]; if ($subsites) { foreach ($subsites as $k => $v) { if ($v) { $set_data[] = [ 'ad_id' => $ad->id, 'subsite_id' => $v, ]; } } } if ($set_data) { SubsiteAd::insert($set_data); } admin_toastr(trans('admin.save_succeeded'), 'success'); return redirect(admin_base_path() . '/content/ad/index'); } else { throw new \Exception(trans('admin.save_failed')); } } /** * Make a grid builder. * * @return Grid */ protected function grid() { $grid = new Grid(new Ad); $grid->model()->when(get_subsite_id() > 0, function ($query) { $query->where('subsite_id', get_subsite_id()); })->orderBy('list_order', 'DESC')->orderBy('created_at', 'DESC'); $grid->title('广告标题')->display(function () { $logo_html = ''; if ($this->type_id == '2') { //判断图片中是否包含http if (preg_match('/^http/', $this->content)) { $logo_html = '