#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:
Есть несколько причин, которые могли бы вызвать это:
- Маршрут не существует — маловероятно, поскольку вы проверили свой
route:list
- Маршрут, на который вы перенаправляете, не существует — типичным ответом на
POST
запрос к контроллеру являетсяredirect()
представление или маршрут. Возможно, именно здесь возникает ваша ошибка. - У вас есть два или более маршрутов, которые будут соответствовать URL-адресу — это может произойти случайно из-за порядка, в котором маршруты оцениваются сверху вниз в ваших файлах маршрутов.
Ответ №2:
если вы попытаетесь создать URL вручную и поместить в браузер, чтобы перейти к / регистрация, что произойдет? если вы получаете 404, хотя вы жестко ввели URL в браузере, значит, у вас что-то не так в web.php другая запись может быть
Комментарии:
1. Это то же самое, я все еще получаю ту же ошибку
2. пересмотрите web.php может быть, какая-то запись недействительна или удвоена
Ответ №3:
Я решил это, ребята. Я использовал командную строку для ввода кода «php artisan serve —port = xxxx», xxxx — это номера нового порта, к которому я подключил laravel, а затем я смог получить трассировку стека, нажав кнопку регистрации в созданной мной форме. Я увидел, где была ошибка. Итак, я забыл знак доллара в моем UserController.php код. Спасибо за ваши усилия, ребята.