Skip to content

Custom user and group profile fields for UserFrosting

License

Notifications You must be signed in to change notification settings

lcharette/UF_UserProfile

Repository files navigation

Custom User Profile Field Sprinkle for UserFrosting 4

Donate Latest Version UserFrosting Version Software License Build Codecov StyleCI

This Sprinkle makes it easy to add any custom fields to the user or group model. Simply create a new schema in you own sprinkle and you're done. Your new profile fields will be automatically integrated in the default UserFrosting interface.

Help and Contributing

If you need help using this sprinkle or found any bug, feels free to open an issue or submit a pull request. You can also find me on the UserFrosting Chat most of the time for direct support.

Installation

Edit UserFrosting app/sprinkles.json file and add the following to the require list : "lcharette/uf_userprofile": "^3.0.0". Also add FormGenerator and UserProfile to the base list. For example:

{
    "require": {
        "lcharette/uf_userprofile": "^3.0.0"
    },
    "base": [
        "core",
        "account",
        "admin",
        "FormGenerator",
        "UserProfile"
    ]
}

Run composer update then php bakery bake to install the sprinkle.

Usage

To add a custom profile fields to any user, you simply add a FormGenerator compliant schema containing the form key as well as the traditional validation schema. The rest is generated by this Sprinkle.

For example, you can add the following to a schema/userProfile/myFields.json file inside your sprinkle to add a location, occupation and gender user field. With the associated locale keys, that's all you have to do to add a new user field to your UserFrosting setup.

{
    "location" : {
        "validators" : {
            "length" : {
                "label" : "LOCATION",
                "min" : 1,
                "max" : 255,
                "message" : "VALIDATE.LENGTH_RANGE"
            }
        },
        "form": {
            "type": "text",
            "label": "LOCATION",
            "icon": "fa-globe"
        }
    },
    "occupation" : {
        "validators" : {
            "length" : {
                "label" : "OCCUPATION",
                "min" : 1,
                "max" : 255,
                "message" : "VALIDATE.LENGTH_RANGE"
            }
        },
        "form": {
            "type": "textarea",
            "label": "OCCUPATION",
            "icon": "fa-briefcase"
        }
    },
    "gender" : {
        "validators" : {},
        "form": {
            "type": "select",
            "label": "GENDER",
            "icon": "fa-transgender",
            "options" : {
                "1" : "GENDER.MALE",
                "2" : "GENDER.FEMALE",
                "3" : "GENDER.NEUTRAL"
            }
        }
    }
}

Note that the schema must be saved inside the schema/userProfile/ directory of your sprinkle to be picked up automatically by the system. You might also want to run php bakery clear-cache command from the UserFrosting root since those fields are stored in cache for better performances.

You can also specify groups custom fields by saving any schema in the the schema/groupProfile/ directory of your sprinkle.

Screenshots

Screenshot 1 Screenshot 1

License

By Louis Charette. Copyright (c) 2020, free to use in personal and commercial software as per the MIT license.