Hallo Zusammen
Ich komme aus der prozeduralen Ecke und bin am OOP lernen.
Ich möchte es gleich richtig lernen. Wie mache ich das elegant? Mein Ansatz ist bestimmt redundant und ineffizient.
Zielverhalten
-
Ich möchte den Guest beim starten der actionProjekt darauf hinweisen das er sich zuerst anmelden muss. Die Auflistungen der Projekt darf er sehen.
-
Der Member soll die actionProject normal ausführen können.
festgestellte Probleme
-
Das data array fülle ich redundant in 2 action ab.
-
irgendwie ist das ganze ein gebastel.
-
Mit den AccessRoules wechselt es die Seite, möchte die Meldung auf der selben seite anzeigen.
Muss ich die Meldung evt. mit jQuery ausgeben?
Testumgebung
www.makebusiness.ch (user: test@test.ch password: demo)
[size="5"]Controller[/size]
public function actionProject() {
if (Yii::app()->user->isGuest) {
$msg ="Bitte zuerst anmelden.";
$data= TblProjekt::model()->FindAll();
$this->render('show', array('var1' => $msg,'typ' => 'alert alert-error','data'=>$data)); // <-- render mit bootstrapmeldung im array
} else {
// ********
// Function die der Member ausführen darf
// ********
}
}
public function actionShow() {
if (isset($_GET['id'])) {
$data= TblProjekt::model()->FindAllByAttributes(array('Kategorie'=>$_GET['id']));
} else {
$data= TblProjekt::model()->FindAll();
}
$this->render('show',array('data'=>$data));
}
[size="5"]View[/size]
<div>
<? if (isset($var1)) { //<-- Infomeldung oben am Browser
Echo "<div class=".$typ.">";
echo $var1;
echo "</div>"; }?>
</div>
<?
$count_items = count($data);
if($count_items > 0){
?> <div id="container"> <?
// Durchläuft die Datensätze
foreach($data as $item) {
Darstellung der Daten
}