sto sbattendo la testa contro questo CAssetManager, ho capito che crea una cartella o file all’interno di assets, che serve per renderle “pubbliche” ma mi viene restituito un errore
il mio codice è questo:
$file=CUploadedFile::getInstance($model,'file'); //prende il riferimento al file
if($file != null) {
// $dir2 = Yii::getPathOfAlias('application.uploads'); //il path alias
$dir = Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.uploads'));
echo "dir".$dir;
echo "percorso".$dir2;
$file->saveAs($dir.'/'.$file->getName());
$this->foto=$file->getName();
}
ma ricevo come errore :
move_uploaded_file(...../assets/fa7983da/12.jpg): failed to open stream: No such file or directory
la Cartella viene creata in assets con dentro il relativo file, ma ricevo cmq questo Warning.
Ma ogni volta che metto un file con CAssetsManager, anche se esiste, mi crea una cartella?
Grazie a tutti
Edit Post:
Ho Modificato lo script in questo modo:
$file=CUploadedFile::getInstance($model,'file'); //prende il riferimento al file
if($file != null) {
// $dir2 = Yii::getPathOfAlias('application.uploads'); //il path alias
$dir = Yii::getPathOfAlias('application.uploads');
echo "dir".$dir."<br/>";
echo "percorso".$dir2;
$file->saveAs($dir.'/'.$file->getName());
$dir2 = Yii::app()->getAssetManager()->publish($dir);
//$this->foto=$file->getName();
}
e sembra andare…comunque sia ogni volta che metto un file mi crea una cartella?
Non è esattamente il codice che uso io … ma di fatto noi abbiamo a disposizione Yii::app()->basePath che fa riferimento alla cartella protected. Con … andiamo alla cartella superiore. Tutto qui.
quello che ho capito anche leggendo questo, è chein assets ci vanno i js, img, e altre cose che servono per la creazione dei Widget e altri componenti, proprio per non rischiare il sovrascriversi dei due.
Le immagini e tutto il resto per “l’uso” finale nostro, si devono mettere in un’altra cartella, ma sempre fuori protected, proprio sfruttando come suggerisci te