验证错误后保持模态对话框打开 laravel
Keeping modal dialog open after validation error laravel
所以基本上我有一个 blade.php,控制器页面和一个表单请求页面(验证)。如果出现错误,我试图让我的模式对话框保持打开状态,但我无法弄清楚,我遗漏了或需要更改代码的哪一部分?
blade.php
<div id="register" class="modal fade" role="dialog">
...
<script type="text/javascript">
if ({{ Input::old('autoOpenModal', 'false') }}) {
//JavaScript code that open up your modal.
$('#register').modal('show');
}
</script>
Controller.php
class ManageAccountsController extends Controller
{
public $userRepository;
public function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}
public function index()
{
$users = User::orderBy('name')->get();
$roles = Role::all();
return view('manage_accounts', compact('users', 'roles'));
}
public function register(StoreNewUserRequest $request)
{
// process the form here
$this->userRepository->upsert($request);
Session::flash('flash_message', 'User successfully added!');
//$input = Input::except('password', 'password_confirm');
//$input['autoOpenModal'] = 'true'; //Add the auto open indicator flag as an input.
return redirect()->back();
}
}
class UserRepository {
public function upsert($data)
{
// Now we can separate this upsert function here
$user = new User;
$user->name = $data['name'];
$user->email = $data['email'];
$user->password = Hash::make($data['password']);
$user->mobile = $data['mobile'];
$user->role_id = $data['role_id'];
// save our user
$user->save();
return $user;
}
}
request.php
class StoreNewUserRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
// create the validation rules ------------------------
return [
'name' => 'required', // just a normal required validation
'email' => 'required|email|unique:users', // required and must be unique in the user table
'password' => 'required|min:8|alpha_num',
'password_confirm' => 'required|same:password', // required and has to match the password field
'mobile' => 'required',
'role_id' => 'required'
];
}
}
Laravel 自动检查会话数据中的错误,因此,$errors
变量实际上始终可用于您的所有视图。如果你想在出现任何错误时显示模态,你可以尝试这样的事情:
<script type="text/javascript">
@if (count($errors) > 0)
$('#register').modal('show');
@endif
</script>
将 If 条件放在脚本之外。以上在我的情况下不起作用
@if (count($errors) > 0)
<script type="text/javascript">
$( document ).ready(function() {
$('#exampleModal2').modal('show');
});
</script>
@endif
只需将模态名称替换为“login-modal”。为避免错误,将其放在您链接的 jquery 文件或 jquery 初始化的文件之后。
<?php if(count($login_errors)>0) : ?>
<script>
$( document ).ready(function() {
$('#login-modal').modal('show');
});
</script>
<?php endif ?>
对于可能的多模态 windows 您可以像下面这样扩展 Thomas Kim 的代码:
<script type="text/javascript">
@if ($errors->has('email_dispatcher')||$errors->has('name_dispatcher')|| ... )
$('#register_dispatcher').modal('show');
@endif
@if ($errors->has('email_driver')||$errors->has('name_driver')|| ... )
$('#register_driver').modal('show');
@endif
...
</script>
其中 email_dispatcher
、name_dispatcher
、email_driver
、name_driver
您的请求名称是否正在验证中
所以基本上我有一个 blade.php,控制器页面和一个表单请求页面(验证)。如果出现错误,我试图让我的模式对话框保持打开状态,但我无法弄清楚,我遗漏了或需要更改代码的哪一部分?
blade.php
<div id="register" class="modal fade" role="dialog">
...
<script type="text/javascript">
if ({{ Input::old('autoOpenModal', 'false') }}) {
//JavaScript code that open up your modal.
$('#register').modal('show');
}
</script>
Controller.php
class ManageAccountsController extends Controller
{
public $userRepository;
public function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}
public function index()
{
$users = User::orderBy('name')->get();
$roles = Role::all();
return view('manage_accounts', compact('users', 'roles'));
}
public function register(StoreNewUserRequest $request)
{
// process the form here
$this->userRepository->upsert($request);
Session::flash('flash_message', 'User successfully added!');
//$input = Input::except('password', 'password_confirm');
//$input['autoOpenModal'] = 'true'; //Add the auto open indicator flag as an input.
return redirect()->back();
}
}
class UserRepository {
public function upsert($data)
{
// Now we can separate this upsert function here
$user = new User;
$user->name = $data['name'];
$user->email = $data['email'];
$user->password = Hash::make($data['password']);
$user->mobile = $data['mobile'];
$user->role_id = $data['role_id'];
// save our user
$user->save();
return $user;
}
}
request.php
class StoreNewUserRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
// create the validation rules ------------------------
return [
'name' => 'required', // just a normal required validation
'email' => 'required|email|unique:users', // required and must be unique in the user table
'password' => 'required|min:8|alpha_num',
'password_confirm' => 'required|same:password', // required and has to match the password field
'mobile' => 'required',
'role_id' => 'required'
];
}
}
Laravel 自动检查会话数据中的错误,因此,$errors
变量实际上始终可用于您的所有视图。如果你想在出现任何错误时显示模态,你可以尝试这样的事情:
<script type="text/javascript">
@if (count($errors) > 0)
$('#register').modal('show');
@endif
</script>
将 If 条件放在脚本之外。以上在我的情况下不起作用
@if (count($errors) > 0)
<script type="text/javascript">
$( document ).ready(function() {
$('#exampleModal2').modal('show');
});
</script>
@endif
只需将模态名称替换为“login-modal”。为避免错误,将其放在您链接的 jquery 文件或 jquery 初始化的文件之后。
<?php if(count($login_errors)>0) : ?>
<script>
$( document ).ready(function() {
$('#login-modal').modal('show');
});
</script>
<?php endif ?>
对于可能的多模态 windows 您可以像下面这样扩展 Thomas Kim 的代码:
<script type="text/javascript">
@if ($errors->has('email_dispatcher')||$errors->has('name_dispatcher')|| ... )
$('#register_dispatcher').modal('show');
@endif
@if ($errors->has('email_driver')||$errors->has('name_driver')|| ... )
$('#register_driver').modal('show');
@endif
...
</script>
其中 email_dispatcher
、name_dispatcher
、email_driver
、name_driver
您的请求名称是否正在验证中