2013-09-05 105 views
1

我有一个验证表单的问题。如果我把 “需要” 这是行不通的,例如:codeigniter验证错误与字段“必填”

控制器:

public function updateBenefit(){ 
    $result = array(); 
    $this->load->helper(array('form', 'url')); 
    $this->load->library('form_validation'); 

    $this->form_validation->set_rules('beneficio', 'Nombre del Beneficio', 'required|alpha'); 
    $this->form_validation->set_rules('info', 'Info', 'alpha'); 
    $this->form_validation->set_rules('descrip', 'Descripción', 'alpha'); 
    $this->form_validation->set_rules('orden', 'Orden', 'integer'); 

    // $this->form_validation->set_rules('fecha', 'Fecha', 'date_valid'); 

    $this->form_validation->set_message('required', 'El campo %s es requerido'); 

    if ($this->form_validation->run() == TRUE){ 

     if (isset($_POST['id'])){ 

      $idb = $_POST['id']; 
      $benefit = BeneficiosManager::getInstance()->getHome($idb); 

      $result['message'] = "Se ha modificado el Beneficio con éxito"; 

     } else{ 
      $benefit = BeneficiosManager::getInstance()->create(); 

      $result['message'] = "Se ha cargado el Beneficio con éxito"; 
     } 

     $benefit->nombre = ucfirst(strtolower($_POST['beneficio'])); 
     $benefit->content = ucfirst(strtolower($_POST['descrip'])); 
     $benefit->intro = ucfirst(strtolower($_POST['info'])); 
     $benefit->active = $_POST['optionsRadios2']; 
     $benefit->orden = $_POST['orden']; 

     // $benefit->date = $_POST['fecha']; 

     BeneficiosManager::getInstance()->save($benefit); 

     }else{ 
      //no se validaron los datos ingresados 
      $result['message'] = "Error validación"; 
     } 

     echo json_encode($result); 
} 

观点:

{extends file='admin/base/base.tpl'} 

{block name='content'} 

<h3>Cargar Beneficio </h3> 
</br> 
<form action="{site_url()}admin/updateBenefit" class="form-horizontal" method="post" id="" enctype="multipart/form-data"> 

    <div class="control-group"> 
     <label class="control-label">Beneficio</label> 
     <div class="controls"> 
     <input type="text" name="beneficio" value="" class="m-wrap medium" /> 
     <span class="help-inline">Nombre del Beneficio</span> 
     </div> 
    </div> 

    <div class="control-group"> 
     <label class="control-label">Info</label> 
     <div class="controls"> 
     <textarea name="info" class="medium m-wrap" rows="3"></textarea> 
     <span class="help-inline">Información Clave</span> 
     </div> 
    </div> 

    <div class="control-group"> 
     <label class="control-label">Descripción</label> 
     <div class="controls"> 
     <textarea name="descrip" class="large m-wrap" rows="3"></textarea> 
     <span class="help-inline">Descripción del Beneficio</span> 
     </div> 
    </div> 

    <div class="control-group"> 
     <label class="control-label">Activo</label> 
     <div class="controls"> 
      <label class="radio line"> 
       <input type="radio" name="optionsRadios2" value="1"/>Si</input> 
      </label> 
      <label class="radio line"> 
       <input type="radio" name="optionsRadios2" value="0"/>No</input> 
      </label> 
     <span class="help-inline">Ofrecer Beneficio</span> 
     </div> 
    </div> 

    <div class="control-group"> 
     <label class="control-label">Orden</label> 
     <div class="controls"> 
     <input type="text" name="orden" value="" class="m-wrap small" /> 
     <span class="help-inline">Prioridad del Beneficio</span> 
     </div> 
    </div> 

    <div class="control-group"> 
     <label class="control-label">Fecha</label> 
     <div class="controls"> 
     <input type="text" name="fecha" value="{$smarty.now|date_format}" class="m-wrap medium" /> 
     <span class="help-inline"></span> 
     </div> 
    </div> 

    <div class="form-actions"> 
     <button type="submit" class="btn blue"><i class="icon-ok"></i> Guardar</button> 
     <button type="button" class="btn">Cancelar</button> 
    </div> 

</form> 

{/block} 

什么可能的问题是什么?

如果我删除“必需”字段,表单验证...但如果我把它,它不......我不知道还有什么要尝试,不明白为什么会发生这种情况

代码正在工作,感谢@Jonathan纠正了我,并且当我尝试使用此方法时,我也发生了输入错误。我试图把两个字放在同一个领域(即:bon vivir);所以正确的输入是:bonvivir。

+0

你有一个叫“title”的字段吗? – exussum

+1

'它不工作'不是一个有用的错误描述。什么不工作?你有任何错误?预期的结果是什么? –

+0

一个可能的问题是你缺少一些所需的代码。请仔细阅读手册条目:http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html –

回答

0

我不确定你是否使用“标题”作为你的真实标题输入元素的名称。因为我发现你使用这段代码来分配你的标题。

$benefit->title = ucfirst(strtolower(trim($_POST['beneficio']))); 

所以,你可能想尝试使用

$this->form_validation->set_rules('beneficio', 'Nombre del Beneficio', 'required|alpha'); 

代替。

我不确定我是否有正确的猜测。只要给它一个。希望这可以帮助。

+0

IKR?为什么“标题”是必需的,如果你没有做任何事情呢? – jcorry

+0

@Jonathan我已将字段“title”更改为“nombre”,但仍不起作用,显示相同的验证错误 – Limon

+0

@jcorry标题是必需的,因为您无法上传没有名称的好处。这是一个关于人员和奖品的网站,奖品是好处,所以我们需要保留他们的名字。 – Limon