目前网站配置已经可以访问了,菜单名是英文的,只需要在翻译文件里增加翻译即可。
点击左侧菜单的 网站配置,发现页面报错,如下提示
报错很详细了,因为我们在控制器里引用了new Setting()
这个类文件,但是根本没这个文件,我们现在来实现一下这个工具表单的类。
我们新建文件app\Admin\Forms\Setting.php
, 代码如下
<?php
namespace App\Admin\Forms;
use Dcat\Admin\Widgets\Form;
use Symfony\Component\HttpFoundation\Response;
class Setting extends Form
{
/**
* Handle the form request.
*
* @param array $input
*
* @return Response
*/
public function handle(array $input)
{
// dump($input);
admin_setting($input);
// return $this->error('Your error message.');
return $this->response()->success('设置成功')->location('settings');
}
/**
* Build a form here.
*/
public function form()
{
// dd();
// Since v1.6.5 弹出确认弹窗
$this->confirm('您确定要提交表单吗', 'content');
$this->text('crmname', '网站名称')->default(admin_setting('crmname', 'NXCRM客户管理系统'));
$this->url('crmurl', '网站地址')->default(admin_setting('crmurl', 'https://nx.tt'));
$this->image('logo', '网站LOGO')->accept('jpg,png,gif,jpeg')->maxSize(512)->required()->autoUpload()->help('大小不要超过512K');
$this->radio('color', '网站配色')->options(['douyin' => '抖音粉', 'blue' => '支付宝蓝', 'blue-light' => '飞书蓝', 'green' => '微信绿', 'default' => '政府蓝']);
$this->switch('body_class', '默认暗色')
->customFormat(function ($v) {
return $v == '打开' ? 1 : 0;
})
->saving(function ($v) {
return $v ? 'dark-mode' : '';
})->help('更改后需清空浏览器缓存');
$this->radio('sidebar_style', '侧栏颜色')->options(['light' => '白色', 'primary' => '彩色']);
$this->radio('menu_layout', '侧栏布局')->options(['default' => '默认', 'sidebar-separate' => '分离']);
}
public function
default()
{
if (admin_setting('body_class', 0)) {
$body_class = 0;
} else {
$body_class = 1;
}
return [
'logo' => admin_setting('logo', public_path().'/static/img/logo.png'),
'color' => admin_setting('color', 'green'),
'body_class' => $body_class,
'sidebar_style' => admin_setting('sidebar_style', 'light'),
'menu_layout' => admin_setting('menu_layout', 'sidebar-separate'),
];
}
}
上面的代码是一个标准的工具表单的代码,我们暂时只需要知道下面这三个方法的用处
这个方法是用来处理表单提交请求的
public function handle(array $input)
{
}
这个方法用来构建表单本身
public function form()
{
}
返回表单数据,可以在这里设置表单的默认数据
public function default()
{
}