Skip to content

docs: обновить README под lenient policy, английский — основной, русский — README.ru.md#2

Merged
daniser merged 8 commits into
masterfrom
docs/lenient-policy-and-en-readme
Jul 10, 2026
Merged

docs: обновить README под lenient policy, английский — основной, русский — README.ru.md#2
daniser merged 8 commits into
masterfrom
docs/lenient-policy-and-en-readme

Conversation

@EgorGruzdev

@EgorGruzdev EgorGruzdev commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Что изменилось

После влития PR #1 на master появилась новая фича — lenient/enforce политики (теги v1.4.0, v1.4.1). Логика fail-open переехала из хелпера gate_check() в Gate::before()-колбэк LenientPolicy и стала конфигурируемой. Этот PR приводит документацию в соответствие, добавляет английскую версию и делает её основной.

Раскладка файлов

  • README.md — теперь на английском (отображается на Packagist/GitHub по умолчанию).
  • README.ru.md — русская версия.
  • В обоих файлах вверху переключатель языка.

Актуализация под новую механику политик (обе версии)

  • Раздел про контроль доступа переписан: мягкий режим по умолчанию (через LenientPolicy + Gate::before(), срабатывает только для объектов с #[Aura]) и строгий режим (enforce_policies / FORMSTER_ENFORCE_POLICIES).
  • В блок конфига добавлен enforce_policies, в таблицу env — FORMSTER_ENFORCE_POLICIES.
  • Обновлён пункт про Gate в списке возможностей.
  • Исправлена сломанная ячейка таблицы AuraType (неэкранированный | в A|B рвал колонки) — теперь A\|B.

Только документация — код не затрагивается.

- описан мягкий (lenient) режим политик по умолчанию через LenientPolicy
  и Gate::before(), а также строгий режим (enforce_policies)
- добавлен флаг enforce_policies и переменная FORMSTER_ENFORCE_POLICIES
- добавлен README.en.md (полный перевод) и переключатель языка
- исправлена сломанная ячейка таблицы AuraType (экранирование `|`)
- README.md теперь на английском (отображается на Packagist/GitHub)
- русская версия перенесена в README.ru.md
- поправлены ссылки переключателя языка
@EgorGruzdev EgorGruzdev changed the title docs: обновить README под lenient policy + английская версия README docs: обновить README под lenient policy, английский — основной, русский — README.ru.md Jul 1, 2026
EgorGruzdev and others added 2 commits July 1, 2026 22:47
- пример быстрого старта: добавлен обязательный атрибут #[Aura]
- явно указано, что мягкий режим политик требует #[Aura] на классе
  или его родителе; PHPDoc-модели без атрибута под него не попадают
- расписано, какие проверки Gate где выполняются (строка/отправка/кнопка)
- отмечено, что авто-enctype не срабатывает для list<File>
- уточнено наследование action через @AWare (только файловые виджеты)
- уточнён фолбэк описаний свойств и исключение PHP 8.2 × Laravel 13 в CI
- Color: регулярка валидации теперь /^#[0-9a-fA-F]{6}$/ (#4)
- enctype=multipart/form-data теперь автоматически ставится и для list<File> (#3)
- ActionHandler::update() пропускает read-only свойства (#5)
- Примечание: validate() зарезервирован, пакетом пока не вызывается (#5)
- Примечание: серверная обработка нескольких файлов (list<File>) ещё не реализована (#3)
@daniser

daniser commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

Можно актуализировать обе версии документации (английскую и русскую) в соответствии с последними изменениями в пакете?

- Новый раздел «Валидация»: сбор правил с обработчиков, validationRules
  у свойства, ellipsis-нотация '...', вывод ошибок, локализованные имена полей
- Контракт PropertyHandler: validate() -> validationRules(), FinalAuraProperty
- Таблица типов: колонка с правилами валидации по умолчанию
- Сущности: FinalAura/FinalAuraProperty, finalize(), пополевное слияние
  AuraProperty::merge() при агрегации
- Атрибуты: все параметры #[AuraProperty] опциональны, описание свойств
  через #[Aura(properties: [...])]
- Дефолт property_parser: aura,phpstan,reflection
- Стаб: переименован в formster-handler.stub, публикация --tag=formster-stub
- Обновлён пример сгенерированного обработчика
@EgorGruzdev

Copy link
Copy Markdown
Contributor Author

Готово (b5852cf) — обе версии (README.md / README.ru.md) актуализированы под текущий master:

  • Новый раздел «Валидация»: автоматический сбор правил в ActionHandler::update(), правила по умолчанию от обработчиков, свои правила через #[AuraProperty(validationRules: ...)] (строка / массив / замыкание, PHP ≥ 8.5), ellipsis-нотация '...' для слияния с дефолтными, вывод ошибок в блоке formster-validation-failed и локализованные имена полей в сообщениях.
  • Контракт PropertyHandler: validate()validationRules(), сигнатуры на FinalAuraProperty; убрана устаревшая оговорка о «незапущенной» валидации.
  • Таблица типов дополнена колонкой правил валидации по умолчанию.
  • Сущности: описаны FinalAura/FinalAuraProperty и finalize(); агрегация — пополевное слияние AuraProperty::merge().
  • Атрибуты: отмечено, что все параметры #[AuraProperty] опциональны; добавлен вариант описания свойств на уровне класса через #[Aura(properties: [...])].
  • Конфигурация: дефолт property_parseraura,phpstan,reflection (конфиг + таблица env).
  • Генератор обработчиков: пример приведён к новому стабу, публикация через vendor:publish --tag=formster-stub (stubs/formster-handler.stub).

@daniser

daniser commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Можно актуализировать документацию ещё разок?

@EgorGruzdev

Copy link
Copy Markdown
Contributor Author

Обновил (ca3f83c). С прошлого захода на master прилетело два коммита — 80ff3f5 и 37bb897, оба про ауру, под них и актуализировал обе версии:

  • Фильтрация свойств — новые параметры include/exclude у #[Aura]: пример с exclude: ['password', 'remember_token'] в разделе про атрибуты, плюс оговорки, что фильтр срабатывает на финализации (то есть режет и найденное PHPDoc/рефлексией), при слиянии аур списки объединяются, а exclude сильнее include.
  • Наследование атрибутовAuraParser теперь ходит по всей цепочке предков и сливает их метаданные в общую ауру; отметил это в описании способа №3 и в таблице парсеров (строка aura).

По мелочи зацепил и смежные места: шаг «Парсинг» в разделе «Как это работает» и строку Aura в таблице сущностей.

@daniser
daniser self-requested a review July 10, 2026 12:16
@daniser
daniser merged commit e0cacaa into master Jul 10, 2026
28 checks passed
@daniser
daniser deleted the docs/lenient-policy-and-en-readme branch July 10, 2026 12:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants