2014-09-06 11 views
0

Je le code suivant au début d'un contrôleur (j'utilise Yii):ne répond pas comme prévu

protected function beforeAction($action = null) 
{ 
    switch ($this->action->id) 
    { 
     case 'Images': 
      // Do something 
      break; 

      // ... 
    } 

    if ($this->action->id == 'index' || $this->action->id == 'videos') 
    { 
     // Do something else 
    } 

    return true; 
} 

public function actionIndex() 
{ 
    // ... 
} 

public function actionVideos() 
{ 
    // ... 
} 

public function actionImages() 
{ 
    // ... 
} 

Comme vous pouvez le voir, à la fois l'instruction if et l'instruction switch UTILISIEZ $ this-> action-> id, qui renvoie le nom de l'action. Le problème est que sur l'instruction switch, elle n'accepte que "Images", avec une lettre majuscule, pourquoi, tandis que $ this-> action-> id retourne une chaîne en minuscule.

J'ai même essayé d'écrire une autre instruction if au lieu du commutateur - mais le même problème. De plus, essayé de vérifier la chaîne $ this-> action-> id retourne à la fois sur actionImages() et les autres - tous sont des minuscules.

Répondre

2

vous pouvez écrire votre déclaration de cas en minuscules ou vous pouvez utiliser ucfirst ($ this-> action-> id) comme celui-ci

protected function beforeAction($action = null) 
{ 
    $var=ucfirst($this->action->id); 
    switch ($var) 
    { 
     case 'Images': 
      // Do something 
      break; 

      // ... 
    } 

    if ($this->action->id == 'index' || $this->action->id == 'videos') 
    { 
     // Do something else 
    } 

    return true; 
} 

public function actionIndex() 
{ 
    // ... 
} 

public function actionVideos() 
{ 
    // ... 
} 

public function actionImages() 
{ 
    // ... 
} 
+0

Merci, s'avère que ce fut mon erreur. – user3803707

1

changer la casse des lettres contrôle strtolower() et ucfirst() méthodes

1

essayer de define cordes et voir si elles correspondent dans les deux déclarations. Vérifiez également la source de action->id et ce qu'elle renvoie.

Questions connexes