PHPackages                             skyblack/syrup-input - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. skyblack/syrup-input

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

skyblack/syrup-input
====================

Syrup - the extensions library for the Symfony framework

0.1.0(3y ago)03GPL-3.0-or-laterPHPPHP &gt;=8.0

Since Apr 1Pushed 3y agoCompare

[ Source](https://github.com/SkyBlackHub/Syrup-Input)[ Packagist](https://packagist.org/packages/skyblack/syrup-input)[ RSS](/packages/skyblack-syrup-input/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (7)Versions (2)Used By (0)

Syrup.Input
===========

[](#syrupinput)

An extension for Symfony 6.x that allows to flexibly manage user input data for controllers through PHP 8 attributes.

Installation:

```
# config/services.yaml
services:
  Syrup\Input\EventSubscribers\ControllerSubscriber:
    arguments:
      $json: true # activate automatic decoding of JSON data in the request body
      $data: true # activate the processing of Data attributes
      $csrf: true # activate the processing of CSRF attributes

```

Example:

```
use Syrup\Input\Attributes\CSRF;
use Syrup\Input\Attributes\Data;
use Syrup\Input\Input;

class MyController extends AbstractController
{
    #[Route(path: '/submit', methods: ['POST'])]
    #[Data('id', sources: Input::QUERY, type: 'int', required: true)]
    #[Data('urgent', sources: [Input::QUERY, Input::REQUEST], default: false)]
    #[Data('data', sources: Input::REQUEST, key: '*')]
    #[CSRF(intention: 'my_form1', parameter: 'x-token', sources: Input::HEADERS)]
    public function submit(int $id, array $data, bool $urgent): Response
    {
        // On a valid user request,
        // the the argument $id will be read from the query,
        // all POST data will be stored in the $data argument,
        // and the $urgent flag will be checked in the query and POST-data, and will be false if not found
        // The CSRF token with the id "my_form1" will be checked in the HTTP-headers by the key "x-token"
    }
}

```

Another example:

```
class MyController extends AbstractController
{
    #[Route(path: '/form', methods: ['GET', 'POST'])]
    #[Data('data', sources: Input::REQUEST, key: '*')]
    #[CSRF(intention: 'my_form2', sources: Input::REQUEST, methods: 'POST')]
    public function form(?array $data = null): Response
    {
        // On a valid POST-request,
        // all POST data will be stored in the $data argument,
        // but on a GET-request the $data argument will be null
        // The CSRF token with the id "my_form2" will be checked only on a POST-request in the POST-data by the default key "_token"
    }
}

```

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity39

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1142d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/73e755b9123b40fed5cd15417cd5fcd1e8f9168f38bad39d94a5a014f1434d9e?d=identicon)[Astrodog](/maintainers/Astrodog)

---

Top Contributors

[![AstrodogX](https://avatars.githubusercontent.com/u/20843605?v=4)](https://github.com/AstrodogX "AstrodogX (1 commits)")

### Embed Badge

![Health badge](/badges/skyblack-syrup-input/health.svg)

```
[![Health](https://phpackages.com/badges/skyblack-syrup-input/health.svg)](https://phpackages.com/packages/skyblack-syrup-input)
```

###  Alternatives

[netgen/layouts-core

Netgen Layouts enables you to build and manage complex web pages in a simpler way and with less coding. This is the core of Netgen Layouts, its heart and soul.

3689.4k10](/packages/netgen-layouts-core)[codefog/contao-news_categories

News Categories bundle for Contao Open Source CMS

3183.3k6](/packages/codefog-contao-news-categories)[netgen/content-browser

Netgen Content Browser is a Symfony bundle that provides an interface which selects items from any kind of backend and returns the IDs of selected items back to the calling code.

14112.1k8](/packages/netgen-content-browser)[codefog/contao-haste

haste extension for Contao Open Source CMS

42650.8k139](/packages/codefog-contao-haste)[spomky-labs/pwa-bundle

Progressive Web App Manifest Generator Bundle for Symfony.

6144.4k1](/packages/spomky-labs-pwa-bundle)[pentiminax/ux-datatables

DataTables.net integration for Symfony

605.6k](/packages/pentiminax-ux-datatables)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
