ramaid/hypervel-formstate
Composer 安装命令:
composer require ramaid/hypervel-formstate
包简介
Reusable form state handling and validation redirect macros for Hypervel.
README 文档
README
Standardized form error and input state handling for Hypervel apps.
✨ Features
- 📝 Automatically shares
oldinput anderrorsin all Blade views - 🔧 Provides
FormState::errors(),::old(),::value()helpers - 🚀 Adds
response()->withValidationErrors()macro - 📋 Custom
BaseFormRequestclass with error helpers (old(),error(),hasError()) - 🎨 NEW: Blade directive macros (
@formError,@formValue, etc.) - ⚡ NEW: Artisan generator command (
make:form-request) - ✅ NEW: Comprehensive test suite with PHPUnit
- 🔍 NEW: Static analysis with PHPStan and code formatting with PHP CS Fixer
📦 Installation
composer require ramaid/formstate
🚀 Usage
Controller
use App\Http\Requests\LoginRequest; public function store(LoginRequest $request) { $validator = Validator::make($request->all(), [...]); if ($validator->fails()) { return response()->withValidationErrors($validator); } }
Blade Templates
Traditional Way
<input name="email" value="{{ $request->old('email') }}"> @if ($request->hasError('email')) <p>{{ $request->error('email') }}</p> @endif
Using New Blade Directives
<!-- Simple error display --> @formError('email') <!-- Input with old value --> <input name="email" value="@formValue('email', 'default@example.com')"> <!-- Conditional error styling --> <input name="email" class="form-input @formClass('email', 'error', 'success')"> <!-- Complete input with error handling --> @formInput('email', 'email', 'form-input') <!-- Conditional blocks --> @hasFormError('email') <div class="error-container"> <p class="error">@formError('email')</p> </div> @endhasFormError
BaseFormRequest
use Ramaid\FormState\Http\Requests\BaseFormRequest; class LoginRequest extends BaseFormRequest { public function rules(): array { return [ 'email' => 'required|email', 'password' => 'required|min:8', ]; } public function messages(): array { return [ 'email.required' => 'We need your email address!', ]; } }
🎯 Artisan Generator
Generate form request classes easily:
# Basic form request php artisan make:form-request LoginRequest # Nested form request php artisan make:form-request Auth/RegisterRequest
This creates a properly structured form request extending BaseFormRequest:
<?php namespace App\Http\Requests; use Ramaid\FormState\Http\Requests\BaseFormRequest; class LoginRequest extends BaseFormRequest { public function authorize(): bool { return true; } public function rules(): array { return [ // ]; } // ... additional methods }
🎨 Available Blade Directives
| Directive | Purpose | Example |
|---|---|---|
@formError('field') |
Display error message | @formError('email') |
@formValue('field', 'default') |
Get old input value | @formValue('name', 'John') |
@formClass('field', 'error', 'success') |
Conditional CSS classes | @formClass('email', 'text-red-500', 'text-green-500') |
@hasFormError('field')...@endhasFormError |
Conditional error blocks | See above example |
@formInput('name', 'type', 'class') |
Complete input with errors | @formInput('email', 'email', 'form-input') |
🧪 Testing
# Run tests composer test # Run tests with coverage composer test-coverage # Run static analysis vendor/bin/phpstan analyse # Fix code style vendor/bin/php-cs-fixer fix
🔧 Development
# Install dependencies composer install # Run quality checks composer test vendor/bin/phpstan analyse vendor/bin/php-cs-fixer fix --dry-run
📋 Requirements
- PHP ^8.1
- Hypervel Framework ^1.0
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and quality checks
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
The MIT License (MIT). Please see License File for more information.
🎯 Roadmap
- Form builder macros
- Vue.js/Alpine.js integration
- Advanced validation helpers
- Form step wizard support
统计信息
- 总下载量: 1
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-07-09