2016-10-02 7 views
0

にはどうすればドロップダウンリストその他オプションを選択した後に表示さLaravel 4.2に私の他の入力フィールドを検証することができますか?私のドロップダウンリストからの値は既に必要です。私は入力フィールドに同じエラーログを適用したいので、両方ともが必要です!ドロップダウンリストから最初の検証ルールを実行すると、入力フィールドの2番目の検証ルールがエラーを出力します。これを解決する最も簡単な方法は何ですか?検証ルールでドロップダウンリストで[その他]オプションを検証するにはどうすればよいですか?

<div class="row"> 

        <div class="col-lg-6 col-sm-6 col-md-6"> 



      <script type="text/javascript"> 
       function showfield(name){ 
         if(name=='Other')document.getElementById('div1').innerHTML='<input class="custom-input" placeholder="Roles" style="margin-left: 32px;" name="roles" type="text" value/>'; 

         else document.getElementById('div1').innerHTML=''; 
        } 
      </script> 



       <select id="otherField" name="role" onchange="showfield(this.options[this.selectedIndex].value)"> 
        <option value="" selected="selected">Select role</option> 
        <option value="UI/UX designers">UI/UX designers</option> 
        <option value="QA engineers">QA engineers</option> 
        <option value="Developer">Developer</option> 
        <option value="Scrum Master">Scrum Master</option> 
        <option value="CEO">CEO</option> 
        <option value="Director">Director</option> 
        <option value="Other">Other</option> 
       </select> 
        <div id="div1" class="row"> 
          <div class="col-lg-6 col-sm-6 col-md-6"></div> 
        </div> 
        <div class="col-md-6"> 
                 @if($errors->first('roles')) 
                  <div class="fe-form-error"> 
                   <div class="icon"></div> 
                   {{ $errors->first('roles') }} 
                  </div> 
                 @endif 
                 </div> 

        </div> 

                 <div class="col-md-6"> 
                 @if($errors->first('role')) 
                  <div class="fe-form-error"> 
                   <div class="icon"></div> 
                   {{ $errors->first('role') }} 
                  </div> 
                 @endif 
                 </div> 

      </div> 

私のクラス:

class OnEventRegistration extends AbstractValidator { 

    protected $customRules = false; 

    protected $rules = array(
     'email'    =>  'required|email|unique:users', 
     'password'   =>  'required|min:8|confirmed', 
     'first_name'  =>  'required', 
     'last_name'   =>  'required', 
     'role'    =>  'required', 
     'roles'    =>  'required', 

    ); 
} 

答えて

1

あなたがrequired_ifを使用する必要があります。

protected $rules = array(
    'email'    =>  'required|email|unique:users', 
    'password'   =>  'required|min:8|confirmed', 
    'first_name'  =>  'required', 
    'last_name'   =>  'required', 
    'role'    =>  'required', 
    // This says required only if role = 'Other' 
    'roles'    =>  'required_if:role,Other', 
); 

あなたはおそらくも、それは実際にあなたのフォーム内のDOMの一部として認識されますように、条件付きでごroles入力を示す別の方法が必要になります。

<script> 
function showfield(el) { 
if (el.value == 'Other') { 
    document.getElementById('roles').style.display = 'block'; 
} else { 
    document.getElementById('roles').style.display = 'none'; 
} 
</script> 

<select id="otherField" name="role" onchange="showfield(this)"> 
    <!-- options --> 
</select> 

<input id="roles" style="display: none; margin-left: 32px;" name="roles" type="text" placeholder="Roles" class="custom-input"> 
+0

私は** SQLSTATE [23000] **取得すでにしようとしました:整合性制約違反:1048列「の役割は」nullにすることはできません –

+0

全く上記のコードのいずれかに関連していないのですが、この君を解決することヌルを可能にするためにデータベースの 'roles'カラムを変更する必要があります。これが移行で作成された場合は、 '$ table-> string( 'roles') - > nullable();またはSQLの場合:http://stackoverflow.com/questions/212939/how-do-i-modify -a-mysql-column-to-allow-null MySQLのカラムでは、デフォルトでヌル入力が可能です。組み込みの移行を使用するLaravelでは、どちらがnull可能であるかを指定する必要があります。 – tptcat

+0

作業中!ありがとうございました!感謝します。 –

関連する問題