CRM_Core_Form
class CRM_Core_Form extends HTML_QuickForm_Page
Class CRM_Core_Form
Constants
ATTR_SPACING |
Constants for attributes for various form elements attempt to standardize on the number of variations that we use of the below form elements |
CB_PREFIX |
All checkboxes are defined with a common prefix. This allows us to have the same javascript to check / clear all the checkboxes etc If u have multiple groups of checkboxes, you will need to give them different ids to avoid potential name collision |
CB_PREFIY |
All checkboxes are defined with a common prefix. This allows us to have the same javascript to check / clear all the checkboxes etc If u have multiple groups of checkboxes, you will need to give them different ids to avoid potential name collision |
CB_PREFIZ |
All checkboxes are defined with a common prefix. This allows us to have the same javascript to check / clear all the checkboxes etc If u have multiple groups of checkboxes, you will need to give them different ids to avoid potential name collision |
CB_PREFIX_LEN |
All checkboxes are defined with a common prefix. This allows us to have the same javascript to check / clear all the checkboxes etc If u have multiple groups of checkboxes, you will need to give them different ids to avoid potential name collision |
Properties
protected object | $_state | The state object that this form belongs to | |
protected string | $_name | The name of this form | |
protected string | $_title | The title of this form | |
array | $_defaults | The default values for the form. | |
mixed | $_options | (QUASI-PROTECTED) The options passed into this form | |
int | $_action | (QUASI-PROTECTED) The mode of operation for this form | |
protected array | $_paymentProcessors | Available payment processors. | |
array | $_paymentProcessorIDs | Available payment processors (IDS). | |
protected int | $_paymentProcessorID | Default or selected processor id. | |
protected int | $_is_pay_later_enabled | Is pay later enabled for the form. | |
protected object | $_renderer | The renderer used for this form | |
protected array | $_dateFields | An array to hold a list of datefields on the form so that they can be converted to ISO in a consistent manner | |
static protected CRM_Core_Smarty | $_template | Cache the smarty template for efficiency reasons | |
protected bool | $unsavedChangesWarn | Indicate if this form should warn users of unsaved changes | |
array | $ajaxResponse | What to return to the client if in ajax mode (snippet=json) | |
array | $urlPath | Url path used to reach this page | |
protected string | $context | Context of the form being loaded. | |
bool | $submitOnce | ||
CRM_Core_Controller | $controller | ||
static array | $html5Types | Extra input types we support via the "add" method |
Methods
No description
Set context variable.
Constructor for the basic form page.
Set translated fields.
Add one or more css classes to the form.
Register all the standard rules that most forms potentially use.
Simple easy to use wrapper around addElement.
Preprocess form.
Called after the form is validated.
Main process wrapper.
The postProcess hook is typically called by the framework.
This virtual function is used to build the form.
This virtual function is used to set the default values of various form elements.
This is a virtual function that adds group and global rules to the form.
Performs the server side validation.
Core function that builds the form.
Add default Next / Back buttons.
Getter function for Name.
Getter function for State.
Getter function for StateType.
Getter function for title.
Setter function for title.
Assign billing type id to bltID.
No description
This if a front end form function for setting the payment processor.
Format the fields in $this->_params for the payment processor.
Format the fields in $params for the payment processor.
Handle Payment Processor switching for contribution and event registration forms.
Handle pre approval for processors.
Setter function for options.
Render form and return contents.
Getter function for renderer.
Use the form name to create the tpl file name.
A wrapper for getTemplateFileName.
Default extra tpl file basically just replaces .tpl with .extra.tpl.
Store the variable with the value in the form scope.
Get the variable from the form scope.
Getter for action.
Setter for action.
Assign value to name in template.
Assign value to name in template by reference.
Appends values to template variables.
Returns an array containing template variables.
No description
No description
No description
No description
Simple shell that derived classes can call to add buttons to the form with a customized title for the main Submit
No description
Add a search for a range using date picker fields.
Based on form action, return a string representing the api action.
Classes extending CRM_Core_Form should implement this method.
Classes extending CRM_Core_Form should implement this method.
Adds a select based on field metadata.
Adds a field based on metadata.
Add a widget for selecting/editing/creating/copying a profile form
No description
No description
No description
No description
No description
No description
Add date.
Function that will add date and time.
Add a currency and money element to the form.
Add currency element to the form.
Create a single or multiple entity ref field.
Convert all date fields within the params to mysql date ready for the BAO layer. In this case fields are checked against the $_datefields defined for the form and if time is defined it is incorporated
No description
Function that can be defined in Form to override or.
Helper function to verify that required fields have been filled.
Get contact if for a form object. Prioritise - cid in URL if 0 (on behalf on someoneelse) (@todo consider setting a variable if onbehalf for clarity of downstream 'if's - logged in user id if it matches the one in the cid in the URL - contact id validated from a checksum from a checksum - cid from the url if the caller has ACL permission to view - fallback is logged in user (or ? NULL if no logged in user) (@todo wouldn't 0 be more intuitive?)
Get the contact id that the form is being submitted for.
Get the contact id of the logged in user.
Add autoselector field -if user has permission to view contacts If adding this to a form you also need to add to the tpl e.g
No description
Add the options appropriate to cid = zero - ie. autocomplete
Set default values on form for given contact (or no contact defaults)
Sets form attribute.
Sets form attribute.
Sets page title based on entity and action.
Create a chain-select target field. All settings are optional; the defaults usually work.
Add actions menu to results form.
Assign billing name to the template.
Get the currency for the form.
Is the form in view or edit mode.
Details
at line 200
string
getContext()
at line 207
setContext()
Set context variable.
at line 268
CRM_Core_Form
__construct(object $state = NULL, const|enum|int $action = CRM_Core_Action::NONE, string $method = 'post', string $name = NULL)
Constructor for the basic form page.
We should not use QuickForm directly. This class provides a lot of default convenient functions, rules and buttons
at line 311
protected
setTranslatedFields()
Set translated fields.
This function is called from the class constructor, allowing us to set fields on the class that can't be set as properties due to need for translation or other non-input specific handling.
at line 318
addClass(string $className)
Add one or more css classes to the form.
at line 326
registerRules()
Register all the standard rules that most forms potentially use.
at line 379
HTML_QuickForm_Element
add(string $type, string $name, string $label = '', string|array $attributes = '', bool $required = FALSE, array $extra = NULL)
Simple easy to use wrapper around addElement.
Deal with simple validation rules.
at line 470
preProcess()
Preprocess form.
This is called before buildForm. Any pre-processing that needs to be done for buildForm should be done here.
This is a virtual function and should be redefined if needed.
at line 482
postProcess()
Called after the form is validated.
Any processing of form state etc should be done in this function. Typically all processing associated with a form should be done here and relevant state should be stored in the session
This is a virtual function and should be redefined if needed
at line 494
mainProcess(bool $allowAjax = TRUE)
Main process wrapper.
Implemented so that we can call all the hook functions.
at line 520
postProcessHook()
The postProcess hook is typically called by the framework.
However in a few cases, the form exits or redirects early in which case it needs to call this function so other modules can do the needful Calling this function directly should be avoided if possible. In general a better way is to do setUserContext so the framework does the redirect
at line 530
buildQuickForm()
This virtual function is used to build the form.
It replaces the buildForm associated with QuickForm_Page. This allows us to put preProcess in front of the actual form building routine
at line 539
array|NULL
setDefaultValues()
This virtual function is used to set the default values of various form elements.
at line 549
addRules()
This is a virtual function that adds group and global rules to the form.
Keeping it distinct from the form to keep code small and localized in the form building code
at line 559
bool
validate()
Performs the server side validation.
at line 587
buildForm()
Core function that builds the form.
We redefine this function here and expect all CRM forms to build their form in the function buildQuickForm.
at line 650
addButtons(array $params)
Add default Next / Back buttons.
at line 723
string
getName()
Getter function for Name.
at line 732
object
getState()
Getter function for State.
at line 741
int
getStateType()
Getter function for StateType.
at line 752
string
getTitle()
Getter function for title.
Should be over-ridden by derived class.
at line 762
setTitle(string $title)
Setter function for title.
at line 772
assignBillingType()
Assign billing type id to bltID.
at line 781
int
getPaymentProcessorID()
at line 794
protected
assignPaymentProcessor(bool $isPayLaterEnabled)
This if a front end form function for setting the payment processor.
It would be good to sync it with the back-end function on abstractEditPayment & use one everywhere.
at line 832
protected array
formatParamsForPaymentProcessor(array $fields)
Format the fields in $this->_params for the payment processor.
In order to pass fields to the payment processor in a consistent way we add some renamed parameters.
at line 848
protected array
prepareParamsForPaymentProcessor(array $params)
Format the fields in $params for the payment processor.
In order to pass fields to the payment processor in a consistent way we add some renamed parameters.
at line 896
protected
preProcessPaymentOptions()
Handle Payment Processor switching for contribution and event registration forms.
This function is shared between contribution & event forms & this is their common class.
However, this should be seen as an in-progress refactor, the end goal being to also align the backoffice forms that action payments.
This function overlaps assignPaymentProcessor, in a bad way.
at line 948
protected
handlePreApproval(array $params)
Handle pre approval for processors.
This fits with the flow where a pre-approval is done and then confirmed in the next stage when confirm is hit.
This function is shared between contribution & event forms & this is their common class.
However, this should be seen as an in-progress refactor, the end goal being to also align the backoffice forms that action payments.
at line 973
setOptions(mixed $options)
Setter function for options.
at line 982
string
toSmarty()
Render form and return contents.
at line 1000
object
getRenderer()
Getter function for renderer.
If renderer is not set create one and initialize it.
at line 1012
string
getTemplateFileName()
Use the form name to create the tpl file name.
at line 1035
getHookedTemplateFileName()
A wrapper for getTemplateFileName.
This includes calling the hook to prevent us from having to copy & paste the logic of calling the hook.
at line 1048
string
overrideExtraTemplateFileName()
Default extra tpl file basically just replaces .tpl with .extra.tpl.
i.e. we do not override.
at line 1062
error(string $message, int $code = NULL, CRM_Core_DAO $dao = NULL)
Error reporting mechanism.
at line 1080
set(string $name, mixed $value)
Store the variable with the value in the form scope.
at line 1092
mixed
get(string $name)
Get the variable from the form scope.
at line 1101
int
getAction()
Getter for action.
at line 1111
setAction(int $action)
Setter for action.
at line 1123
assign(string $var, mixed $value = NULL)
Assign value to name in template.
at line 1135
assign_by_ref(string $var, mixed $value)
Assign value to name in template by reference.
at line 1147
append(array|string $tpl_var, mixed $value = NULL, bool $merge = FALSE)
Appends values to template variables.
at line 1158
array
get_template_vars(string $name = NULL)
Returns an array containing template variables.
at line 1172
HTML_QuickForm_group
addRadio(string $name, $title, $values, array $attributes = [], null $separator = NULL, bool $required = FALSE)
at line 1204
addYesNo(int $id, $title, bool $allowClear = FALSE, null $required = NULL, array $attributes = [])
at line 1230
addCheckBox(int $id, $title, $values, null $other = NULL, null $attributes = NULL, null $required = NULL, null $javascriptMethod = NULL, string $separator = '<br />', bool $flipValues = FALSE)
at line 1277
resetValues()
at line 1293
addDefaultButtons(string $title, string $nextType = 'next', string $backType = 'back', bool|string $submitOnce = FALSE)
Simple shell that derived classes can call to add buttons to the form with a customized title for the main Submit
at line 1324
addDateRange(string $name, string $from = '_from', string $to = '_to', string $label = 'From:', string $dateFormat = 'searchDate', bool $required = FALSE, bool $displayTime = FALSE)
at line 1346
addDatePickerRange(string $fieldName, string $label, bool $isDateTime = FALSE, bool $required = FALSE, string $fromLabel = 'From', string $toLabel = 'To')
Add a search for a range using date picker fields.
at line 1372
protected
getApiAction()
Based on form action, return a string representing the api action.
Used by addField method.
Return string
at line 1391
getDefaultEntity()
Classes extending CRM_Core_Form should implement this method.
at line 1401
getDefaultContext()
Classes extending CRM_Core_Form should implement this method.
TODO: Merge with CRM_Core_DAO::buildOptionsContext($context) and add validation.
at line 1423
HTML_QuickForm_Element
addSelect($name, array $props = [], bool $required = FALSE)
Adds a select based on field metadata.
TODO: This could be even more generic and widget type (select in this case) could also be read from metadata Perhaps a method like $form->bind($name) which would look up all metadata for named field
at line 1507
mixed
addField($name, array $props = [], bool $required = FALSE, bool $legacyDate = TRUE)
Adds a field based on metadata.
at line 1710
addProfileSelector(string $name, string $label, string $allowCoreTypes, string $allowSubTypes, array $entities, bool $default = FALSE, string $usedFor = NULL)
Add a widget for selecting/editing/creating/copying a profile form
at line 1729
null
getRootTitle()
at line 1736
string
getCompleteTitle()
at line 1743
static CRM_Core_Smarty
getTemplate()
at line 1750
addUploadElement($elementName)
at line 1780
null
getVar($name)
at line 1788
setVar($name, $value)
at line 1807
addDate(string $name, string $label, bool $required = FALSE, array $attributes = NULL)
deprecated
deprecated
Add date.
at line 1896
addDateTime(string $name, string $label, bool $required = FALSE, null $attributes = NULL)
deprecated
deprecated
Function that will add date and time.
at line 1922
HTML_QuickForm_Element
addMoney(string $name, string $label, bool $required = FALSE, null $attributes = NULL, bool $addCurrency = TRUE, string $currencyName = 'currency', null $defaultCurrency = NULL, bool $freezeCurrency = FALSE)
Add a currency and money element to the form.
at line 1952
addCurrency(string $name = 'currency', null $label = NULL, bool $required = TRUE, string $defaultCurrency = NULL, bool $freezeCurrency = FALSE, bool $setDefaultCurrency = TRUE)
Add currency element to the form.
at line 2006
HTML_QuickForm_Element
addEntityRef(string $name, string $label = '', array $props = [], bool $required = FALSE)
Create a single or multiple entity ref field.
at line 2055
convertDateFieldsToMySQL(array $params)
Convert all date fields within the params to mysql date ready for the BAO layer. In this case fields are checked against the $_datefields defined for the form and if time is defined it is incorporated
at line 2075
removeFileRequiredRules($elementName)
at line 2093
cancelAction()
Function that can be defined in Form to override or.
perform specific action on cancel action
at line 2105
static
validateMandatoryFields(array $fields, array $values, array $errors)
Helper function to verify that required fields have been filled.
Typically called within the scope of a FormRule function
at line 2124
protected NULL|int
setContactID()
Get contact if for a form object. Prioritise - cid in URL if 0 (on behalf on someoneelse) (@todo consider setting a variable if onbehalf for clarity of downstream 'if's - logged in user id if it matches the one in the cid in the URL - contact id validated from a checksum from a checksum - cid from the url if the caller has ACL permission to view - fallback is logged in user (or ? NULL if no logged in user) (@todo wouldn't 0 be more intuitive?)
at line 2179
int|null
getContactID()
Get the contact id that the form is being submitted for.
at line 2186
getLoggedInUserContactID()
Get the contact id of the logged in user.
at line 2215
addAutoSelector(array $profiles = [], array $autoCompleteField = [])
Add autoselector field -if user has permission to view contacts If adding this to a form you also need to add to the tpl e.g
{if !empty($selectable)}
{/if}
at line 2240
canUseAjaxContactLookups()
at line 2256
addCIDZeroOptions()
Add the options appropriate to cid = zero - ie. autocomplete
at line 2280
array
getProfileDefaults(mixed $profile_id = 'Billing', int $contactID = NULL)
Set default values on form for given contact (or no contact defaults)
at line 2299
preventAjaxSubmit()
Sets form attribute.
at line 2307
allowAjaxSubmit()
Sets form attribute.
at line 2315
setPageTitle(string $entityLabel)
Sets page title based on entity and action.
at line 2344
HTML_QuickForm_Element
addChainSelect(string $elementName, array $settings = [])
Create a chain-select target field. All settings are optional; the defaults usually work.
at line 2379
addTaskMenu(array $tasks)
Add actions menu to results form.
at line 2496
string
assignBillingName(array $params = [])
Assign billing name to the template.
at line 2531
string
getCurrency(array $submittedValues = [])
Get the currency for the form.
at line 2553
protected bool
isFormInViewOrEditMode()
Is the form in view or edit mode.
The 'addField' function relies on the form action being one of a set list of actions. Checking for these allows for an early return.