Ошибка Laravel «404 не найдено» появляется каждый раз, когда я пытаюсь отправить форму регистрации, которую я создал

#php #laravel #http-status-code-404

#php #laravel #http-status-code-404

Вопрос:

Я уже несколько дней в laravel, и меня ведет руководство. Мне было предложено создать форму регистрации и войти в систему. Проблема в том, что всякий раз, когда я нажимаю кнопку отправки после заполнения формы регистрации, я получаю ошибку «404, не найдено». Я также запустил «php artisan route: list» в командной строке, и там указан мой маршрут регистрации. Хуже всего то, что я понятия не имею, откуда исходит ошибка.

Вот код:

 WEB.PHP
use IlluminateSupportFacadesRoute;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/



Route :: group (['middleware' => ['web']], function () {
   Route::get('/', function () {
    return view('welcome');
   });
   Route::post('/signup', [
        'uses' => 'UserController@postSignUp',
        'as' => 'signup'
   ]);
    
});
?>
  

 WELCOME.BLADE.PHP

@extends('layouts.master')

@section ('title')
welcome!
@endsection


@section ('content')
<div class = "row">
    <div class = "col-md-6">
        <h3> Sign Up </h3>
        <form action ="{{route ('signup')}}" method = "post">
          <div class = "form-group">
                <label for= "email"> your E-mail </label>
                <input class = "form-control" type="text" name = "email" id= "email">
          </div>
          <div class = "form-group">
                <label for= "first_name"> your first name </label>
                <input class = "form-control" type="text" name = "first_name" id= "first_name">
          </div>
          
          <div class = "form-group">
                <label for= "password"> your password </label>
                <input class = "form-control" type="password" name = "password" id= "password">    
          </div>
          <button type = "submit" class = "btn btn-primary">submit</button>
        <input type = "hidden" name = "_token" value="{{Session::token() }}">
        </form>
                
</div>
<div class = "col-md-6">
    <h3> Sign In </h3>
        <form action = "#" method = "post">
          <div class = "form-group">
                <label for= "email"> your E-mail </label>
                <input class = "form-control" type="text" name = "email" id= "email">
          </div>
          
          
          <div class = "form-group">
                <label for= "password"> your password </label>
                <input class = "form-control" type="password" name = "password" id= "password">    
          </div>
          <button type = "submit" class = "btn btn-primary">submit</button>    
        </form>
                
    </div>
@endsection
  

Это файл UserController, ребята

ПОЛЬЗОВАТЕЛЬ CONTROLLER.PHP


 <?php
namespace AppHttpControllers;

use Appuser;
use IlluminateHttpRequest;

class UserController extends Controller {
    public function postSignUp(Request $request){
        $email = $request ['email'];
        $first_name = $request ['first_name'];
        $password = bcrypt($request ['password']);
        
        $user = new user();
        $user -> email = $email;
        $user -> first_name = first_name;
        $user -> password = $password;
        
        $user -> save();
        
        return redirect() -> back();
        
        
    }

    public function postSignIn (Request $request){
        
    
    }

}


?>
  

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

1. Можете ли вы показать UserController?

2. Маршрут::post(‘url’, ‘остальной код’)-> name(‘регистрация’);

Ответ №1:

Есть несколько причин, которые могли бы вызвать это:

  1. Маршрут не существует — маловероятно, поскольку вы проверили свой route:list
  2. Маршрут, на который вы перенаправляете, не существует — типичным ответом на POST запрос к контроллеру является redirect() представление или маршрут. Возможно, именно здесь возникает ваша ошибка.
  3. У вас есть два или более маршрутов, которые будут соответствовать URL-адресу — это может произойти случайно из-за порядка, в котором маршруты оцениваются сверху вниз в ваших файлах маршрутов.

Ответ №2:

если вы попытаетесь создать URL вручную и поместить в браузер, чтобы перейти к / регистрация, что произойдет? если вы получаете 404, хотя вы жестко ввели URL в браузере, значит, у вас что-то не так в web.php другая запись может быть

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

1. Это то же самое, я все еще получаю ту же ошибку

2. пересмотрите web.php может быть, какая-то запись недействительна или удвоена

Ответ №3:

Я решил это, ребята. Я использовал командную строку для ввода кода «php artisan serve —port = xxxx», xxxx — это номера нового порта, к которому я подключил laravel, а затем я смог получить трассировку стека, нажав кнопку регистрации в созданной мной форме. Я увидел, где была ошибка. Итак, я забыл знак доллара в моем UserController.php код. Спасибо за ваши усилия, ребята.