Pregunta

Ok tengo un problema molesto. Tengo algo de código en un módulo de ayuda a medida que utilizo para cambiar el tamaño de las imágenes y guardar una copia en caché. Ahora bien, esto no funciona. Sin embargo si entro en mage.php y cambiar el DS variable declarada de DIRECTORY_SEPARATOR a / funciona perfectamente. Sin embargo a continuación, algunos módulos de la comunidad rompen que utilizan el DS estándar.

Aquí es mi método:

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

Y la aplicación de trabajo / Mage.php

define('DS', DIRECTORY_SEPARATOR);

Ahora si cambio que DS a '/' que trabaja muy bien.

Me trató entonces la siguiente:

define('DS2', '/');

A continuación, cambia la DS a DS2 en mi método, pero esto también no funcionaba, ni el cambio en una cadena o variable.

de mi búsqueda en el selector de directorio se define por el tipo de servidor, este debe ser un servidor Linux y sin embargo, sólo cuando uso DS mismo que se rompe y trataron de salida \ en lugar de /, en todas partes correctamente salidas /.

diablos estoy haciendo mal?

¿Fue útil?

Solución

URL está confundiendo con los directorios.

getBaseUrl es para URLs, que siempre estarán separados por /

getBaseDir es para Directorios, que tendrá un DS variable definida por la constante DIRECTORY_SEPARATOR variables de PHP - que es lo que Magento acorta hasta DS

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top