Laravel 4-Formularüberprüfung, Erweiterung der __call () -Methode

Ich möchte die Form Validation-Klasse erweitern, um Array-Formularelemente wie beschrieben zu unterstützenhier für L3 in L4.

Zuerst habe ich den Validator-Alias ​​in meinem geändertapp/config/app.php:

'Validator'       => 'app\lib\Support\Facades\Validator',

Dann habe ich diese Codes als app / lib / Support / Facades / Validator.php gespeichert

<?php namespace app\lib\Support\Facades;


class Validator extends \Illuminate\Support\Facades\Validator {

    public function __call($method, $parameters) {

      if (substr($method, -6) === '_array') {

          $method = substr($method, 0, -6);
          $values = $parameters[1];
          $success = true;
          foreach ($values as $value) {
              $parameters[1] = $value;


              $rule = snake_case(substr($method, 8));

                if (isset($this->extensions[$rule]))
                {
                    $success &= $this->callExtension($rule, $parameters);
                }

                throw new \BadMethodCallException("Method [$method] does not exist.");
          }
          return $success;
      } else {
          return parent::__call($method, $parameters);
      }

    }

    protected function getMessage($attribute, $rule) {

        if (substr($rule, -6) === '_array') {
          $rule = substr($rule, 0, -6);
        }

        return parent::getMessage($attribute, $rule);
    }

}

Dann habe ich mich vergewissertcomposer.json hat den Ordner für Autoload enthalten:

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",

        "app/lib",
        "app/lib/Support",
        "app/lib/Support/Facades"
    ]
},

Dann rannte ichphp composer.phar dump-autoload Autoload-Klassen zu generieren.

Die Sache ist, dass es so aussieht, als würde das nicht funktionieren. Ich habe sogar versucht, eine benutzerdefinierte Überprüfungsmethode in die von mir generierte Datei einzufügen:

protected function validateTest($attribute, $value) {
    return $value=='test';
}

Es sagt:Method [validateTest] does not exist.. Ich habe das geändertprotected zupublic, immer noch das gleiche.

get_class(Validator::getFacadeRoot()) gibt mir\Illuminate\Validation\FactoryWenn ich die Klasse, die ich geschrieben habe, erweitere, erhalte ich den folgenden Fehler:Non-static method Illuminate\Validation\Factory::make() should not be called statically.

Hinweis: Ja, ich habe die Regeln nicht wie in L4 erweitert, weil ich keine neue Regel hinzufügen möchte, sondern die Methode ändern möchte__call()undgetMessage()Verhalten.

Was fehlt mir, wie kann ich diese Arbeit machen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage