Meldung Anzeigen, Wenn Löschen Nicht Erlaubt

Hallo,

ich möchte, dass ein bestimmter Datensatz, also eine bestimmte Zeile in der gridView (z.B. mit der userId ‘admin’) nicht gelöscht werden kann. Bei dem Versuch, den DS zu löschen soll der Benutzer einen Hinweis bekommen.

Ich habe im Model folgendes versucht:


   public function beforeDelete() { 

        if ( $this->userId == "admin" ) {

            $error = 'Der Benutzer \'admin\' kann nicht gelöscht werden.';

            // echo $error;

            return false;

        }  else return parent::beforeDelete();

    }

Das Löschen des Datensatzes wird dadurch zwar verhindert, aber der Benutzer erfährt nicht, warum der DS nicht aus der GridView verschwindet. Die gewünschte Meldung einfach mit


echo $error

anzeigen funktioniert jedenfalls nicht - die Fehlermeldung erscheint nicht auf der Seite.

Habe noch keine Erfahrung mit dem Error Handling. :rolleyes:

Danke für jeden Tipp

Ferdinand

schau dir das mal an:

http://www.yiiframework.com/wiki/21/how-to-work-with-flash-messages/

Danke für den Link. Leider komme ich nicht ganz zurecht damit.

Im Model habe ich nun:


public function beforeDelete() {

    if ( $this->userId == "admin" ) {

        $error = 'Der Benutzer \'admin\' kann nicht gelöscht werden.';

        Yii::app()->user->setFlash('error', $error);

        return false;

    }  else return parent::beforeDelete();

}

Im view admin (gridView) habe ich drei verschiedene Varianten probiert:


Yii::app()->clientScript->registerScript(

   'myHideEffect',

   '$(".info").animate({opacity: 1.0}, 3000).fadeOut("slow");',

   CClientScript::POS_READY

);


Yii::app()->clientScript->registerScript('error', "alert(".Yii::app()->user->getFlash('error').");");

?>


<h1>Benutzerverwaltung</h1>


<div class="info">

    <?php echo Yii::app()->user->getFlash('error'); ?>

</div>

Am liebsten wäre mir die einfache Variante mit alert() oder ganz ohne JavaScript.

Aber ich bekomme nichts von der Meldung zu sehen. Nur ein kurzes Aufflackern (JQuery ???).

Ich habe das Problem auf andere Weise gelöst: Durch Ausblenden des Links zum Löschen dieses Datensatzes im [b]gridView :rolleyes: :

[/b]


array(

   'class'=>'CButtonColumn',

         'buttons' => array(

             'delete' => array('visible' => '$data->userId != \'admin\''),

          ),

)

Und zur Sicherheit gibt es ja noch die Funktion im Model:


public function beforeDelete() {

    if ( $this->userId == "admin" ) return false;

    else return parent::beforeDelete();

}