+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Definition globaler Variablen mit MVC-Konzept

  1. #1
    Neu an Board
    Registriert seit
    05.03.2009
    Ort
    Konstanz
    Alter
    29
    Beiträge
    13
    Bedankte sich
    2
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard Definition globaler Variablen mit MVC-Konzept

    hi,

    ich arbeite momentan an einer eigenen komponente für joomla 1.5. das model-view-controller (mvc) konzept ist demnach der neue standard. ich habe mich genau an die vorgaben gehalten.
    ich habe dort unter anderem ein validiertes formular. wenn ein eintrag leer gelassen wurde erscheint ein kleiner stern in der betreffeneden zeile damit dieser eintrag vervollständigt wird.
    mein problem ist das die globale variable für den gesetzten wert ständig auf false steht obwohl ich sie mit true initialisiere, dadurch sind anfangs überall die sterne gesetzt was nicht wirklich schön ist. die initialisierung nehme ich momentan in der view.html.php vor, das formular stelle ich in der default.php bereit.

    kann mir jemand vielleicht sagen wo ich grundsätzlich die initialisierung bei einem model-view-controller-konzept vornehmen soll bzw. muss und das speziell für joomla?

    mfg andi

  2. #2
    Verbringt hier viel Zeit Avatar von Troubleshooter
    Registriert seit
    27.05.2006
    Ort
    Leipzig
    Beiträge
    921
    Bedankte sich
    5
    Erhielt 249 Danksagungen
    in 234 Beiträgen

    Standard

    ist schon etwas komplexer die Frage...

    Ich nutze für sowas meist die php Cross Reference von 1.5.xx
    E=mc²
    War der Hinweis hilfreich, dann einfach mal links auf "Danke" klicken...
    www.techplace.de

  3. #3
    OpenSource Nutzer Avatar von blackice2999
    Registriert seit
    18.05.2006
    Ort
    Berlin
    Alter
    32
    Beiträge
    3.639
    Bedankte sich
    112
    Erhielt 934 Danksagungen
    in 711 Beiträgen

    Standard

    Hallo,

    wenn ich Dich jetzt richtig verstehe möchtest Du eine Variable vom Controller an das View übergeben ?!

    einweg währe es diese mit JRequest "abzulegen" und woanders wieder aufzunehmen. Obwohl das eher der nicht feine Stil ist... Grundsätzlich solltest Du deine Methoden etc, so wählen das Du die benötigten Parameter übergibst.

    Gruß Dennis
    Thread gelöst ? => Anleitung
    Wichtige Themen => Joomla FAQ | Flottes Sicherheitsliste
    Einfach nur so => Geiz ist doch geil oder?
    *dies ist ein Joomla Forum - Kein css / html Anfänger Forum...*

  4. #4
    Neu an Board
    Registriert seit
    05.03.2009
    Ort
    Konstanz
    Alter
    29
    Beiträge
    13
    Bedankte sich
    2
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    @Troubleshooter: die seite ist ganz gut, allerdings habe ich auf ähnliche weise die umfrage-komponente durchleuchtet und das von der struktur her ähnlich gemacht. allerdings habe ich nirgends eine klasse der art parameterbase gefunden wo wirklich nur variablen initialisiert werden.

    @blackice2999:
    ich denke es müsste auch prinzipiell ohne Joomla-Klassen funktionieren. ich definiere eine var $Name_OK standardmäßig mit true welche nur im else-zweig also im fehlerfall auf false gesetzt wird. hier ist ein kleiner code-schnipsel wie ich es meine:
    view.html.php
    PHP-Code:
            function display($tpl null
            {        
                
    $menuEntry "Formlist";
                
    $this->assignRef('form'$menuEntry);
                
                
    $Name_OK    true;

                if (isset(
    $_POST['submit'])) 
                {
                    
    $ausgabe '';
                    
    $fehler  '';

                    if(isset(
    $_POST['Name']) && !is_array($_POST['Name']) && $_POST['Name'] != '') {
                        
    $ausgabe .= 'Name: ' htmlspecialchars($_POST['Name']) . '<br />';
                    } else {
                        
    $fehler .= 'Kein Name angegeben!<br />';
                        
    $Name_OK false;
                    }
                    
                    if(
    $fehler == '') {
                        
    data2db(); //Schreibt die Daten in eine MySQL-DB    
                    
    } else {
                        echo 
    "<b>$fehler</b>";
                    }
                }
                
                
    parent::display($tpl);
            } 
    und default.php (mein template welches die daten von der view.html.php bekommt)
    PHP-Code:
                <?php
                    
    if(!$Name_OK) {
                        echo 
    '<span style="color:red">*</span>';
                    }
                
    ?>
    dies ist wie gesagt nur ein ganz kleiner ausschnitt. das skript funktionierte vor dem einbetten in das mvc einwandfrei, nur die parameterübergabe scheint mir noch ein wenig undurchsichtig.

  5. #5
    Neu an Board
    Registriert seit
    05.03.2009
    Ort
    Konstanz
    Alter
    29
    Beiträge
    13
    Bedankte sich
    2
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    also ich habe es jetzt hinbekommen, allerdings bin ich jetzt etwas skeptisch. ich habe den code aus der view.html.php in die default.php kopiert und es klappt. aber nach dem neuen joomla konzept sollte doch eigentlich zwischen template und view unterschieden werden.
    so ganz 100% bin ich noch nicht davon überzeugt aber es mag daran liegen das ich damit noch nicht so vertraut bin.

    dennoch danke für eure schnelle hilfe!

    mfg andi

  6. #6
    OpenSource Nutzer Avatar von blackice2999
    Registriert seit
    18.05.2006
    Ort
    Berlin
    Alter
    32
    Beiträge
    3.639
    Bedankte sich
    112
    Erhielt 934 Danksagungen
    in 711 Beiträgen

    Standard

    Hi,

    wenn ihr aber schon für Joomla Programmiert, warum nutzt Ihre denn dann nicht auch die Klassen und Methoden die euch gegeben werden ?!

    Um nur mal ein Beispiel zu nennen.

    Code:
    if (isset($_POST['submit']))
    in diesem Fall noch nicht weiter wild, aber auf diese Art für Joomla zu Programmieren bedeutet euch in gewisser weise auch ein Sicherheitsrisiko. Nehmen wir mal eine ID die wir aus irgendeinen Grund brauchen

    Code:
    if (isset($_POST['id']))
    {
       $sqlAbfrage = "SELECT * FROM table WHERE id = $_POST['id'])
    }
    SQL INJECTION GEFAHR !!!! Also würdest dich jetzt wieder dran setzen und würdest Prüfen ob die ID auch wirklich eine Zahl ist...

    all das haben die Jungs vom Joomla Team aber schon gemacht...

    Code:
    $id = JRequest::getInt('id');
    daher rate ich auf jedenfall davon ab direkt POST,GET,REQUEST zu nutzen und wohl eher die Joomla API etwas genauer zu studieren...
    Thread gelöst ? => Anleitung
    Wichtige Themen => Joomla FAQ | Flottes Sicherheitsliste
    Einfach nur so => Geiz ist doch geil oder?
    *dies ist ein Joomla Forum - Kein css / html Anfänger Forum...*

  7. #7
    OpenSource Nutzer Avatar von blackice2999
    Registriert seit
    18.05.2006
    Ort
    Berlin
    Alter
    32
    Beiträge
    3.639
    Bedankte sich
    112
    Erhielt 934 Danksagungen
    in 711 Beiträgen

    Standard

    Zitat Zitat von Cappaja Beitrag anzeigen
    also ich habe es jetzt hinbekommen, allerdings bin ich jetzt etwas skeptisch. ich habe den code aus der view.html.php in die default.php kopiert und es klappt. aber nach dem neuen joomla konzept sollte doch eigentlich zwischen template und view unterschieden werden.
    so ganz 100% bin ich noch nicht davon überzeugt aber es mag daran liegen das ich damit noch nicht so vertraut bin.

    dennoch danke für eure schnelle hilfe!

    mfg andi
    Hallo zum Thema MVC gibt es ja bereits einige Threads hier.
    Wie baut sich also eine Typische MVC Komponente auf.

    Der Controller:
    Entscheided welches View wann aufgerufen wird. z.B. kannst Du hier auch prüfen ob ein User überhaupt das recht hat ein view aufzurufen...

    Das / Der View:
    Sammelt alle Daten zusammen vom Model stellt diese in (ich nenn es mal Variablen) und lädt dann das Template.

    Das Model:
    Kümmert sich um die Datenbeschaffung aus der Datenbank

    Das Template:
    Ist eigendlich bestandteils des Views nur das sich hier nur noch um die Ausgabe gekümmert wird...
    Thread gelöst ? => Anleitung
    Wichtige Themen => Joomla FAQ | Flottes Sicherheitsliste
    Einfach nur so => Geiz ist doch geil oder?
    *dies ist ein Joomla Forum - Kein css / html Anfänger Forum...*

  8. #8
    Verbringt hier viel Zeit Avatar von Troubleshooter
    Registriert seit
    27.05.2006
    Ort
    Leipzig
    Beiträge
    921
    Bedankte sich
    5
    Erhielt 249 Danksagungen
    in 234 Beiträgen

    Standard

    Hier Cappaja, die API (naja ein Stück davon zumindest erstmal)
    E=mc²
    War der Hinweis hilfreich, dann einfach mal links auf "Danke" klicken...
    www.techplace.de

  9. #9
    OpenSource Nutzer Avatar von blackice2999
    Registriert seit
    18.05.2006
    Ort
    Berlin
    Alter
    32
    Beiträge
    3.639
    Bedankte sich
    112
    Erhielt 934 Danksagungen
    in 711 Beiträgen

    Standard

    Mal stark vereinfacht gesehen...

    Code:
    function display($tpl = null) 
    {        
    
        // get name parameter
        $submitedName = JRequest::get('name', false); // get name from post, get or request. Default Value is false...
    
        // do some checks with $submitedName;
        if (!$submitedName && !is_array($submitedName) && $submitedName != '')
        {
            $this->assignRef('name', $submitedName);
        }
    
        parent::display($tpl);
    
    }
    und in der Default.php dann:

    Code:
    <?php if ($this->name == false) : ?>
        <h1><?php echo JText::_('FEHLER!!!'); ?></h1>
    <?php else : ?>
        <h1><?php echo JText::_('ALLES OK!!!'); ?></h1>
    <?php endif; ?>
    Thread gelöst ? => Anleitung
    Wichtige Themen => Joomla FAQ | Flottes Sicherheitsliste
    Einfach nur so => Geiz ist doch geil oder?
    *dies ist ein Joomla Forum - Kein css / html Anfänger Forum...*

  10. Erhielt Danksagungen von:


  11. #10
    Neu an Board
    Registriert seit
    05.03.2009
    Ort
    Konstanz
    Alter
    29
    Beiträge
    13
    Bedankte sich
    2
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    hi,

    nochmals vielen dank für eure ausführlichen antworten, ich kenne das problem der sql-injection und du hast an dieser stelle natürlich völlig recht, die große if-abfrage nach dem senden-button sollte ich ebenfalls wie die einzelnen eingabefelder nochmals sicherstellen, das hab ich an dieser stelle schlicht weg übersehen.

    auf dieser seite hier http://joomla.cocoate.com/beispiel-komponente-hallowelt ist eine kleine hello-world komponente beschrieben auf welcher ich einfach weiter drauf aufgebaut habe. ich bleibe schon gerne bei php als grundsprache und benutze die joomla-befehle eigentlich nur dort wo sie dringend erforderlich sind. wenn ich mal genügend zeit finden sollte arbeite ich mich auch dort gerne mal ein

    mfg

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein