laravel-admin 提交数据后返回登录页 应该如何实现
<?php
namespace App\Admin\Forms\Backstags;
use Encore\Admin\Widgets\Form;
use Illuminate\Http\Request;
use App\Admin\Models\AdminSetting;
use Encore\Admin\Facades\Admin;
class admincp_config_Config extends Form
{
public function __construct()
{
$this->title = trans('admin.backstags.config.table_name_Config');
parent::__construct();
}
/**
* The form title.
*
* @var string
*/
public $title;
/**
* Handle the form request.
*
* @param Request $request
*
* @return \Illuminate\Http\RedirectResponse
*/
public function handle(Request $request)
{
$validateRules = [
'routeprefix' => '',
];
$this->validate($request,$validateRules);
$data = $request->except('_token');
foreach($data as $skey => $svalue)
{
AdminSetting::set($skey, $svalue);
}
AdminSetting::setEnvParams
([
'ADMIN_ROUTE_PREFIX' => $request->routeprefix,
]);
AdminSetting::setcache();
admin_success(trans('admin.update_succeeded'));
if ($data['routeprefix'] == env('ADMIN_ROUTE_PREFIX'))
{
return back();
} else {
Admin::guard()->logout();
return back();
}
}
/**
* Build a form here.
*/
public function form()
{
$this->text('routeprefix', trans('admin.backstags.config.config_route_prefix'))->setWidth(2, 2);
$this->disableReset();
}
/**
* The data of the form.
*
* @return array $data
*/
public function data()
{
return [
'routeprefix' => AdminSetting::get('routeprefix'),
];
}
}
这是一个完整的选项卡表单。
form() 里通过后台提交的表单内容来修改后台的地址。
现在下面都没有问题,问题就在于if ($data['routeprefix'] == env('ADMIN_ROUTE_PREFIX'))
这里。
这里判断当前提交过来的数据,是否和之前的数据相同。如果相同那么就返回 也就是执行return back();
如果不同。就退出登录,并且返回到指定地址(这里的地址是修改后的地址)
但是由于使用的是
use Encore\Admin\Facades\Admin;(vendor\encore\laravel-admin\src\admin.php)
的guard()。导致执行到这里就结束了。就算把函数里的内容提取出来放到我的选项卡表单中,也不行。最终只停留到http://127.0.0.1/admin/_handle_form_
而且这里的admin还是旧的。
请教这个功能应该怎么实现。
哪位大神解答一下。