这是我的环境-> 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
的{{1}},但是奇怪的是没有这样的名称。
| 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();
}
}
能请你帮我吗? 我期待着您回答这个问题。 谢谢。
答案 0 :(得分:1)
命名路由仅在此处用于轻松生成URLs
。因此,命名路由仅是为了简化代码维护,这不是必需的。
您必须记住,命名仅引用路由声明的URI
部分,没有方法定义。
因此,用相同的URI
和不同的method
命名两个路由声明是多余的,因为您必须给它们指定相同的名称。而且,如果您不提供相同的名称,您将拥有两个具有相同URL
构造函数的命名路由。
这就是为什么您看到这样的代码的原因:
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
第二行不需要不需要名称,因为它已经从第一行开始了。