My user form is pretty long and many of the fields are required. However I don't want to discourage lazy users from registering. I would like them to register and pay first then make them fill out the required fields when they edit their profile. I would like the required fields to be required when editing their profile but do not want to show them on the registration form. Right now making a field required automatically puts it on the registration form. How do I prevent this? Thanks.
First make fields not required and then use the Field Validation module. You can validate each field as per your requirement.
The following validators are currently included:
•Numeric values (optionally specify min and / or max value)
•length (optionally specify min and / or max length)
•number of words (optionally specify min and / or max words )
•Plain text (disallow tags)
•Must be empty (Anti-Spam: Hide with CSS)
•number of selections (optionally specify min and / or max selections )
•Match against a field
•Match against a property
•Require at least one of several fields
•Equal values on multiple fields
•Unique values on multiple fields
•PHP Code (powerfull but dangerous)
•URL (support internal path and external url validation)
•Pattern (Regular expression lite)
•Date range(living in sub module date validation, deprecated in future)
User Role Field will perfectly achieve this objective and it is lightweight.
This module allows you to specify role specific fields. When creating a new field, you specify for what roles this field is enabled.
All you have to do is enable the module, specify required fields, but only make them enabled for specific roles (e.g authenticated user). Make sure the fields are not enabled for anonymous users so that they do not show on the user registration form.
The Field Permissions module did exactly what I wanted.
The Field Permissions module allows site administrators to set field-level permissions to edit, view and create fields on any entity.