【问题标题】:Route [signup] not defined in laravelRoute [signup] 未在 laravel 中定义
【发布时间】:2017-07-07 18:33:10
【问题描述】:

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

UrlGenerator.php 第 304 行中的 ErrorException: 路线 [注册] 未定义。 (查看: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();

刀片文件是 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

【问题讨论】:

  • 尝试运行composer installphp artisan route:clear
  • Route::post('/signup', ['as' => 'signup','uses'=>'UserController@postSignUp']);并且表单操作是
    使用它会起作用...
  • 谢谢@StuartWagner 我做了所有,但它不起作用:(
  • 尝试php artisan route:list 并确保您的“注册”路线出现。
  • @Sona 是的,它显示了欢迎页面,但是当我通过表单提交数据时,它显示 NotFoundHttpException in RouteCollection.php line 161

标签: php laravel laravel-5 laravel-5.3 laravel-5.4


【解决方案1】:

试试

<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>

【讨论】:

    【解决方案2】:

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

    php artisan make:auth
    

    您可以使用登录、注册和更改密码功能。

    参考:

    https://laravel.com/docs/5.4/authentication
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      为了完整起见,正如@StuartWagner 回答的那样,从 Laravel 5.4 开始,所有路由都在 /routes 文件夹内,而不再在 HTTP 文件夹内。

      网络路由位于/routes/web.php 文件中。

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

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

      【讨论】:

        【解决方案4】:

        您可以将{{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>
        

        【讨论】:

        • 谢谢救了我
        【解决方案5】:

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

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

        为路线添加名称

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

        当您在刀片模板中使用路由时,您必须为您的路由命名以识别

        <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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-01-28
          • 2017-09-05
          • 2018-08-23
          • 2021-11-30
          • 2020-06-08
          • 2017-10-25
          • 2019-03-18
          相关资源
          最近更新 更多