Non, il n'y a pas moyen de vérifier s'il en existe un par-dire car cette erreur se produit avant que le contrôleur ait une chance d'exécuter du code. c'est à dire. avant l'exécution de la méthode de classe.
Cela dit, il existe une solution simple pour ceci: Vous pouvez fournir une valeur par défaut et vérifier que, par exemple
function index($id = null){
if(is_null($id)){
///do something - like show a pretty error, or redirect etc...
}else{
$this->model->get_user($id);
}
}
De cette façon, quand aucun paramètre est fourni l'ID sera nulle, c'est assez sûr (lorsque vous utilisez null) parce que vous ne pouvez jamais fournir null dans le cadre du chemin d'URL même ce faisant
www.mysite.com/index/null //or however the url works out in your case
fournira null comme une chaîne, parce que tout dans l'url vient à travers comme une chaîne. Donc 'null'
comme une chaîne n'est pas en fait null
c'est juste le mot null. Si ça a du sens. Donc, étant donné que null
ne pourrait jamais être fourni et ne se produit que si aucune autre valeur n'est fournie.
Dans ce cas, il peut être utile de convertir l'entrée en int ou de vérifier si elle est incorrecte.
Cela pourrait se faire de plusieurs façons:
Avec:
function index($id = null){
if(is_null($id)){
///do something - like show a pretty error, or redirect etc...
}else{
$this->model->get_user((int)$id);
//cast to int, things that are not INT or string equivalents become 0, which should not find a user as it would look for ID = 0
}
}
Par chèque REGX:
function index($id = null){
if(is_null($id)){
///do something - like show a pretty error, or redirect etc...
}else if(preg_match('/^[^\d]+$/', $id)){
// not an int (contains anything other than a digit)
}else{
$this->model->get_user($id);
}
}
Vive.
Merci, cela semble génial. Je vais essayer cela et je vais vous informer sur comment cela va aller pour moi. – Audrick
Bien sûr, c'était chose simple pour moi. – ArtisticPhoenix
Il est également possible d'intercepter ces erreurs à l'aide d'un gestionnaire d'erreurs personnalisé, mais c'est beaucoup plus complexe et cela n'en vaut probablement pas la peine. Le seul avantage serait d'avoir moins de maintenance, car il est possible de le configurer une fois et de ne pas avoir à changer les méthodes du contrôleur. Voici la fonction PHP pour cela, mais vous devrez utiliser une expression régulière sur le fichier $ pour voir si c'est dans les contrôleurs http://php.net/manual/en/function.set-error-handler. php – ArtisticPhoenix