Question

J'ai un problème que je n'arrive pas à résoudre.

Je construis un petit cadre (pratique) et maintenant je construis la bibliothèque Validator. tout fonctionne à merveille sauf lorsque j'essaie de réparer le & call; callback " règle. La règle de rappel est utilisée lorsque le développeur doit utiliser une règle qui n'existe pas dans la bibliothèque de validateurs.

Voici comment je le fais.

Dans le contrôleur:

$this->validator->check('req|callback:test', 

J'ai un problème que je n'arrive pas à résoudre.

Je construis un petit cadre (pratique) et maintenant je construis la bibliothèque Validator. tout fonctionne à merveille sauf lorsque j'essaie de réparer le & call; callback " règle. La règle de rappel est utilisée lorsque le développeur doit utiliser une règle qui n'existe pas dans la bibliothèque de validateurs.

Voici comment je le fais.

Dans le contrôleur:

public function check($rules, $input, $fieldname='') {
    $rule = explode('|', $rules);
    foreach ($rule as $r) {
        $request = explode(":",$r,2);
        $method = array_shift($request);
        $parameter = $request;
        array_unshift($parameter,$input);   
        array_push($parameter,$fieldname);
        if (method_exists($this, $method)) {
            call_user_func_array(array($this,$method), $parameter);
        }
  }

protected function callback($input, $key, $fieldname='') {

}

Classe de validation:

UserController::test();

Mon problème est que, comment puis-je utiliser le "courant" manette. Par exemple, dans ce cas, je dois trouver:

$controller = ucfirst($uri->uri[1]).'Controller';
$controller::$key();

Je peux trouver la bonne méthode dans $ key, mais constitue-t-il un moyen simple de déterminer quel contrôleur tourne?

J'ai essayé d'utiliser l'URL comme:

<*>

Mais ça n'a pas marché du tout. Des idées?

POST['module_name'], 'Module Name');

Classe de validation:

<*>

Mon problème est que, comment puis-je utiliser le "courant" manette. Par exemple, dans ce cas, je dois trouver:

<*>

Je peux trouver la bonne méthode dans $ key, mais constitue-t-il un moyen simple de déterminer quel contrôleur tourne?

J'ai essayé d'utiliser l'URL comme:

<*>

Mais ça n'a pas marché du tout. Des idées?

Était-ce utile?

La solution

Quelques manières d’aborder ceci.

Tout d'abord, je suppose que quelque part vous avez du code qui transforme un URI

example.com/foo

dans un nom de classe de contrôleur

class FooController

Cela s'appelle généralement "routage". Si tel est le cas, exposez votre classe / méthode de routeur au validateur et / ou à l'ensemble du système. Cela vous permettra, à tout moment, d'obtenir le nom d'un contrôleur à partir de l'URI.

Deuxièmement, lors de l’instanciation de votre validateur, donnez-lui une référence à l’objet contrôleur pour la requête en question. Il s’agit alors d’un simple appel à get_class_name ou à l’API de réflexion.

Troisièmement, exigez que votre contrôleur soit transmis avec votre appel à la méthode check .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top