CGridview bouton de suppression conditionnelle
Je veux que le bouton supprimer pour être actif que dans certaine condition dans CGgridView
CButtonColumn
(ou personnaliser un bouton supprimer) e g si user=='admin'
ou status=='draft'
. Des idées? Merci!
source d'informationauteur zuups
Vous devez vous connecter pour publier un commentaire.
utiliser "visibles" paramètre -
Vous pouvez également utiliser la fonction anonyme si PHP >= 5.3
Comme zuups états Mukesh poste, vous devez utiliser des guillemets simples! Et user1584901 est à droite avec la réponse, dans le cas de l'état est une propriété de l'instance du modèle. Donc,
est correct. (Explication en bas)
Je tiens à ajouter quelques choses intéressantes que vous pouvez en faire autant.
Considérons, par exemple, un utilisateur actif. Dans ce cas, je voudrais ajouter le bouton supprimer uniquement pour les utilisateurs qui n'ont pas de actifs.
Dans ce cas, vous pouvez faire une relation dans le modèle de l'utilisateur telles que
Qui retourne 1 si l'utilisateur possède des biens, ou 0 sinon.
Et de définir le paramètre visible que
La raison de tout cela fonctionne (comme demandé par 0x7fffffff) c'est parce que Yii utilise la chaîne définie dans le visible pour l'appliquer à l'evaluateExpression fonction à l'intérieur de la fonction de rendu des boutons (renderButton).
À partir de: https://github.com/yiisoft/yii/blob/1.1.14/framework/zii/widgets/grid/CButtonColumn.php ligne 337
Qui est défini dans le CComponent classe:
https://github.com/yiisoft/yii/blob/1.1.14/framework/base/CComponent.php ligne 607
Donc, fondamentalement, ce qui se passe est que le evaluateExpression fonction de mettre à disposition les variables $de données (qui est l'instance du modèle pour la ligne en question) et $row (tout cela en utilisant l'extrait de fonction) et d'évaluer votre expression de chaîne comme du code php. De sorte que toute mention de $données $ou ligne va utiliser la variable déjà définie par la evaluteExpression fonction dans ce champ d'application.
C'est pourquoi vous pouvez utiliser le modèle de l'instance de la ligne correspondante ($data->statut, ou $data->haveAssets à partir des exemples).
Notez que la chaîne doit être une expression qui renvoie une valeur booléenne pour déterminer la visibilité du bouton.
Et la raison pour laquelle les chaînes doivent être entre guillemets, c'est que tout en utilisant les guillemets, php va supposer que n'importe quelle chaîne de caractères qui commence par $ est une variable et va essayer de la remplacer par la variable valeur. Depuis, dans votre champ d'application de l' $variable de données est vide de sens (ou pourrait être défini) lèvera une erreur ou de le remplacer, de façon trompeuse. L'utilisation des guillemets simples vous empêcher d'avoir ce comportement.