Laravel 5.2 App \ Http \ Controllers \ Auth \ AuthController @ register不存在

时间:2016-02-01 23:33:47

标签: laravel laravel-5 laravel-5.2

我很困惑,当 laravel 5.2 中的i php artisan route:list时,我收到了一堆通过访问特定网址执行的网址和方法。例如,当我访问laravel.app/register它显示注册表单时,我可以找到控制器但不能找到名为ShowRegistrationForm的函数(方法)。 我在哪里可以找到 ShowRegistrationForm 我只是看不出它是如何工作的。

| Domain | Method   | URI                     | Name | Action                                                          | Middleware |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+
|        | GET|HEAD | /                       |      | Closure                                                         |            |
|        | GET|HEAD | articles                |      | App\Http\Controllers\ArticlesController@index                   | web        |
|        | GET|HEAD | articles/create         |      | App\Http\Controllers\ArticlesController@create                  | web        |
|        | POST     | articles/store          |      | App\Http\Controllers\ArticlesController@store                   | web        |
|        | PATCH    | articles/{id}           |      | App\Http\Controllers\ArticlesController@update                  | web        |
|        | GET|HEAD | articles/{id}           |      | App\Http\Controllers\ArticlesController@show                    | web        |
|        | GET|HEAD | articles/{id}/edit      |      | App\Http\Controllers\ArticlesController@edit                    | web        |
|        | GET|HEAD | home                    |      | App\Http\Controllers\HomeController@index                       | web,auth   |
|        | GET|HEAD | login                   |      | App\Http\Controllers\Auth\AuthController@showLoginForm          | web,guest  |
|        | POST     | login                   |      | App\Http\Controllers\Auth\AuthController@login                  | web,guest  |
|        | GET|HEAD | logout                  |      | App\Http\Controllers\Auth\AuthController@logout                 | web        |
|        | POST     | password/email          |      | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | web,guest  |
|        | POST     | password/reset          |      | App\Http\Controllers\Auth\PasswordController@reset              | web,guest  |
|        | GET|HEAD | password/reset/{token?} |      | App\Http\Controllers\Auth\PasswordController@showResetForm      | web,guest  |
|        | GET|HEAD | register                |      | App\Http\Controllers\Auth\AuthController@showRegistrationForm   | web,guest  |
|        | POST     | register                |      | App\Http\Controllers\Auth\AuthController@register               | web,guest 

2 个答案:

答案 0 :(得分:2)

默认AuthController使用Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers特征,后者又使用Illuminate\Foundation\Auth\RegistersUsers特征。

如果您打开该文件,您会看到您要查找的方法:https://github.com/laravel/framework/blob/5.2/src/Illuminate/Foundation/Auth/RegistersUsers.php

public function showRegistrationForm()
{
    if (property_exists($this, 'registerView')) {
        return view($this->registerView);
    }
    return view('auth.register');
}

public function register(Request $request)
{
    $validator = $this->validator($request->all());
    if ($validator->fails()) {
        $this->throwValidationException(
            $request, $validator
        );
    }
    Auth::guard($this->getGuard())->login($this->create($request->all()));
    return redirect($this->redirectPath());
}

编辑:PHP 5.4引入了"traits"。将特征视为可重复使用的代码片段。我认为最简单的解释方法就是把它们想象成复制/粘贴。您创建了一个具有一些共同功能的特征。然后,当您“使用”特征时,它会继承所有这些属性和方法。

答案 1 :(得分:0)

将数据从注册发送到两个不同的表的方法是什么?这是一个好主意还是完全错误的想法?

protected function create(array $data) {

        $user = User::create([
                    'firstname' => $data['firstname'],
                    'lastname' => $data['lastname'],
                    'middlename' => $data['middlename'],
                    'usertype' => $data['usertype'],
                    'email' => $data['email'],
                    'password' => bcrypt($data['password']),
        ]);
        $company = Company::create([
                    'ICO' => $data['ICO'],
                    'user_id' => $user['id'],
        ]);
        return $user;
    }