2016-02-01 5 views
2

Я смущен, когда i php artisan route:list в laravel 5.2 Я получаю кучу URL-адресов и методов, которые выполняются путем посещения определенного URL-адреса. например, когда я посещаю laravel.app/register, он показывает регистрационную форму, я могу найти контроллер, но не функцию (метод), называемую ShowRegistrationForm. Где я могу найти, что ShowRegistrationForm? Я просто не вижу, как это работает.Laravel 5.2 App Http Controllers Auth AuthController @ register не существует

| Domain | Method | URI      | Name | Action               | Middleware | 
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+ 
|  | GET|HEAD |/      |  | Closure               |   | 
|  | GET|HEAD | articles    |  | App\Http\Controllers\[email protected]     | web  | 
|  | GET|HEAD | articles/create   |  | App\Http\Controllers\[email protected]     | web  | 
|  | POST  | articles/store   |  | App\Http\Controllers\[email protected]     | web  | 
|  | PATCH | articles/{id}   |  | App\Http\Controllers\[email protected]     | web  | 
|  | GET|HEAD | articles/{id}   |  | App\Http\Controllers\[email protected]     | web  | 
|  | GET|HEAD | articles/{id}/edit  |  | App\Http\Controllers\[email protected]     | web  | 
|  | GET|HEAD | home     |  | App\Http\Controllers\[email protected]      | web,auth | 
|  | GET|HEAD | login     |  | App\Http\Controllers\Auth\[email protected]   | web,guest | 
|  | POST  | login     |  | App\Http\Controllers\Auth\[email protected]     | web,guest | 
|  | GET|HEAD | logout     |  | App\Http\Controllers\Auth\[email protected]     | web  | 
|  | POST  | password/email   |  | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | POST  | password/reset   |  | App\Http\Controllers\Auth\[email protected]    | web,guest | 
|  | GET|HEAD | password/reset/{token?} |  | App\Http\Controllers\Auth\[email protected]  | web,guest | 
|  | GET|HEAD | register    |  | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | POST  | register    |  | App\Http\Controllers\Auth\[email protected]    | web,guest 

ответ

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()); 
} 

Edit: PHP 5.4 введен "traits". Подумайте о чертах как многоразовых фрагментов кода. Я думаю, что самый простой способ объяснить это - подумать о них как о копировании/вклеивании. Вы создаете черту, которая имеет некоторые общие функции. Затем, когда вы «используете» признак, он наследует все эти свойства и методы.

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; 
    } 
Смежные вопросы