저는 Laravel 오픈 카카오톡방에서 활동하고 있습니다.
그렇게 있다 보면 많은분들이 질문하시는 것과 답변해주시는 것을 볼 수가 있는데 라라벨 공식문서에는 나와있지 않은 기능들로 쉽게 해결할 수 있는 문제들이 많습니다. 그러한 부분들을 블로그에 조금씩 정리해볼려고 합니다.
해당 코드를 줄일 수 있는 방법을 알려달라는 질문이 있었는데 일단 라라벨 공식문서에서는 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:
패턴에 맞춘다고 되어있으나 해당 예시와 설명만 봐서는 해당 이미지의 코드를 간결하게 할 방법이 보이지 않는다.
이럴때는 라라벨 소스코드를 보면 편하다.
public function routeIs(...$patterns) { return $this->route() && $this->route()->named(...$patterns); }
보면 매개변수로 스프레드 연산자를 받고 있는 것을 알 수 있다.
그렇다면 여러개를 넣어주면 되지 않을까? 싶은데 테스트하기는 귀찮으니 한번더 named(...$patterns)
의 코드를 찾아보기로 하였다.
Illuminate\Routing\Route 의 코드
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
의 패턴이 하나라도 일치하면 true 값을 반환할 것을 알 수 있다.
이를 통해 위의 코드는 routeIs('users','Users-Status') 와 같은 방식으로 사용하면 문제 없이 동작할 것으로 보인다.