Я прохожу курс laravel, чтобы следовать курсу, который я должен исправить, я проверил все, и, по-видимому, все такое же, как показывает мне этот парень. Но разница в том, что его проверка работает, а моя - нет. Он должен перенаправить меня в register_form, когда проверка недействительна, но это не так.
Маршрут
Route::get('/', function(){
return view('welcome');
});
Route::get('/register', 'HomeController@register_form');
Route::post('/register', 'HomeController@register');
Контроллер
namespace CoolBlog\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller {
public function register_form(){
return view('register');
}
public function register(Request $request) {
$this->validate($request, [
'username' => 'min:5|max:30',
'email' => 'email',
'pass' => 'min:5',
'pass2' => 'same:pass'
]);
}
}
HTML-страница
@extends('layout.default')
@section('title', 'Registration')
@section('content')
<form method = "post" action = "/register" >
{{csrf_field()}}
Name: <input type = "text" name = "username"><br>
E-mail: <input type = "text" name = "email"><br>
Password: <input type = "password" name = "pass2"><br>
Re-Password: <input type = "password" name = "pass2"><br>
<input type = "submit" value = "Register">
</form>
@endsection
Что это за курс? Просто быстрые советы: не используйте _ в функциях, которые являются частью объекта (в данном случае register_form), используйте соглашения, назовите свои маршруты, используйте группы, используйте полные имена для переменных вместо pass, используйте password, попробуйте использовать помощник dd(), в этом пример в функции register в конце добавьте dd($request->all()) и посмотрите, что вы на самом деле отправляете ... Удачи!
Ооо, это моя ошибка, я переписываю форму, потому что я разочаровался, хотя я изменил имя, чтобы пройти проверку, все еще не работает, как должно быть
@Nikola Тогда, пожалуйста, обновите и код в вопросе, чтобы новые люди, которые задают этот вопрос, могли помочь вам с реальной проблемой вместо того, чтобы снова направлять вас к тому же атрибуту имени pass2.






Измените эту строку:
Password: <input type = "password" name = "pass2"><br>
Re-Password: <input type = "password" name = "pass2"><br>
и замените это на это:
Password: <input type = "password" name = "pass"><br>
Re-Password: <input type = "password" name = "pass2"><br>
и в вашей валидации, если вы хотите, чтобы какое-либо поле было обязательным, добавьте необходимое в валидацию
$this->validate($request, [
'username' => 'required|min:5|max:30',
'email' => 'required|email',
'pass' => 'required|min:5',
'pass2' => 'required|same:pass'
]);
Я тоже думал об этом, но я понял, что когда я отправляю пустую форму, результат должен быть таким же, как и при помещении require перед ними, потому что форма проверки в какой-то момент должна возвращать false. Однако я пробовал это, но он по-прежнему перенаправляет на пустую страницу.
это потому, что вы никуда его не перенаправляете. измените функцию на этот общедоступный регистр функций (Request $ request) {$ validator = $ this-> validate ($ request, ['username' => 'min: 5 | max: 30', 'email' => 'email') , 'pass' => 'min: 5', 'pass2' => 'same: pass']); if ($ validator-> fails ()) {return redirect ('YOUR_REDIRECTION ROUTE HERE'); } // РЕГИСТРАЦИЯ ПОЛЬЗОВАТЕЛЯ ЗДЕСЬ ПРОВЕРКА УСПЕШНА}
Вы используете одно и то же имя для пароля и подтверждения пароля. Измените имя пароля, чтобы передать его в файл лезвия, и попробуйте вместо этого использовать эту проверку
$this->validate($request, [
'username' => 'required|min:5|max:30',
'email' => 'required|max:255|unique:users',
'pass' => 'required|min:6|confirmed'
]);
Я видел, что вы не вернетесь ни к какому маршруту после проверки значений формы. Итак, не могли бы вы попробовать этот формат кода. метод проверки также обновлен в версиях laravel верхнего уровня
function store(Request $request)
{
request()->validate([
'title' => 'required',
'body' => 'required',
]);
Post::create($request->all());
return redirect()->route('posts.index')->with('success', 'Post created successfully');
измените атрибут
nameвашего первого поля пароля сpass2наpass