{"id":20301995,"url":"https://github.com/solumdesignum/scenarios","last_synced_at":"2025-07-26T02:14:59.955Z","repository":{"id":55537149,"uuid":"145921620","full_name":"SolumDeSignum/scenarios","owner":"SolumDeSignum","description":"Solum DeSignum Scenarios is agnostic backend validation Scenarios package.","archived":false,"fork":false,"pushed_at":"2024-10-18T21:26:59.000Z","size":36,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T09:49:28.339Z","etag":null,"topics":["develoment","githunt","laravel","laravel-scenarios","opensource","opensourcedevelopment","package","packages","php","php7","scenarios","solumdesignum"],"latest_commit_sha":null,"homepage":"https://solum-designum.eu/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SolumDeSignum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-24T00:27:04.000Z","updated_at":"2024-10-18T21:24:57.000Z","dependencies_parsed_at":"2024-11-14T16:34:10.855Z","dependency_job_id":"930f6f43-85fa-4b78-8c18-c318ac799082","html_url":"https://github.com/SolumDeSignum/scenarios","commit_stats":{"total_commits":29,"total_committers":4,"mean_commits":7.25,"dds":0.5172413793103448,"last_synced_commit":"79dd2f2bd1191330a2c69e8929f65491a3eba5df"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolumDeSignum%2Fscenarios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolumDeSignum%2Fscenarios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolumDeSignum%2Fscenarios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SolumDeSignum%2Fscenarios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SolumDeSignum","download_url":"https://codeload.github.com/SolumDeSignum/scenarios/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248410247,"owners_count":21098772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["develoment","githunt","laravel","laravel-scenarios","opensource","opensourcedevelopment","package","packages","php","php7","scenarios","solumdesignum"],"created_at":"2024-11-14T16:28:46.763Z","updated_at":"2025-04-11T13:37:01.469Z","avatar_url":"https://github.com/SolumDeSignum.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![StyleCI](https://github.styleci.io/repos/145921620/shield?branch=master)](https://github.styleci.io/repos/145921620)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/SolumDeSignum/scenarios/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/SolumDeSignum/scenarios/?branch=master)\n[![Total Downloads](https://poser.pugx.org/solumdesignum/scenarios/downloads?format=flat)](https://packagist.org/packages/solumdesignum/scenarios)\n[![Latest Stable Version](https://poser.pugx.org/solumdesignum/scenarios/v/stable?format=flat)](https://packagist.org/packages/solumdesignum/scenarios)\n[![Latest Unstable Version](https://poser.pugx.org/solumdesignum/scenarios/v/unstable?format=flat)](https://packagist.org/packages/solumdesignum/scenarios)\n[![MIT Licensed](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md)\n\n### Introduction\nScenarios are agnostic backend validation Scenarios package.\n\n\n### Installation\nTo get started, install Scenarios using the Composer package manager:\n```shell\ncomposer require solumdesignum/scenarios\n```\n\nNext, publish Scenarios resources using the vendor:publish command:\n\n```shell\nphp artisan vendor:publish --provider=\"SolumDeSignum\\Scenarios\\ScenariosServiceProvider\"\n```\n\nThis command will publish scenarios.php config to your config directory, which will be created if it does not exist.\n\n### Upgrade from v1.xx to version v2.00\n[UPGRADE_V2.md](UPGRADE_V2.md) !!!\n\n### Scenarios Features\nThe Scenarios configuration file contains a configuration array.\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nreturn [\n    'features' =\u003e [\n        'set_method' =\u003e [\n            'from' =\u003e [\n                'controller' =\u003e true,\n                'url_segment' =\u003e false,\n            ],\n            'exceptions' =\u003e [\n                'controller' =\u003e true\n            ],\n        ],\n    ],\n    'methods' =\u003e [\n        'pattern' =\u003e '/create|store|update|destroy/im',\n    ],\n];\n````\n\n### Scenario's with Controller\nBefore using it must change config \n```php\n\u003c?php \n\ndeclare(strict_types=1);\n\nreturn [\n    'features' =\u003e [\n        'set_method' =\u003e [\n            'from' =\u003e [\n                'controller' =\u003e true,\n                'url_segment' =\u003e false,\n            ],\n            'exceptions' =\u003e [\n                'controller' =\u003e false\n            ],\n        ],\n    ],\n    'methods' =\u003e [\n        'pattern' =\u003e '/create|store|update|destroy/im',\n    ],\n];\n````\nNow we are prepared to use it in controller.\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse SolumDeSignum\\Scenarios\\Traits\\Scenarios;\n\nclass ExampleControler extends Controller\n{\n    use Scenarios;\n\n    /**\n     * Display a listing of the resource.\n     */\n    public function index(): void\n    {\n        dump($this);\n        dd($this-\u003escenario);\n    }\n\n    /**\n     * Show the form for creating a new resource.\n     */\n    public function create(): void\n    {\n        if ($this-\u003escenario === 'create') {\n            // my logic\n        }\n    }\n\n    /**\n     * Store a newly created resource in storage.\n     */\n    public function store(Request $request): void\n    {\n        if ($this-\u003escenario === 'store') {\n            // my logic\n        }\n    }\n\n    /**\n     * Display the specified resource.\n     */\n    public function show(string $id): void\n    {\n        dump($this);\n        dd($this-\u003escenario);\n    }\n\n    /**\n     * Show the form for editing the specified resource.\n     */\n    public function edit(string $id): void\n    {\n        dump($this);\n        dd($this-\u003escenario);\n    }\n\n    /**\n     * Update the specified resource in storage.\n     */\n    public function update(Request $request, string $id): void\n    {\n        if ($this-\u003escenario === 'update') {\n            // my logic\n        }\n    }\n\n    /**\n     * Remove the specified resource from storage.\n     */\n    public function destroy(string $id): void\n    {\n        if ($this-\u003escenario === 'destroy') {\n            // my logic\n        }\n    }\n}\n````\n\n### Scenario's with your Form Request Validation\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nnamespace App\\Http\\Requests;\n\nuse Illuminate\\Foundation\\Http\\FormRequest;\nuse Illuminate\\Support\\Facades\\Auth;\nuse SolumDeSignum\\Scenarios\\Traits\\Scenarios;\n\nclass OfficeBlogRequest extends FormRequest\n{\n    use Scenarios;\n\n    /**\n     * Determine if the user is authorized to make this request.\n     *\n     * @return bool\n     */\n    public function authorize(): bool\n    {\n        return Auth::check();\n    }\n\n    /**\n     * Get the validation rules that apply to the request.\n     *\n     * @return array\n     */\n    public function rules(): array\n    {\n        $rules = [];\n\n        if ($this-\u003escenario === 'store') {\n            $rules = [\n                'title' =\u003e 'required|string',\n                'publish_at' =\u003e 'required',\n                'blog_category_id' =\u003e 'required|numeric',\n                'description' =\u003e 'required',\n            ];\n        }\n\n        if ($this-\u003escenario === 'update') {\n            $rules = [\n                'title' =\u003e 'required|string',\n                'publish_at' =\u003e 'required',\n                'blog_category_id' =\u003e 'required|numeric',\n                'description' =\u003e 'required',\n                'img' =\u003e 'image',\n            ];\n        }\n\n        if ($this-\u003escenario === 'destroy') {\n            $rules = [];\n        }\n\n        return $rules;\n    }\n}\n````\n\n\n### Validation Rules Usage\n#### However, can be used on both examples\n\n```php\nnamespace App\\Validation;\n\t\nclass SampleRules\n{\n  public static function ScenarioRules(string $scenario): ?array\n  {\n        switch ($scenario) {\n            case $scenario === 'store';\n                return\n                    [\n                        'text' =\u003e 'required|string',\n                    ];\n                break;\n\n            case $scenario === 'update';\n                return\n                    [\n                        'text' =\u003e 'required|string',\n                        'description' =\u003e 'required|string',\n                    ];\n                break;\n        }\n  }\n}\n```\n\n### Scenario's With Controller \n#### Manually Creating Validators\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nnamespace App\\Http\\Controllers\\Office\\Blog;\n\nuse App\\Validation\\SampleRules;\nuse Illuminate\\Support\\Facades\\Validator;\nuse SolumDeSignum\\Scenarios\\Traits\\Scenarios;\n\nclass BlogController\n{\n    use Scenarios;\n\n    public function store(Request $request)\n    {\n        $validator = Validator::make($request-\u003eall(), SampleRules::ScenarioRules($this-\u003escenario));\n        if ($validator-\u003epasses()) {\n            #Your Logic Code\n        }\n    }\n}\n```\n\n\n### Controller Functions Names Examples\n#### However, you can override regex with your naming conventions inside configuration\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nreturn [\n    'methods' =\u003e [\n        'pattern' =\u003e '/create|store|update|destroy/im'\n    ]\n];\n\n#Controller Function Naming Samples: create(), store() , update() , destroy()\n```\n\n\nAuthor\n-------\n- [Oskars Germovs](http://solum-designum.eu) ([Twitter](https://twitter.com/faksx))\n\n\nSupport\n-------\nIf you need support you can ask on [Twitter](https://twitter.com/faksx).\n\n\nLicense\n-------\nSolum DeSignum Scenarios is open-sourced software licensed under the [MIT license](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolumdesignum%2Fscenarios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolumdesignum%2Fscenarios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolumdesignum%2Fscenarios/lists"}