[Laravel]リクエストのルーティング


Laravel公開のKakaoTalkで活動しています
これにより、質問や回答が多く見られますが、ラベルの公式ドキュメントに記載されていない機能には簡単に解決できる問題がたくさんあります.ブログでこれらの部分を少し整理したいと思います.

n.問題



ソリューション


コードを減らす方法を聞かれ、まずラベルの正式なドキュメントでrequest()->routeIs()の方法を説明しました.
Laravel8.x requests#inspecting-the-request-path
The is method allows you to verify that the incoming request path matches a given pattern. You may use the * character as a wildcard when utilizing this method:
パターンに従って調整するが、例や説明のみでは画像コードを簡略化する方法は見られない.
こういう時はラベルソースコードを見るのが便利です.
request()のソースコード
public function routeIs(...$patterns)
    {
        return $this->route() && $this->route()->named(...$patterns);
    }
パラメータとして高速演算子が受信されていることがわかります.
では、いくつ入れたらいいですか.と思いましたが、テストが面倒なので、named(...$patterns)のコードをもう一度調べることにしました.
Illuminateroutingrouteのコード
   public function named(...$patterns)
    {
        if (is_null($routeName = $this->getName())) {
            return false;
        }
        foreach ($patterns as $pattern) {
            if (Str::is($pattern, $routeName)) {
                return true;
            }
        }
        return false;
    }
このコードから、$patternsの1つのモードが一致する限りtrue値が返されることがわかる.
このようにして、上記のコードはrouteIs(「users」,「Users-Status」)のように正常に動作することができる.