Skip to main content

[symfony] Handling error

(1) List up errors
if( $form->isValid() ) {
    // ...
} else {
    // get a ConstraintViolationList
    $errors = $this->get('validator')->validate( $user );
    $result = '';

    // iterate on it
    foreach( $errors as $error ) {
        // Do stuff with:
        //   $error->getPropertyPath() : the field that caused the error
        //   $error->getMessage() : the error message
    }
}
 
(2) Frontend
$.extend({
    ajaxData: function($button, options) {
        var defaultOptions = {
            type: 'POST',            beforeSend: function() {
                $button.prop('disabled', true);            },            complete: function() {
                $button.prop('disabled', false);            },            success: function(data) {
                window.location.reload();            },            error: function(xhr) {
                if (xhr.responseJSON) {
                    for (k in xhr.responseJSON) {
                        msg = xhr.responseJSON[k];                        if(k == '_global') {

                        } else {
                            $('[name="'+k+'"]').after($('<span class="error" />').text(msg));                        }
                    }
                }
            }
        };
        $.ajax($.extend({}, defaultOptions, options));    }
}); 

(3) Backend
private function getFormErrors($form)
{
    $errors = array('_global' => array());    foreach ($form->getErrors() as $e) {
        $errors['_global'][] = $e->getMessage();    }
    foreach ($form as $field) {
        if (!$this->hasError($field)) {
            continue;        }

        $view = $field->createView();
        $fieldErros = $field->getErrors();        foreach ($fieldErros as $e) {
            $errors[$view->vars['full_name']] = $e->getMessage();        }
    }

    return $errors;}

private function hasError($field)
{
    if (count($field->getErrors()) > 0) {
        return true;    }

    foreach ($field as $child) {
        if ($this->hasError($child)) {
            return true;        }
    }

    return false;}

Comments

Popular posts from this blog

Browser User Agent List

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/601.4.4 (KHTML, like Gecko) Version/9.0.3 Safari/601.4.4 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/601.5.17 (KHTML, like Gecko) Version/9.1 Safari/601.5.17 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0;...

[linux] Adjusting child processes for PHP-FPM (Nginx)

Adjusting child processes for PHP-FPM (Nginx) Problem: The following warning message appears in the logs: [26-Jul-2012 09:49:59] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 8 idle, and 58 total children [26-Jul-2012 09:50:00] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it It means that there are not enough PHP-FPM processes. Solution: We need to calculate and change these values based on the amount of memory on the system: /etc/php-fpm.d/www.conf pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 - the following command will help us to determine the memory used by each (PHP-FPM) child process: ps -ylC php-fpm --sort:rss The RSS column shows non-swapped physical memory usage by PHP-FPM processes in kilo Bytes. On an average each PHP-FPM process took ~75MB of RAM on my machine. Appropriate valu...

[symfony] Assert in Entity

* @Assert\NotBlank() * @Assert\Blank() * @Assert\NotNull() * @Assert\Null() * @Assert\True(message = "The token is invalid") * @Assert\False( *     message = "You've entered an invalid state." * ) * @Assert\Type(type="integer", message="The value {{ value }} is not a valid {{ type }}.") is_ array bool callable float double int integer long null numeric object real resource scalar string ctype_ alnum alpha cntrl digit graph lower print punct space upper xdigit * @Assert\Email( *     message = "The email '{{ value }}' is not a valid email.", *     checkMX = true * ) * @Assert\Length( *      min = 2, *      max = 50, *      minMessage = "Your first name must be at least {{ limit }} characters long", *      maxMessage = "Your first name cannot be longer than {{ limit }} characters long" * ...