2012-04-06 4 views
0

Я пришел писать свой код контроллера после выполнения вид:Codeigniter -> Выберите Меню Form Validation

несколько вопросов, касающихся выбора меню:

  • Как проверить меню выбора - Я не хочу, чтобы быть в состоянии выбрать «Выберите»

  • Могу ли я использовать $this->form_validation->set_rules('','','required');

  • как отправить правильный ответ в контроллер?

    <label for="hostingRequired">Hosting Required:</label> 
         <select name="hostingRequired"> 
          <option value="pleaseSelect"> Please Select</option> 
           <option value="yes">Yes</option> 
           <option value="no">No</option> 
          </select> 
        <label for="domainRequired">Domain Registration: </label> 
           <select name="domainRequired"> 
            <option value="pleaseSelect">Please Select</option> 
            <option value="yes">Yes</option> 
            <option value="no">No</option> 
           </select> 
        <div id="domainToBeReged"> 
           <label for="domainToBeReged">Domain:</label><input name="domainToBeReged" type="text" placeholder="http://www." /> 
           <label for="domainToBeReged0">Domain:</label><input name="domainToBeReged0" type="text" placeholder="http://www." /> 
        </div> 
    
+1

Я думаю, что просто удаление значения опции «Пожалуйста, выберите» сделало бы трюк здесь. У меня нет моей установки CI здесь, поэтому я не могу ее проверить. – rgin

ответ

0

Если вы не нашли правило проверки, что вы хотите, расширить библиотеку Validation и написать собственные правила. Look example как сделать.

1

Вы можете сделать следующее

затем использовать следующее правило Validation

$this->form_validation->set_rules('','','required|callback_is_default'); 

function is_default($array) 
{ 
    foreach($array as $element) 
    { 
    if($element == 'pleaseSelect') 
    { 
     return FALSE; 
    } 
    } 
return TRUE; 
} 
+0

Но тогда, когда проверка будет выполнена, не скажет ли, что ошибка 0 не требуется? вместо 0 я могу использовать pleaseSelect? –

+0

О да, да, вы могли бы это сделать. – Josnidhin

+0

В помощнике is_default вы также можете установить сообщение. В приведенном примере они устанавливают сообщение об ошибке в функции обратного вызова. [CodeIgniter reference on Callbacks] (http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#callbacks) –

0

В правилах проверки добавьте:

$this->form_validation->set_rules('hostingRequired','Hosting Required','required|callback__check_select_yes_or_no'); 
$this->form_validation->set_rules('domainRequired','Domain registration','required|callback__check_select_yes_or_no'); 

Кроме того, добавить дополнительный метод к контроллеру, как код подтверждения валидации:

function _check_select_yes_or_no($str) 
{ 
    if ($str != 'yes' && $str != 'no') 
    { 
     $this->form_validation->set_message('_check_select_yes_or_no', 'Please select yes or no for the %s field'); 
     return FALSE; 
    } 
    else 
    { 
     return TRUE; 
    } 
} 

Это будет работать для опций «Да» или «Нет» - если вы хотите добавить дополнительную настройку обратного вызова или инвертировать проверку на отказ, если пользователь выбирает «Пожалуйста, выберите».

Альтернативно, лучшим способом сделать это может быть использование переключателей для «Да» и «Нет» и не иметь «проверено» при загрузке формы.

<fieldset><legend> Hosting required:</legend> 
    <label><input type="radio" name="hostingRequired" value="yes">Yes</label><br /> 
    <label><input type="radio" name="hostingRequired" value="no">No</label> 
</fieldset> 
0

Правильный способ делаю это следующим образом:

  • сначала установить значение опции по умолчанию, чтобы опустошить
  • секунду вы использовать простое правило проверки

Так вот идет код

<label for="hostingRequired">Hosting Required:</label> 
    <select name="hostingRequired"> 
     <option value=""> Please Select</option> 
      <option value="yes">Yes</option> 
      <option value="no">No</option> 
     </select> 
<label for="domainRequired">Domain Registration: </label> 
      <select name="domainRequired"> 
       <option value="">Please Select</option> 
       <option value="yes">Yes</option> 
       <option value="no">No</option> 
      </select> 
<div id="domainToBeReged"> 
      <label for="domainToBeReged">Domain:</label><input name="domainToBeReged" type="text" placeholder="http://www." /> 
      <label for="domainToBeReged0">Domain:</label><input name="domainToBeReged0" type="text" placeholder="http://www." /> 
</div> 

.

$this->form_validation->set_rules('hostingRequired','HostingRequired','required'); 
$this->form_validation->set_rules('domainRequired','DomainRequired','required'); 
Смежные вопросы