在这种情况下,为什么route()在Laravel上工作?

问题描述 投票:2回答:1

这是我的环境 - > 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找到loginroute: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();
        }
    }

你能帮帮我吗?我期待着你回答这个问题。谢谢。

php mysql laravel view
1个回答
1
投票

命名路线只是为了容易生成URLs。因此,命名路由只是为了更容易的代码维护,它不是强制性的。

您必须记住,命名仅指路由声明的URI部分,没有方法定义。

因此,使用相同的URI和不同的method命名两个路由声明是多余的,因为您必须给它们相同的名称。如果你没有给出相同的名字,你将有两个命名路由与相同的URL构造函数。

这就是你看到这样的代码的原因:

$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');

第二行不需要名称,因为它已经是第一行。

© www.soinside.com 2019 - 2024. All rights reserved.