oxReviews erweitern

Moin zusammen,

ich hänge an einer Stelle bei einer geplanten Funktionserweiterung gewaltig fest. Ich möchte den Reviews eine weitere Information anhängen. Dazu habe ich entsprechend im Template das Feld im Formular hinterlegt und alles vorbereitet und muss es nun “nur noch” in die Datenbank schreiben. Der Tabelle oxreviews habe ich ein weiteres Feld “OXIMAGEREF” verpasst.

Beim speichern der Reviews baut sich OXID nun ein neues Review-Objekt zusammen, was im Original so aussieht:


public function saveReview()
    {
        if ( $this->canAcceptFormData() &&
             ( $oUser = $this->getUser() ) && ( $oProduct = $this->getProduct() ) ) {

           ...

            if ( ( $sReviewText = trim( ( string ) oxConfig::getParameter( 'rvw_txt', true ) ) ) ) {
                $oReview = oxNew( 'oxreview' );
                $oReview->oxreviews__oxobjectid = new oxField( $oProduct->getId() );
                $oReview->oxreviews__oxtype     = new oxField( 'oxarticle' );
                $oReview->oxreviews__oxtext     = new oxField( $sReviewText, oxField::T_RAW );
                $oReview->oxreviews__oxlang     = new oxField( oxLang::getInstance()->getBaseLanguage() );
                $oReview->oxreviews__oxuserid   = new oxField( $oUser->getId() );
                $oReview->oxreviews__oxrating   = new oxField( ( $dRating !== null ) ? $dRating : null );
                $oReview->save();
            }
        }
    }

Mein Ansatz wäre nun im ersten Schritt, dem Objekt das neue Feld einfach mit auszudrücken, also folgendes zu tun:


$oReview->oxreviews__oximageref = new oxField( oxConfig::getParameter( 'rvw_image'), oxField::T_RAW );

Leider tut sich auf diese Weise gar nichts. Die save-Methode in der oxBase habe ich mir auch schon angeschaut, ohne das es mich weiter gebracht hat.
Hat jemand eine Idee warum ich an der Stelle so auf dem Schlauch stehe?

Danke und Grüße

Moinsen auch,

also grundsätzlich sollte man Sachen die in die DB kommen, schon mal nicht im View machen, das ist dann eine Model/core Sache.
Also Tabelle oxreviews erweitert um Spalte oximageref:
Hierzu würde ich oxreviews überladen.
Beim Speichern gehe ich mal davon aus das wir die POST Vars einfach auslesen so wie im View das auch getan wird in reviews.tpl auch ein input feld namens “rvw_imgref”, so was wie :

<input type=“input” name=“rvw_imgref”>

in der review form einfügen.

Dann eine überladene Klasse erstellen ungefähr so :
class htr_oxreview extends htr_oxreview_parent
{
public function save()
{
if ($sReviewImageRef = trim( ( string ) oxConfig::getParameter( ‘rvw_imgref’, true ) ) ){
$this->oxreviews__oximageref = new oxField( $sReviewImageRef, oxField::T_RAW );
$this->_aFieldNames[‘oximageref’] = 0;
}
parent::save();

}

}

erstaml das DB Feld füllen, und dann noch das neue Feld in das Array $this->_aFieldNames einfügen …
enstprechend obigem Bsp., dann halt noch in Settings.Modules:
oxreview => meinModul/htr_oxreview

was voraussetzt obiges schnipsel ist in /modules/meinModul/htr_oxreview.php