讨论数量:
主要是这两个部分:
<?php
namespace App\Admin\Actions;
use App\Admin\Forms\AdminSetting as AdminSettingForm;
use Dcat\Admin\Actions\Action;
use Dcat\Admin\Widgets\Modal;
class AdminSetting extends Action
{
public function render()
{
$title = '<i class="feather icon-edit" style="font-size: 1.5rem"></i> '.trans('admin.site_setting');
$modal = Modal::make()
->id('admin-setting-config') // 导航栏显示弹窗,必须固定 ID,随机 ID 会在刷新后失败
->title($title)
->body(AdminSettingForm::make())
->lg()
->button(
<<<HTML
<ul class="nav navbar-nav">
<li class="nav-item"> {$title} </li>
</ul>
HTML
);
return $modal->render();
}
}
<?php
namespace App\Admin\Forms;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
use Illuminate\Support\Arr;
class AdminSetting extends Form implements LazyRenderable
{
use LazyWidget;
/**
* 处理表单请求.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
$input['layout']['horizontal_menu'] = in_array('horizontal_menu', $input['layout']['body_class'], true);
foreach (Arr::dot($input) as $k => $v) {
$this->update($k, $v);
}
return $this->response()->success(trans('global.set_successfully'));
}
/**
* 构建表单.
*/
public function form()
{
// 主题颜色
$colors = [
'default' => trans('site.settings.options.layout.color.default'),
'blue' => trans('site.settings.options.layout.color.blue'),
'blue-light' => trans('site.settings.options.layout.color.blue-light'),
'green' => trans('site.settings.options.layout.color.green'),
];
$this->text('name', trans('site.settings.form.name'))->required()->help(trans('site.settings.help.name'));
$this->text('logo', trans('site.settings.form.logo'))->required()->help(trans('site.settings.help.logo'));
$this->text('logo-mini', trans('site.settings.form.logi-mini'))->required();
$this->radio('lang', trans('site.settings.form.lang'))->required()->options(['en' => trans('site.settings.options.lang.en'), 'ja' => trans('site.settings.options.lang.ja'), 'zh_CN' => trans('site.settings.options.lang.zh_CN')]);
$this->radio('layout.color', trans('site.settings.form.layout.color'))
->required()
->help(trans('site.settings.help.layout.color'))
->options($colors);
$this->radio('layout.sidebar_style', trans('site.settings.form.layout.sidebar_style'))
->options(['light' => trans('site.settings.options.layout.sidebar_style.light'), 'primary' => trans('site.settings.options.layout.sidebar_style.primary')])
->help(trans('site.settings.help.layout.sidebar_style'));
$this->checkbox('layout.body_class', trans('site.settings.form.layout.body_class'))
->options([
'horizontal_menu' => trans('site.settings.options.layout.body_class.horizontal_menu'),
'sidebar-separate' => trans('site.settings.options.layout.body_class.sidebar-separate'),
])
->help(trans('site.settings.help.layout.body_class'));
$this->switch('https', trans('site.settings.form.https'));
$this->switch('helpers.enable', trans('site.settings.form.helpers.enable'));
}
/**
* 设置接口保存成功后的回调JS代码.
*
* 1.2秒后刷新整个页面.
*
* @return string|void
*/
public function savedScript()
{
return <<<'JS'
if (data.status) {
setTimeout(function () {
location.reload()
}, 1200);
}
JS;
}
/**
* 返回表单数据.
*
* @return array
*/
public function default()
{
return admin_config();
}
/**
* 更新配置.
*
* @param string $key
* @param string $value
*/
protected function update($key, $value)
{
admin_config([$key => $value]);
}
}
app/Admin/bootstrap.php
Admin::navbar(function (Navbar $navbar) use ($notifications) {
//$navbar->left(view('nav_left'));
$navbar->right(view('nav_right')); // 在视图中添加自己想要的内容
});
resources/views/nav_right.blade.php
@if(config('admin.support_locale_open'))
<li class="dropdown" style="text-align: center">
<a class="nav-link nav-link-label" href="#" data-toggle="dropdown" aria-expanded="true">
<i class="ficon fa fa-language"></i>
</a>
<ul class="dropdown-menu dropdown-menu-right">
@foreach (config('admin.support_locale') as $lang)
<li class="dropdown-item">
<a href="javascript:void(0)" class='locale_item' data-lang="{{$lang}}">
@if($lang == config(''))
@endif
<i class="fi fi-{{$lang}} f22"></i>
{{trans('support-locale.'.$lang)}}</a>
</li>
@endforeach
</ul>
</li>
@endif
config/admin.php
/**
* support locale
*/
'support_locale_open' => true, //开启多语言选择
'support_locale' => [
'cn', // 中国 (China)
'tw', // 中国台湾 (China taiwan)
'us', // 美国 (United States)
'jp', // 日本 (Japan)
'de', // 德国 (Germany)
'gb', // 英国 (United Kingdom)
'fr', // 法国 (France)
/*'in', // 印度 (India)
'br', // 巴西 (Brazil)
'ru', // 俄罗斯 (Russia)
'it', // 意大利 (Italy)
'ca', // 加拿大 (Canada)
'kr', // 韩国 (South Korea)
'au', // 澳大利亚 (Australia)
'es', // 西班牙 (Spain)
'mx', // 墨西哥 (Mexico)
'id', // 印度尼西亚 (Indonesia)
'nl', // 荷兰 (Netherlands)
'sa', // 沙特阿拉伯 (Saudi Arabia)
'tr', // 土耳其 (Turkey)
'ch', // 瑞士 (Switzerland)*/
],
推荐文章: