Ciao, sto creando un'applicazione di Yii2 Basic e ho un modulo di caricamento file nell'area di amministrazione. Il caricamento del file invia file ad app/web/upload. Ho seguito l'ottimo tutorial sul caricamento di file da samdark. Esso può essere visto qui: https://github.com/yiisoft/yii2/blob/master/docs/guide/input-file-upload.mdYii2 - Come elencare i file all'interno di una cartella
quello che devo fare è di creare una vista che rende collegamenti ipertestuali a ciascuno dei file all'interno della cartella upload.
In Yii1.xx c'era un'estensione per la gestione dei file chiamata Cfile molto utile. Ho usato in diverse applicazioni per fare ciò che voglio ora.
Utilizzando CFile sono stato in grado di scrivere codice come questo:
$ cfileDir = Yii :: app() -> file-> set ('file PDF /'); // imposta i pdf come cartella di destinazione
$ files = $ cfileDir-> getContents();
Il metodo getContents() è stato ottimo perché consente di applicare in seguito un ciclo foreach e di elencare tutti i file nella cartella.
In Yii2 come fare qualcosa di simile nella cartella uploads, cioè, lista di file in quella cartella e creare collegamenti ipertestuali in una vista.
Per crare i collegamenti ipertestuali all'interno della vista, potrei usare Html :: a(), ma per ottenere tutti i file al suo interno non so come farlo.
Eventuali idee ?? Grazie.
EDIT
risolto con la grande punta da ALI.
ECCO IL BLOCCO COMPLETO DI CODICE
<?php
$files=\yii\helpers\FileHelper::findFiles('uploads/');
if (isset($files[0])) {
foreach ($files as $index => $file) {
$nameFicheiro = substr($file, strrpos($file, '/') + 1);
echo Html::a($nameFicheiro, Url::base().'/uploads/'.$nameFicheiro) . "<br/>" . "<br/>" ; // render do ficheiro no browser
}
} else {
echo "There are no files available for download.";
}
?>
Grazie Ali per la risposta rapida. Tuttavia non ho potuto implementarlo perché PHP genera sempre l'errore: Conversione da matrice a stringa. In PHP potremmo usare print_r per stampare un elemento array per elemento, ma in Yii2 non so cosa fare. Idee? –
Ok. L'ho appena risolto usando l'ottimo consiglio di Ali, che mi ha indicato nel modo giusto. Ho usato il metodo findfiles() e poi l'ho iterato come mostrerò nell'EDIT alla mia domanda. Contrassegnerò la risposta di Ali come corretta. Vedere la MODIFICA per la soluzione completa. Mille grazie per il supporto. –
_In PHP è possibile utilizzare print_r_ È ancora possibile: aggiungere la matrice alle variabili della vista e _print_r() _ nella vista. ** Controller **: 'return $ this-> render ('index', ['debug' => $ files]);' ** View **: '
Php print_r ($ debug); ?>
' –