安装引导表单提交增加ajax验证数据库连接
This commit is contained in:
parent
542f777fb0
commit
a3ce0b63d0
|
|
@ -58,7 +58,7 @@ class EnvironmentController extends Controller
|
|||
return $redirect->route('installer.environment')->withInput()->withErrors($validator->errors());
|
||||
}
|
||||
|
||||
if (! $this->checkDatabaseConnection($request)) {
|
||||
if ($this->checkDatabaseConnection($request) !== true) {
|
||||
return $redirect->route('installer.environment')->withInput()->withErrors([
|
||||
'database_connection' => trans('installer::installer_messages.environment.db_connection_failed'),
|
||||
]);
|
||||
|
|
@ -74,6 +74,28 @@ class EnvironmentController extends Controller
|
|||
return redirect(route('installer.database', $params));
|
||||
}
|
||||
|
||||
public function validateDatabase(Request $request)
|
||||
{
|
||||
$rules = config('installer.environment.form.rules');
|
||||
$messages = [
|
||||
'environment_custom.required_if' => trans('installer::installer_messages.environment.name_required'),
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return json_fail('', $validator->errors());
|
||||
}
|
||||
|
||||
$dbValidateResult = $this->checkDatabaseConnection($request);
|
||||
if ($dbValidateResult !== true) {
|
||||
return json_fail('', $dbValidateResult);
|
||||
}
|
||||
|
||||
return json_success('');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* TODO: We can remove this code if PR will be merged: https://github.com/RachidLaasri/LaravelInstaller/pull/162
|
||||
* Validate database connection with user credentials (Form Wizard).
|
||||
|
|
@ -110,9 +132,26 @@ class EnvironmentController extends Controller
|
|||
|
||||
try {
|
||||
DB::connection()->getPdo();
|
||||
|
||||
return true;
|
||||
} catch (Exception $e) {
|
||||
dd($e);
|
||||
return false;
|
||||
$result = [];
|
||||
switch ($e->getCode()) {
|
||||
case 2002:
|
||||
$result['database_hostname'] = trans('installer::installer_messages.environment.db_connection_failed_host_port');
|
||||
$result['database_port'] = trans('installer::installer_messages.environment.db_connection_failed_host_port');
|
||||
break;
|
||||
case 1045:
|
||||
$result['database_username'] = trans('installer::installer_messages.environment.db_connection_failed_user_password');
|
||||
$result['database_password'] = trans('installer::installer_messages.environment.db_connection_failed_user_password');
|
||||
break;
|
||||
case 1049:
|
||||
$result['database_name'] = trans('installer::installer_messages.environment.db_connection_failed_database_name');
|
||||
break;
|
||||
default:
|
||||
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,6 +69,9 @@ return [
|
|||
'app_name_label' => 'App Name',
|
||||
'app_name_placeholder' => 'App Name',
|
||||
'app_environment_label' => 'App Environment',
|
||||
'db_connection_failed_host_port' => 'Database host or port error!',
|
||||
'db_connection_failed_user_password' => 'Database username or password error!',
|
||||
'db_connection_failed_database_name' => 'Database name not exist!',
|
||||
'app_environment_label_local' => 'Local',
|
||||
'app_environment_label_developement' => 'Development',
|
||||
'app_environment_label_qa' => 'Qa',
|
||||
|
|
|
|||
|
|
@ -65,6 +65,9 @@ return [
|
|||
'app_url_placeholder' => '输入您的应用URL',
|
||||
'db_connection_failed' => '无法连接到数据库!',
|
||||
'db_connection_label' => '数据库连接',
|
||||
'db_connection_failed_host_port' => '数据库主机或端口错误!',
|
||||
'db_connection_failed_user_password' => '数据库账号或密码错误!',
|
||||
'db_connection_failed_database_name' => '数据库名不存在!',
|
||||
'db_connection_label_mysql' => 'mysql',
|
||||
'db_connection_label_sqlite' => 'sqlite',
|
||||
'db_connection_label_pgsql' => 'pgsql',
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ Route::prefix('installer')
|
|||
Route::get('lang/{lang}', [WelcomeController::class, 'locale'])->name('lang.switch');
|
||||
Route::get('environment', [EnvironmentController::class, 'index'])->name('environment');
|
||||
Route::post('environment/save', [EnvironmentController::class, 'saveWizard'])->name('environment.save');
|
||||
Route::post('environment/validate_db', [EnvironmentController::class, 'validateDatabase'])->name('environment.validate_db');
|
||||
Route::get('database', [DatabaseController::class, 'index'])->name('database');
|
||||
Route::get('final', [FinalController::class, 'index'])->name('final');
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue