Daten speichern über JTable - mit einem Problem

  • Hallo zusammen,


    ich habe ein kleines Problem, welches ich u.a. in der Google+-Community schon einmal angesprochen habe, allerdings konnte bisher kein Ansatz eine endgültige Lösung herbei führen. Vielleicht treffe ich ja in diesem Forum auf den einen oder anderen, der noch eine Idee hat.


    Problemstellung:


    Ich möchte gerne über ein CLI-Script einen Eintrag in der Datenbank generieren - automatisch, versteht sich. Es soll aber auch die Möglichkeit geben, diesen Eintrag über eine Form im Backend von Joomla vorzunehmen.


    Mein Ansatz war: Wenn beide Aktionen im Grunde das gleiche tun sollen, dann wäre es ja ganz gut, wenn auch beide die gleichen Methoden nutzen.


    Das ganze funktioniert auch immer ganz gut, indem das CLI-Script einen kleinen Helper ansteuert, der dann über eine JTable-Instanz die Daten per bind() "bindet" und dann über store() speichert.



    Besonderheit bei diesem Problem:
    In der Store()-Methode werden Felder abgefragt, die zwar in der Form.xml vorhanden sind, aber kein Feld in der Datenbank besitzen. Da ich diese Werte nicht über $this->myfield abrufen kann, gehe ich über JInput an die Sache heran.


    Im Grunde frage ich also


    Code
    $jinput                         =         JFactory::getApplication()->input;$input                          =         $jinput->post->get('jform', array(), '');    if($input['creationdate'] <= $now){// do fancy stuff}...


    Das klappt auch ganz gut, wenn die Daten über das Formular im Web-Backend eingereicht werden. Über CLI gibt es natürlich keinen Input. Wenn ich die Werte ganz einfach versuche mit anzubinden


    Code
    $data['creationdate']        =            JFactory::getDate();$row                        =            JTable::getInstance('Item','BestiaTable'); $row->bind($data);$row->check;$store = $row->store();


    dann fehlt "creationdate" nach dem bind() - ich vermute, weil es kein Datenbankfeld für dieses Feld gibt.


    Gut, das funktioniert also nicht.


    Nun hatte Branko aus der Google+-Gruppe mir zu folgender Lösung geraten:


    Im Helper könnte man ja z.B. auch folgendermaßen arbeiten:


    Code
    $input                        =            $app->input;        $input->set('creationdate', JFactory::getDate()->toSql());$row = JTable::getInstance('Item','BestiaTable'); $row->check;$store = $row->store();


    Die Werte kann ich dann, wenn das Script über CLI laufen gelassen wird, folgendermaßen in der Store-Methode abfangen:


    Code
    $jinput = JFactory::getApplication()->input;
    var_dump($jinput->get('creationdate'))


    Das funktioniert auch schon sehr gut. Allerdings erhalte ich nun, wenn ich über das Formular speichere, NULL als Rückgabewert.


    Hat jemand von euch noch eine Idee, wie man hier ansetzen könnte?


    LG, Roman