Question

Ok j'ai un problème ennuyeux. J'ai un code dans un module d'aide personnalisé que j'utiliser pour redimensionner les images et enregistrer une copie en cache. Maintenant, cela ne fonctionne pas. Cependant, si je vais dans mage.php et changer la DS variable déclarée de DIRECTORY_SEPARATOR à / il fonctionne parfaitement. Cependant alors certains modules communautaires cassez qui utilisent le DS standard.

Voici ma méthode:

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;
}

Et l'application de travail / Mage.php

define('DS', DIRECTORY_SEPARATOR);

Maintenant, si je change que DS '/' il fonctionne très bien.

Je puis essayé ce qui suit:

define('DS2', '/');

Ensuite, change la DS à DS2 dans ma méthode, mais cela n'a pas non plus le travail, ni changer à une chaîne ou variable.

de ma recherche sur le sélecteur Directory est défini par le type de serveur, cela devrait être un serveur linux mais seulement quand je l'utilise moi-même DS il breaks et essayé de sortie \ au lieu de /, partout ailleurs correctement les sorties /.

L'enfer que je fais mal?

Était-ce utile?

La solution

Vous confondez les URL avec des répertoires.

getBaseUrl est pour les URL qui seront toujours séparés par /

getBaseDir est pour les répertoires, ce qui aura un DS variable définie par DIRECTORY_SEPARATOR variable constante de PHP - qui est ce que Magento raccourcit jusqu'à DS

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top