Twig를 이용한 실제 경로 및 UX
우리의 탐색 모음 및 경로
사진과 비디오를 표시하는 블로그가 있다고 가정해 보겠습니다. 우리의 navbar에는 4개의 링크가 있습니다:
라우트에 대해 우리는 단지 주어진 이름을 원하므로 다음과 같습니다.
자, 모든 정보가 있습니다. 이제 나뭇가지 템플릿을 살펴보세요.
<nav>
<ul>
<li>
<a href="{{ path('app_home') }}">Home</a>
</li>
<li>
<a href="{{ path('app_picture') }}">Pictures</a>
</li>
<li>
<a href="{{ path('app_video') }}">Videos</a>
</li>
<li>
<a href="{{ path('app_contact') }}">Contact</a>
</li>
</ul>
<nav>
여기에서 링크를 클릭하면 경로로 리디렉션되지만 URL을 제외한 어떤 것도 올바른 경로에 있음을 나타내지 않습니다. 그럼 UX를 좀 해보자.
나뭇가지 기능
우리는 twig의 기능을 바로잡을 것입니다. 패키지를 설치해야 합니다.
composer require twig/extensions
원하는대로 이름을 지정하고 파일로 이동하십시오. 필터에 대한 모든 것을 지우고(더 나아가 일부를 시도하려는 경우 제외) 공개 함수 getFunctions로 이동합니다.
여기에서 현재 함수 'getActualRoute'에서 "actual_route"라는 나뭇가지에 대한 함수를 만들 것입니다.
public function getFunctions(): array
{
return [
new TwigFunction('actual_route', [$this, 'getActualRoute']),
];
}
getActualRoute는 2개의 문자열 매개변수를 사용하고 현재 경로가 실제 경로와 같으면 활성을 반환합니다.
public function getActualRoute(string $value, string $route): string
{
return $value === $route ? 'active' : '';
}
탐색 모음으로 돌아가기
마지막 단계에서 템플릿을 수정합니다. 현재 경로에 '활성' 클래스를 추가하려고 합니다. 먼저 실제 경로의 이름을 포함할 경로 변수를 설정합니다. 나뭇 가지에서 이것을 덤프하려고 시도하십시오 :
app.request.attributes.get('_route')
. 보시다시피 문자열에 실제 경로가 있습니다. 이제 해보자:{% set route = app.request.attributes.get('_route') %}
<nav>
<ul>
<li>
<a href="{{ path('app_home') }}">Home</a>
</li>
<li>
<a href="{{ path('app_picture') }}">Pictures</a>
</li>
<li>
<a href="{{ path('app_video') }}">Videos</a>
</li>
<li>
<a href="{{ path('app_contact') }}">Contact</a>
</li>
</ul>
<nav>
그런 다음 각 링크에 대해 다음 기능을 사용하여 클래스를 작성하십시오.
<a href="{{ path('app_home') }}" class="{{ actual_route('app_home',route) }}">Home</a>
따라서 'app_home' === 경로(방금 설정한 것)이면 활성 클래스가 됩니다.
그것을 시도하고 요소를 검사하십시오. 이제 이것을 사용자 정의하기 위해 몇 가지 CSS를 작성하기만 하면 됩니다. 예를 들어 SCSS의 경우:
a{
color: black;
transition:0.3s ease-in-out;
&.active{
color:red;
}
}
결론
도움이 되셨길 바라며 질문이나 개선 사항이 있으면 적어주세요 😊
건배 !
Reference
이 문제에 관하여(Twig를 이용한 실제 경로 및 UX), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mis0u/actual-route-and-ux-with-twig-48ke텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)