private function formulario() { $pre = ''; $elementos = array(); $fields = array(); foreach ($this->campos as $campo) { $c = $this->build_campo($campo); if ($c['index'] !== 0) { //Lleno los campos $elementos[$c['index']] = $c['elemento']; //Lleno las reglas de validación para el modelo $fields[$c['index']] = $c['reglas']; } else { array_push($elementos, $c['elemento']); } } //$elementos['ajax'] = array('type' => 'hidden', 'value' => 'custom'); $botones = array('send' => array('type' => 'submit', 'label' => $this->config->mensaje_boton)); $config = array('class' => 'form-horizontal', 'enctype' => 'multipart/form-data', 'activeForm' => array('id' => 'custom-form', 'enableAjaxValidation' => true, 'enableClientValidation' => true, 'errorMessageCssClass' => 'alert alert-error'), 'showErrors' => true, 'elements' => $elementos, 'buttons' => $botones); //Defino el modelo con los campos (y sus respectivas reglas de validación) $model = new CustomForm($fields); //Creo el formulario con la configuración y el modelo $form = new MyForm($config, $model); $this->performAjaxValidation($model); if (isset($_POST['CustomForm'])) { //Verificar si vienen campos de usuario para actualizar (Pendiente) $model->attributes = $_POST['CustomForm']; if ($model->validate()) { foreach ($model->attributes as $attr => $value) { if (substr($attr, 0, 4) === 'file') { $model->{$attr} = CUploadedFile::getInstance($model, $attr); $dir = Yii::getPathOfAlias('webroot') . '/uploads/' . date('Y') . '/' . date('m') . '/'; if (!is_dir($dir)) { mkdir($dir, 0755, true); } if ($model->{$attr}->saveAs($dir . $model->{$attr}->name)) { $model->{$attr} = '/uploads/' . date('Y') . '/' . date('m') . '/' . $model->{$attr}->name; } else { $model->{$attr} = null; } } } //$u_id = Yii::app()->user->getState('usuario_id'); //$u = Usuario::model()->findByPk($u_id); $enviado_a = false; //Verificar si se debe enviar por correo if (!is_null($this->config->correo)) { Yii::app()->crugemailer->enviar_datos_form($this->config->correo, $u, $model); //Si se envía el correo se agrega a la BD $enviado_a = $this->config->correo; } //Aquí almaceno el envío y sus datos $ef = new EnvioFormulario(); if ($ef->guardar_envio($this->config->id, $model, $enviado_a)) { return $this->config->mensaje_envio; } else { $pre = '<p>Occurió un error guardando la información</p>'; //print_r($ef->getErrors());exit(); } } } $custom_css = cs()->registerCss('form_custom_css', $this->config->custom_css); $custom_js = cs()->registerScript('form_custom_js', $this->config->custom_js, CClientScript::POS_READY); //$model->validatorList->add($newValidator); //print_r($model->validatorList);exit(); return $pre . $form->render(); }