这是我的环境 - > Laravel 5.7,PHP 7.1,Mysql 5.7
我是Laravel的新人。我使用make:auth
的命令来使用身份验证系统然后login.blade.php
由它制作。在login.blade.php
,这条线是默认的。
<form method="POST" action="{{ route('login') }}">
按照规则,我试图在Name
找到login
的route:list
,但没有奇怪的名字。
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+------------------------+------------------+------------------------------------------------------------------------+--------------+
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest |
它应该是POST方法的记录,因为根据form
,它是POST方法,对吧?即使在route:list
中没有Name,这个应用程序也能以某种方式工作。
我戴上Router.php
的绳索以防万一。
public function auth(array $options = [])
{
// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
if ($options['register'] ?? true) {
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');
}
// Password Reset Routes...
if ($options['reset'] ?? true) {
$this->resetPassword();
}
// Email Verification Routes...
if ($options['verify'] ?? false) {
$this->emailVerification();
}
}
你能帮帮我吗?我期待着你回答这个问题。谢谢。
命名路线只是为了容易生成URLs
。因此,命名路由只是为了更容易的代码维护,它不是强制性的。
您必须记住,命名仅指路由声明的URI
部分,没有方法定义。
因此,使用相同的URI
和不同的method
命名两个路由声明是多余的,因为您必须给它们相同的名称。如果你没有给出相同的名字,你将有两个命名路由与相同的URL
构造函数。
这就是你看到这样的代码的原因:
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
第二行不需要名称,因为它已经是第一行。