Exemple #1
0
 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();
 }