Вход Регистрация
Файл: framework/forms/FormTemplateHelper.php
Строк: 86
<?php

/**
 * A helper class for managing {@link Form} and {@link FormField} HTML template
 * output.
 *
 * This primarily exists to maintain backwards compatibility between Form and
 * FormField template changes since developers may rely on specific HTML output
 * in their applications. Any core changes to templates (such as changing ID's)
 * may have the potential to silently prevent websites from working.
 *
 * To provide a form with a custom FormTemplateHelper use the following snippet:
 *
 * <code>
 * $form->setTemplateHelper('ClassName');
 * </code>
 *
 * Globally, the FormTemplateHelper can be set via the {@link Injector} API.
 *
 * For backwards compatibility, with < 3.2 use the {@link FormTemplateHelper_Pre32}
 * class which will preserve the old style form field attributes.
 *
 * <code>
 *    Injector:
 *      FormTemplateHelper:
 *        class: FormTemplateHelper_Pre32
 * </code>
 *
 * @package framework
 * @subpackage forms
 */
class FormTemplateHelper {

    
/**
     * @param Form $form
     *
     * @return string
     */
    
public function generateFormID($form) {
        if(
$id $form->getHTMLID()) {
            return 
Convert::raw2htmlid($id);
        }

        return 
Convert::raw2htmlid(
            
get_class($form) . '_' str_replace(array('.''/'), ''$form->getName())
        );
    }

    
/**
     * @param FormField $field
     *
     * @return string
     */
    
public function generateFieldHolderID($field) {
        return 
$this->generateFieldID($field) . '_Holder';
    }

    
/**
     * Generate the field ID value
     *
     * @param FormField
     *
     * @return string
     */
    
public function generateFieldID($field) {
        if(
$form $field->getForm()) {
            return 
sprintf("%s_%s",
                
$this->generateFormID($form),
                
Convert::raw2htmlid($field->getName())
            );
        }

        return 
Convert::raw2htmlid($field->getName());
    }

}

/**
 * Note that this will cause duplicate and invalid ID attributes.
 *
 * @deprecated 4.0
 *
 * @package framework
 * @subpackage forms
 */
class FormTemplateHelper_Pre32 extends FormTemplateHelper {

    
/**
     * @param Form
     *
     * @return string
     */
    
public function generateFormID($form) {
        if(
$id $form->getHTMLID()) {
            return 
$id;
        }

        return 
sprintf("%s_%s",
            
$form->class,
            
str_replace(array('.''/'), ''$form->getName())
        );
    }

    
/**
     * @param FormField
     *
     * @return string
     */
    
public function generateFieldHolderID($field) {
        return 
$field->getName();
    }

    
/**
     * @param FormField
     *
     * @return string
     */
    
public function generateFieldID($field) {
        
$name preg_replace(
            
'/(^-)|(-$)/''',
            
preg_replace('/[^A-Za-z0-9_-]+/''-'$field->getName())
        );

        if(
$form $field->getForm()) {
            
$form sprintf("%s_%s",
                
get_class($form),
                
str_replace(array('.''/'), ''$form->getName())
            );

            return 
$form '_' $name;
        }

        return 
$name;
    }
}
Онлайн: 2
Реклама