0

我正在使用Laravel及其驗證器。從抽象父類中取消設置子對象靜態變量php

我在我的控制器下面的代碼:

class ResellerController extends BaseController{ 

    public function add() { 

     //some code before 

     $userValidator = new App\Services\Validators\UserCreateValidator(); 
     //HERE I WANT TO REMOVE THE company KEY FROM THE RULES IN THE USERS CREATE VALIDATOR 
     $userValidator->removeRule('company');  

     //code execution continues  
    } 
} 

的UserCreateValidator延伸的父Validator類:

namespace App\Services\Validators; 

class UserCreateValidator extends Validator { 

    public static $rules = array(
     'firstName' => 'required', 
     'lastName' => 'required', 
     'email' => 'required|email|unique:users', 
     'company' => 'required' 
    ); 
} 

這裏是基地Validator類:

namespace App\Services\Validators; 

abstract class Validator { 

    /** 
    * Validation rules 
    * @var array 
    */ 
    public static $rules; 

    //THIS CODE DOES NOT WORK IN THE CONTROLLER UP 
    public static function removeRule($ruleKey){ 

     if(is_array($ruleKey)) 
     { 
      foreach($ruleKey as $key) 
      { 
       if(!array_key_exists($key, static::$rules)) continue; 

       unset(static::$rules[$key]); 
      } 

      return true; 
     } 

     if(!array_key_exists($ruleKey, static::$rules)) //return false; 

     unset(static::$rules['company']); 

     return true; 
    } 
} 

ResellerControllerstatic::$rules[$key]的不安定不窩RK。

我可以在的XDebug會議(此行被執行之後)看到static::$rules['company']仍然存在於UserCreateValidator財產。

我以爲後期靜態綁定應該解決這個問題嗎? 有什麼不對?

+0

只是爲了測試......如果你在'UserCreateValidator'中放置'removeRule'函數,它會起作用嗎? – lukasgeiter 2014-12-03 12:11:02

回答

0

問題已解決。這是在註釋的部分:

if(!array_key_exists($ruleKey, static::$rules)) //return false; 

的解封工作正常,我取消了return false後。

愚蠢的錯誤:)