/** * Finish current form. * @param bool $validate * @return string */ public function finish($validate = true) { // pre-validate form fields based on model rules and jquery.validation if ($validate) { App::$Alias->addPlainCode('js', '$().ready(function() { $("#' . $this->name . '").validate(); });'); App::$Alias->setCustomLibrary('js', '/vendor/bower/jquery-validation/dist/jquery.validate.min.js'); if (App::$Request->getLanguage() !== 'en') { $localeFile = '/vendor/bower/jquery-validation/src/localization/messages_' . App::$Request->getLanguage() . '.js'; if (File::exist($localeFile)) { App::$Alias->setCustomLibrary('js', $localeFile); } } // if model is not empty - add js error color notification if ($this->model !== null) { $badAttr = $this->model->getBadAttribute(); $formName = $this->model->getFormName(); if (Obj::isArray($badAttr) && count($badAttr) > 0) { foreach ($badAttr as $attr) { $itemId = $formName . '-' . $attr; $render = App::$View->render(static::$structLayer['jsnotify'], ['itemId' => $itemId]); App::$Alias->addPlainCode('js', $render); } } } } return '</form>'; }