Проверка Laravel не работает

Я прохожу курс 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

измените атрибут name вашего первого поля пароля с pass2 на pass

erickb 08.05.2018 11:09

Что это за курс? Просто быстрые советы: не используйте _ в функциях, которые являются частью объекта (в данном случае register_form), используйте соглашения, назовите свои маршруты, используйте группы, используйте полные имена для переменных вместо pass, используйте password, попробуйте использовать помощник dd(), в этом пример в функции register в конце добавьте dd($request->all()) и посмотрите, что вы на самом деле отправляете ... Удачи!

Kyslik 08.05.2018 11:11

Ооо, это моя ошибка, я переписываю форму, потому что я разочаровался, хотя я изменил имя, чтобы пройти проверку, все еще не работает, как должно быть

user9746625 08.05.2018 11:15

@Nikola Тогда, пожалуйста, обновите и код в вопросе, чтобы новые люди, которые задают этот вопрос, могли помочь вам с реальной проблемой вместо того, чтобы снова направлять вас к тому же атрибуту имени pass2.

Omar Tarek 08.05.2018 12:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
823
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Измените эту строку:

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. Однако я пробовал это, но он по-прежнему перенаправляет на пустую страницу.

user9746625 08.05.2018 11:24

это потому, что вы никуда его не перенаправляете. измените функцию на этот общедоступный регистр функций (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'); } // РЕГИСТРАЦИЯ ПОЛЬЗОВАТЕЛЯ ЗДЕСЬ ПРОВЕРКА УСПЕШНА}

Shahrukh Khan 08.05.2018 11:26

Вы используете одно и то же имя для пароля и подтверждения пароля. Измените имя пароля, чтобы передать его в файл лезвия, и попробуйте вместо этого использовать эту проверку

$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');

Другие вопросы по теме