How to return errors from a model back to the template?
If you use $model-&gt;getErrors() instead, it should return a multidimensional array of errors indexed by attribute name like so:

array(
    'email' =&gt; array(
        'First email error.',
        'Second email error.',
    ),
    'firstName' =&gt; array(
        'First firstName error.',
    ),
);


Or you can get errors specifically for an attribute like so:

$model-&gt;getErrors('email');


Then update the template to check for the errors, since it is now a multidimensional array that's returned.

{% if errors.email is defined ? errors.email | length %}
&lt;div data-alert class="alert"&gt;
    {% for error in errors.email %}
        {{ error }}
    {% endfor %}
&lt;/div&gt;
{% endif %}