laravel 中未定义路由 [signup]

Route [signup] not defined in laravel

我是 Laravel 的新手。我正在学习如何创建用户注册页面。一切正常,但我陷入了一个简单的问题。

ErrorException in UrlGenerator.php line 304: Route [signup] not defined. (View: C:\Program Files (x86)\Ampps\www\social\resources\views\welcome.blade.php)

但是我定义了注册路径。这是我的 routes.php 文件

Route::get('/', function () {
  return view('welcome');
})->name('home');
Route::post('/signup', [
    'uses' => 'UserController@postSignUp',
    'as' => 'signup'
]);

这是我的 UserController.php

class UserController extends Controller
{
    public function postSignUp(Request $request)
    {
        $email = $request['email'];
        $first_name = $request['frist_name'];
        $password = bcrypt($request['password']);


        $user = new User();
        $user->email = $email;
        $user->frist_name = $first_name;
        $user->password = $password;

        $user->save();

        return redirect()->back();

Blade 文件是 welcome.blade.php

 <form action="{{ route('signup') }}" method="post">
         <div class="form-group">
           <label for="email"> Your E-mail </label>
           <input class ="form-control" type="text" id="email" name="email" >
         </div>

如果有人能帮助我,我将不胜感激。 谢谢

哦,对不起。我忘了说我正在使用 Laravel 版本:5.4.11

尝试

<form action="/signup" method="POST">
         <div class="form-group">
           <label for="email"> Your E-mail </label>
           <input class ="form-control" type="text" id="email" name="email" >
         </div>

laravel 提供内置身份验证功能,您在 select 项目后在终端中键入以下命令:

php artisan make:auth

并且您可以使用登录、注册和更改密码功能。 另请参阅 laravel 身份验证

希望对你有所帮助

只是为了完整起见,正如@StuartWagner 回复的那样,因为 Laravel 5.4 所有路线都在 /routes 文件夹内,而不是在 HTTP 文件夹内。

Web 路由在 /routes/web.php 文件中。

这经常被要求,否则,您将需要深入浏览三个级别才能获得路线。

现在好多了,它们在 /routes 文件夹中。

您可以将 {{route('/signup')}} 更改为 {{URL('/signup')}}

<form action="{{ URL('signup') }}" method="post">
    <div class="form-group">
    <label for="email"> Your E-mail </label>
   <input class ="form-control" type="text" id="email" name="email" >
  </div>

我知道它有点旧但想贡献 :)

Route::post('/signup', [uses' => 'UserController@postSignUp','as' => 'signup']);

为路线添加名称

Route::post('/signup', [uses' => 'UserController@postSignUp','as' => 'signup'])->name(signup);

当您在 blade 模板中使用路由时,您必须为路由指定名称以识别

<form action="{{ route('signup') }}" method="post">
         <div class="form-group">
           <label for="email"> Your E-mail </label>
           <input class ="form-control" type="text" id="email" name="email" >
         </div>