Frage

Ok, ich habe ein nerviges Problem. Ich habe einen Code in einem benutzerdefinierten Helfermodul, mit dem ich Bilder ändern und eine zwischengespeicherte Kopie speichere. Das funktioniert nicht. Wenn ich jedoch auf mage.php gehe und die deklarierte Variable ändere DS aus DIRECTORY_SEPARATOR zu / Es funktioniert perfekt. Dann brechen einige Community -Module jedoch, die den Standard verwenden DS.

Hier ist meine Methode:

public function resizeImg($fileName, $width, $height, $constrain = false, $ratio = false)
{
    $folderURL = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
    $imageURL = $folderURL . $fileName;

    $basePath = Mage::getBaseDir(Mage_Core_Model_Store::URL_TYPE_MEDIA) . DS . $fileName;
    $newPath = Mage::getBaseDir(Mage_Core_Model_Store::URL_TYPE_MEDIA) . DS . "resized" . DS . $width . DS . $fileName;
    //if width empty then return original size image's URL
    if ($width != '') {
        //if image has already resized then just return URL
        if (file_exists($basePath) && is_file($basePath)/* && !file_exists($newPath)*/) {
            $imageObj = new Varien_Image($basePath);
            $imageObj->constrainOnly($constrain);
            $imageObj->keepAspectRatio($ratio);
            $imageObj->keepFrame(FALSE);
            $imageObj->resize($width, $height);
            $imageObj->save($newPath);
        }
        $resizedURL = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . "resized" . DS . $width . DS . $fileName;
     } else {
        $resizedURL = $imageURL;
     }
     return $resizedURL;
}

Und die funktionierende App/mage.php

define('DS', DIRECTORY_SEPARATOR);

Wenn ich nun diese DS in '/' ändere, funktioniert es gut.

Ich habe dann Folgendes ausprobiert:

define('DS2', '/');

Dann ändert sich das DS in meine Methode in DS2, aber dies hat auch nicht funktioniert, noch wechselte es in eine Zeichenfolge oder Variable.

Aus meiner Suche des Verzeichnisauswahls wird durch den Servertyp definiert. Dies sollte ein Linux -Server sein, und dennoch, wenn ich DS selbst verwende, bricht es und versuchte, auszugeben anstelle von /, überall sonst gibt es korrekt aus /.

Zum Teufel mache ich falsch?

War es hilfreich?

Lösung

Sie verwechseln URLs mit Verzeichnissen.

getBaseUrl ist für URLs, die immer durch getrennt werden /

getBaseDir ist für Verzeichnisse, die eine Variable haben werden DS definiert durch die konstante Variable von PHP DIRECTORY_SEPARATOR - Was Magento verkürzt DS

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top