protected function _formAlignment($options)
{
if (!$options['align']) {
$options['align'] = $this->_detectFormAlignment($options);
}
if (is_array($options['align'])) {
$this->_grid = $options['align'];
$options['align'] = 'horizontal';
} elseif ($options['align'] === 'horizontal') {
$this->_grid = $this->config('grid');
}
if (!in_array($options['align'], ['default', 'horizontal', 'inline'])) {
throw new InvalidArgumentException('Invalid `align` option value.');
}
$this->_align = $options['align'];
unset($options['align']);
$templates = $this->_config['templateSet'][$this->_align];
if (is_string($options['templates'])) {
$options['templates'] = (new PhpConfig())->read($options['templates']);
}
if ($this->_align === 'default') {
$options['templates'] += $templates;
return $options;
}
$options = $this->injectClasses('form-' . $this->_align, $options);
if ($this->_align === 'inline') {
$options['templates'] += $templates;
return $options;
}
$offsetedGridClass = implode(' ', [$this->_gridClass('left', true), $this->_gridClass('middle')]);
$templates['label'] = sprintf($templates['label'], $this->_gridClass('left'));
$templates['formGroup'] = sprintf($templates['formGroup'], $this->_gridClass('middle'));
foreach (['checkboxFormGroup', 'submitContainer'] as $value) {
$templates[$value] = sprintf($templates[$value], $offsetedGridClass);
}
$options['templates'] += $templates;
return $options;
}