Как использовать сообщения SweetAlert для проверки в Laravel 8

#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>
 

ссылки :

документы laravel (1)
репозиторий uxweb / sweet-alert (2)

Комментарии:

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; к своему контроллеру? он должен быть добавлен, иначе ваш контроллер не сможет найти класс. пожалуйста, внимательно прочитайте использование: ссылка вы также можете найти там много способов достичь того, чего вы хотите