2013-09-05 125 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