Creare un file XML con Laravel
Per creare un file XML con Laravel, ad esempio un feed, è possibile utilizzare blade per farlo in maniera semplice e veloce.
Come prima cosa recuperiamo i dati con le eventuali relazioni di cui abbiamo bisogno:
$products = Product::with(['options'])
->where('is_published_web', true)
->get();
E poi possiamo già eseguire il render del nostro template e ricavare la stringa XML:
$xml = view('feed_directory.il_mio_feed', ['products' => $products])->render();
Questo codice andrà a interpretare il file il_mio_feed.blade.php, che andremo a creare in resources/views/feed_directory/.
All'interno possiamo utilizzare la sintassi di blade, come in una normale view:
<?xml version="1.0"?>
<ilmiofeed>
<products>
@foreach ($products as $product)
<product>
<title>{{ $product->title }}</title>
<description>{{ $product->description }}</description>
<media>
@foreach ($product->getMedia('img') as $media)
<image>{{ $media->getFullUrl() }}</image>
@endforeach
</media>
</product>
@endforeach
</products>
</ilmiofeed>
Ora è possibile salvare il file
// Creo la directory se non esiste
// In questo caso voglio salvarlo nella directory xml/ raggiungibile dal sito pubblico
$xmlDirectory = public_path('xml');
if (!File::exists($xmlDirectory)) {
File::makeDirectory($xmlDirectory, 0755, true);
}
// Imposto il nome e path del file
$filename = 'il_mio_feed.xml';
$filePath = $xmlDirectory . '/' . $filename;
// Salvataggio del file
File::put($filePath, $xml);

Commenti