#php #laravel #sweetalert #laravel-8 #laravel-validation
#php #laravel #sweetalert #laravel-8 #laravel-проверка
Вопрос:
Я использую Laravel для разработки своего проекта, и я хочу возвращать сообщение об ошибке SweetAlert, когда пользователь НЕ ОТМЕЧАЕТ Recaptcha. Я закодировал это в LoginController.php
:
use AppProvidersSweetAlertServiceProvider;
protected function validateLogin(Request $request)
{
$request->validate([
$this->username() => 'required|string',
'password' => 'required|string',
'g-recaptcha-response' => ['required' , new Recaptcha]
],[
'g-recaptcha-response.required' => alert()
->error('Bad','Attempt')->persistent('Ok')
]);
}
Вместо отображения предупреждения он возвращает следующее сообщение.
Ошибка Объект класса UxWeb SweetAlert SweetAlertNotifier не удалось преобразовать в строку
Тем не менее, я уже добавил эту строку config/app.php
в раздел поставщика.
UxWebSweetAlertSweetAlertServiceProvider::class
Так что же здесь не так? Что еще я должен был сделать, чтобы вернуть это предупреждающее сообщение?
Комментарии:
1. Вы пробовали использовать
composer dump-autoload
для очистки кэша автозагрузки?2. Да, я уже делал, но бесполезно
3. Вы не можете этого сделать, мой друг, поскольку проверка возвращает текст, но это предупреждение, которое вы хотите использовать, возвращает файловый сеанс!
Ответ №1:
Вы можете использовать ручную проверку, чтобы вернуть что-то отличное от строки :
$validator = Validator::make($request->all(), [
'username' => 'required|unique:posts|max:255',
'password' => 'required',
'g-recaptcha-response' => ['required' , new Recaptcha]
]);
if ($validator->fails()) {
if($validator->errors()->has('g-recaptcha-response'))
SweetAlert::error('please validate the captcha, thanks !')
return redirect()
->back()
->withErrors($validator)
->withInput();
}
также убедитесь, что вы установили и включили sweetalert в свой код :
установка :
composer require uxweb/sweet-alert
в вашем контроллере :
use SweetAlert;
в вашем представлении блейда :
<html lang="en">
<head>
<!-- Include this in your blade layout -->
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
</head>
<body>
@include('sweet::alert')
</body>
</html>
ссылки :
Комментарии:
1. Теперь я получаю
Class 'AppHttpControllersAuthSweetAlert' not found
сообщение об ошибке2. @fojbiu добавить
use SweetAlert;
в свой контроллер.3. Здравствуйте, прежде чем пытаться использовать sweet alert, попробуйте установить его в корневой директории вашего приложения и запустить в cmd / terminal composer требуется SweetAlert
4. Я установил пакет Sweet Alert с Composer, который я включил
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
в разделapp.blade.php
«Заголовок», а также добавил@yield('form')
в раздел «Тело» этой страницы. Затем я правильно включил его в свой клинок. После этого я сделал то, что вы сказали в своем ответе. Но все равно получаю эту ошибку:Class 'SweetAlert' not found
:(((5. @fojbiu Ты что-нибудь добавил
use SweetAlert;
к своему контроллеру? он должен быть добавлен, иначе ваш контроллер не сможет найти класс. пожалуйста, внимательно прочитайте использование: ссылка вы также можете найти там много способов достичь того, чего вы хотите