Почему FilamentPHP — это хорошее решение для создания CMS
Привет, Хабр! Меня зовут Егор Черненок, я работаю PHP-разработчиком в AGIMA. В этой статье расскажу вам о FilamentPHP. В документации говорится, что это набор красивых Fullstack-компонентов для Laravel. От себя добавлю, что он отлично подходит для построения CMS. А теперь подробно объясню, почему это так.
Зачем нам вообще CMS?
В жизни каждого PHP-разработчика рано или поздно настаёт момент, когда его просят написать корпоративный сайт, новостной портал или очередной интернет-магазин.
Конечно, в этом случае можно взять готовое решение вроде Bitrix. И я, при всём моем предвзятом к нему отношении, часто советую так и поступать. Однако порой эти огромные комбайны оказываются действительно слишком уж огромными, и для управления тремя с половиной табличками проще написать свое решение.
Да, но почему Filament? Ведь для PHP-систем управления контента хоть в банки засаливай
Действительно. CMS-сок у нас море — как для голого PHP, так и для Laravel. Почему же мы выбрали именно эту? Причин несколько.
Во-первых, он красивый. Bootstrap, который наиболее популярен для построения админок, давно уже набил оскомину. Проекты на нем выглядят как простенькие внутренние приложения из середины 10-х годов. Filament же использует компоненты, стилизованные с помощью Tailwind CSS.
Просто взгляните на это:
Во-вторых, Filament очень доступен для освоения. Документация местами бывает так себе, но при наличии живой демки и её исходников можно быстро найти подходящий фрагмент и адаптировать его под себя.
Под словами «очень доступен» я имею в виду, что он прямо очень доступен. Когда я делал какие-то вещи впервые, ловил себя на мысли, что почти не обращаюсь к документации, а просто использую какие-то решения чуть ли не интуитивно.
В-третьих, Filament использует стек TALL (TailwindCSS, AlpineJS, Laravel, Livewire). Livewire позволяет создавать приложение динамическим. Не нужно писать тонны кода на JQuery, как этого требует тот же Voyager. И, коли уж это Laravel, нам всегда доступны все его возможности.
В-четвертых, для Filament есть библиотека плагинов, которые закрыли уже почти все насущные проблемы.
А минусы есть?
Увы, без них никак.
Filament использует стек TALL. Да, я отнес это к плюсам, но Livewire мне иногда кажется достаточно сомнительной затеей. Которая, тем не менее, прекрасно справляется с поставленными перед ней задачами при правильном приложении рук.
Filament достаточно прожорливый и требует OPCache и кеширования всего, что можно. Да и с включенным laravel-debugbar можно испытать потрясающий опыт, который больше никогда испытывать не захочется. Всё начинает тормозить со зверской силой. А если элементов на страничке больше нескольких сотен, пользоваться вообще почти невозможно.
Часть плагинов платные. И цена небольшая, но всем понятно, какие проблемы с оплатой из России могут быть.
Код форм порой бывает достаточно… монструозным. Но это решается грамотным переиспользованием кода и разнесением его по разным местам.
Как мы используем Filament
Приведу конкретный пример.
К нам пришел клиент, который захотел увидеть CMS сразу для пачки (почти 20 штук!) однообразных сайтов. Но несмотря на их однообразие, оказалось, что отличия всё же будут. На каждом из них встречаются какие-то уникальные моменты внутри одной общей фичи.
Тут не подходило никакое стандартное решение, а на Filament удалось малой кровью и за малое время слепить интерфейс для управления всей этой вакханалией, причём так, что клиент на показе сказал, что вопросов у него нет, всё тут интуитивно понятно.
А что в итоге?
А в итоге, если вы еще не выбрали инструмент по умолчанию для написания админок и у вас нет каких-то стандартов в этом отношении, то я всячески рекомендую хотя бы попробовать дать Filament шанс. Скорость разработки, простота, комьюнити, удобство и красота — вот что в итоге ?
Мы используем Filament для достаточно крупного нетипового проекта, куда не подошли бы готовые системы управления контентом. И пока его преимущества перевешивают недостатки.
Спасибо за внимание!