ошибка проверки 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.


person Limon    schedule 05.09.2013    source источник
comment
У вас есть поле с названием title?   -  person exussum    schedule 05.09.2013
comment
it does not work не является полезным описанием ошибки. Что именно не работает? Вы получаете какие-либо ошибки? Каков ожидаемый результат?   -  person Amal Murali    schedule 05.09.2013
comment
Вероятная проблема заключается в том, что вам не хватает части необходимого кода. Пожалуйста, полностью прочитайте запись руководства: ellislab.com/codeigniter/user-guide/ библиотеки/   -  person Damien Pirsy    schedule 05.09.2013
comment
@user1281385 user1281385 да, у меня есть поле с названием title   -  person Limon    schedule 05.09.2013
comment
@AmalMurali, когда я использую обязательное поле, моя форма не проверяется, я получаю сообщение об ошибке проверки. Если я удаляю обязательное поле, форма проверяется, но мне действительно нужно использовать обязательное поле   -  person Limon    schedule 05.09.2013
comment
@DamienPirsy Я не думаю, что это проблема, я отредактирую свой пост с полным кодом. спасибо!   -  person Limon    schedule 05.09.2013
comment
Можете ли вы опубликовать свое мнение?   -  person Jeemusu    schedule 06.09.2013
comment
@Jeemusu да, я немедленно опубликую мнение   -  person Limon    schedule 06.09.2013


Ответы (1)


Я не уверен, что вы используете «название» в качестве имени вашего реального элемента ввода заголовка. Потому что я обнаружил, что вы используете этот код для присвоения звания.

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

Поэтому вы можете попробовать использовать

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

вместо.

Я не уверен, что правильно догадался. Просто попробуйте. Надеюсь это поможет.

person Jonathan    schedule 06.09.2013
comment
ИКР? Зачем требуется «название», если вы ничего с ним не делаете? - person John Corry; 06.09.2013
comment
@Jonathan, я изменил название поля на nombre, но оно все еще не работает, отображаются те же ошибки проверки - person Limon; 06.09.2013
comment
Заголовок @jcorry обязателен, потому что вы не можете загрузить преимущество без имени. Это веб-сайт о людях и призах, призы — это преимущества, поэтому нам нужно оставить их с именами. - person Limon; 06.09.2013
comment
@Jimena, не похоже, что ваш контроллер делает ЧТО-НИБУДЬ с «заголовком» элемента $_POST, за исключением подтверждения того, что он там ... единственное место, где вы используете $_POST['title'], - это проверка формы .. . - person John Corry; 06.09.2013
comment
@jcorry я изменил название на имя, но я не могу понять вашу точку зрения, что вы имеете в виду, говоря, что я использую название (или имя) только для проверки формы? - person Limon; 06.09.2013
comment
Проверка формы ищет элемент в массиве сообщений с именем «заголовок». Больше нигде в методе контроллера $_POST['title'] ни для чего не используется. Итак, ЕДИНСТВЕННОЕ использование этого поля - подтвердить, что оно там ... зачем оно требуется, если его единственная цель - подтвердить, что оно там? - person John Corry; 06.09.2013
comment
@jcorry хорошо, я сделал ошибку и уже исправил ее, заголовок больше не нужен, потому что это было имя поля в БД, бот в моей форме, и для проверки мне нужно иметь имя формы. Итак, теперь я отредактирую свой код, но он все еще не работает! - person Limon; 06.09.2013
comment
@ Джонатан, спасибо за наблюдение, здесь: $this-›form_validation-›set_rules('beneficio', 'Nombre del Beneficio', 'required|alpha'); здесь я вводил имя поля из базы данных, а не имя поля в форме ..... я изменил его, но все те же ошибки! - person Limon; 06.09.2013
comment
Привет @Jimena, извини, что не догнал. Первый параметр set_rules() — это имя вашего элемента, который необходимо проверить. Ничего о вашей БД, только ваша форма. - person Jonathan; 10.09.2013