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;
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;
}
}
: 여기
namespace App\Services\Validators;
class UserCreateValidator extends Validator {
public static $rules = array(
'firstName' => 'required',
'lastName' => 'required',
'email' => 'required|email|unique:users',
'company' => 'required'
);
}
가 그리고는 기본 Validator 클래스입니다 ResellerController
에 static::$rules[$key]
을 설정하지 않으면 rk.
나는 static::$rules['company']
여전히 속성과 UserCreateValidator
에 있는지 (이 라인이 실행됩니다 후)는 Xdebug는 세션에서 볼 수 있습니다.
나는 늦은 정적 바인딩이이 문제를 해결할 것으로 생각 했습니까? 무엇이 잘못 되었나요?
그냥 테스트 중입니다 ... 만약 당신이'UserCreateValidator'에'removeRule' 함수를 넣으면 작동합니까? – lukasgeiter