2

In laravel 5 I describe models without specifying fields in model class. Some magic identifies which fields exist in database for this model.

use Illuminate\Database\Eloquent\Model;

class MyModel extends Model {}

When I describe migration for model's table, I specify field type, length and so on. This info exists only in my head and in database.

When I need to validate data, I have to specify requirements again.

What I want - describe all requirements for all fields in one place. Like so:

class MyModel extends Model {
    public $form_fields = [
        'email' => ['required', 'email', 'human_name' => 'E-mail', 'input_type' => 'text'],
        'age' => ['required', 'positive_integer', 'range:18,90', 'input_type' => 'text'],
        'first_name' => ['string', 'human_name' => 'Your first name', 'input_type' => 'text'],
        'agreement' => ['required', 'human_name' 
    ];
}

Why I need this?

This way I want to ensure that all rules for all models will be written in one place.

Later I want to take these rules in validation

$this->validate($request, MyModel::$form_fields);

and in templates

{{ show_field(MyModel::$form_fields['email']) }}
{{ show_field(MyModel::$form_fields['age']) }}
{{ show_field(MyModel::$form_fields['first_name']) }}

show_field is some global function which takes 'human_name' and 'input_type' and generates html code with all required validation rules. May be there is some function or class with required functionality exists?

How can I achieve this?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.