我很困惑,当 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
答案 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;
}