EasyAdmin 5.0: 당신의 관리자 백엔드를 위한 새로운 기반
Source: Dev.to
EasyAdmin 5.0.0이 새 안정 버전으로 방금 출시되었습니다.
EasyAdmin은 Symfony와 유사한 개발 철학을 따릅니다. 이는 EasyAdmin 5.x가 4.x와 동일한 기능을 제공한다는 의미입니다. 차이점은 5.x가 4.x 사이클 동안 폐기된 모든 요소를 제거하여 더 깔끔하고 미래 지향적인 기반을 제공한다는 점입니다.
EasyAdmin 5.0은 최소 Symfony 및 PHP 요구 사항을 높이면서도 넓은 호환성을 유지합니다. Symfony 6.4, 모든 7.x 및 8.x 버전을 지원하고, Doctrine ORM 2.x 이상과 함께 작동하며, PHP 8.2 이상이 필요합니다.
What Changed in 5.0
4.x 사이클 전반에 걸쳐 도입된 모든 기능은 이제 5.0에서 지원되는 유일한 접근 방식입니다. 가장 중요한 변경 사항을 요약하면 다음과 같습니다.
Pretty URLs
- 4.x에서는 이 번들이 처음부터 사용해 온 레거시 URL 형식을 여전히 사용할 수 있었습니다. 예:
https://example.com/admin?crudAction=edit&crudControllerFqcn=App%5CController%5CAdmin%5cPostCrudController&entityId=3874
- 5.0에서는 Pretty URLs만 지원됩니다. 예:
https://example.com/admin/post/3874/edit
- 버전 4.14에서 도입되었습니다.
- 별도의 설정이 필요하지 않습니다 – Symfony Flex 레시피가 커스텀 Symfony 라우트 로더를 로드해 기본적으로 활성화됩니다.
Pretty URLs는 1년 이상 프로덕션 환경에서 테스트되었습니다. 그 동안 메뉴, 커스텀 액션 등과 관련된 엣지 케이스들을 수정했습니다. 이제 안정적이며 모든 애플리케이션에서 사용할 준비가 되었습니다.
Dashboard Definition via Attribute
Symfony의 #[Route] 어트리뷰트 대신, 이제 대시보드 클래스에 #[AdminDashboard] 어트리뷰트를 적용해야 합니다 (이 어트리뷰트는 버전 4.24에서 추가되었습니다).
// BEFORE (4.x)
use Symfony\Component\Routing\Attribute\Route;
class DashboardController extends AbstractDashboardController
{
#[Route('/admin', name: 'admin')]
public function index(): Response
{
// …
}
}
// AFTER (5.x)
use EasyCorp\Bundle\EasyAdminBundle\Attribute\AdminDashboard;
#[AdminDashboard(routePath: '/admin', routeName: 'admin')]
class DashboardController extends AbstractDashboardController
{
public function index(): Response
{
// …
}
}
새 어트리뷰트는 Symfony이 제공하는 모든 라우트 옵션을 지원하며, 자체 기능(예: 관리 라우트 형식 커스터마이징 및 각 대시보드에서 사용할 CRUD 컨트롤러 제한)을 추가합니다.
Embedding Symfony Controllers in Your Backend
버전 4.25에서 추가된 새로운 #[AdminRoute] 어트리뷰트를 사용하면, 어떤 Symfony 컨트롤러 액션이든 관리 백엔드에 통합할 수 있습니다. 이 어트리뷰트는 액션을 하나 이상의 대시보드 안에서 렌더링하기 위해 필요한 라우트를 자동으로 생성하며, 내장 EasyAdmin 액션과 동일한 레이아웃, 메뉴, 시각 디자인을 재사용합니다.
Action Improvements
4.x 사이클 동안 액션에 여러 개선을 적용했습니다:
Autocomplete Customization
버전 4.28에서 자동완성 항목이 렌더링되는 방식을 완전히 제어할 수 있게 되었습니다:
// Use callbacks for simple customizations
yield AssociationField::new('category', 'post.category')
->setSortProperty('name')
->autocomplete(
callback: static fn (Category $c): string => sprintf('%s %s', $c->getIcon(), $c->getName())
);
// Use Twig template fragments for complex customizations with HTML elements
yield AssociationField::new('author', 'post.author')
->setSortProperty('fullName')
->autocomplete(
template: 'admin/post/_author_autocomplete.html.twig',
renderAsHtml: true
);
Custom Icon Sets
EasyAdmin은 기본적으로 FontAwesome 아이콘을 사용하지만, 버전 4.16부터는 Tabler나 Material Icons와 같은 다른 아이콘 세트를 자유롭게 사용할 수 있습니다.
New Twig Components
4.x 사이클 동안 공통 UI 요소를 위한 Twig Components를 도입했습니다. EasyAdmin 5.x에서는 재사용 가능한 Twig Components 위에 전체 UI를 구축하는 것이 장기 목표이며, 이를 통해 완전한 UI를 보다 쉽게 구성할 수 있게 됩니다.
맞춤형 관리자 페이지.
5.x 로 업그레이드하기
가능한 한 빠르게 업그레이드할 것을 강력히 권장합니다. EasyAdmin 4.x는 새로운 기능을 받지 못하며, 향후 개선 사항은 5.x 전용으로 진행됩니다.
-
코드베이스에서 모든 사용 중단(deprecation) 항목을 제거합니다.
- Symfony Profiler를 확인하거나, 사용 중단 경고를 오류로 처리하여 테스트 스위트를 실행합니다.
- 자세한 내용은 EasyAdmin 4.x → 5.x 업그레이드 가이드를 참고하세요.
-
composer.json파일의 Composer 제약 조건을 업데이트합니다:
composer require easycorp/easyadmin-bundle:^5.0
5.0은 최신 4.x 릴리스와 기능적으로 동일하며(사용 중단된 코드가 제거된 것을 제외하고) 사용 중단 항목을 정리하면 추가적인 변경 없이도 사용할 수 있습니다.
EasyAdmin 처음 사용해 보기
EasyAdmin가 처음이라면 공식 문서와 퀵‑스타트 가이드를 먼저 확인하세요. 이 번들은 Symfony Flex와 바로 호환되며, pretty‑URL 로더가 자동으로 활성화되어 바로 관리 인터페이스 구축에 집중할 수 있습니다.
EasyAdmin 시작하기
EasyAdmin를 시작하려면 다음 명령을 실행하세요:
composer require easycorp/easyadmin-bundle
php bin/console make:admin:dashboard
php bin/console make:admin:crud
위 명령으로 대시보드와 첫 번째 CRUD 컨트롤러가 포함된 작동하는 관리자 백엔드가 생성됩니다. 이후 EasyAdmin 문서를 살펴보면서 필드, 액션, 필터 등을 커스터마이징해 보세요.
또한 EasyAdmin Demo 프로젝트를 검토해 볼 수 있습니다.
✨ 이러한 기능이 마음에 들고 더 많은 기능을 보고 싶다면, EasyAdmin 프로젝트 후원도 고려해 보세요 🙌💡