データベースでなく、XMLを対象にする場合はLaravelではどのように書くのだろう。
簡単なことかもしれないが、具体的にどうするのがよいのか試してみた。
途中、layoutsのヘッダーを従来のアプリから持ってきたことに起因する意味不明のエラーが継続して苦しんだが、実はシンプルだった。
モデルというのがないので、appの下に、Xmlsというフォルダーを作成し、ここにXMLを読み取る作業を閉じ込めることにする。
生薬と漢方処方のXMLがあるので、それぞれ、Shoyaku.php、Kanpo.phpとする。
Controllerはmake:controllerで普通に作成。ShoyakuController.php、KanpoController.php
Viewも普通に作成。
\resources\views\shoyaku\index.blade.php、\resources\views\kanpo\index.blade.php
XMLファイルをどこに置くのかと思ったが、strageのApp配下に置くのが良いらしい。
\storage\app\xmls\shoyaku.xml、 \storage\app\xmls\kanpo.xml
storageフォルダーは、storage_path関数で取得できる。
\app\Xmls\Shoyaku.php
public function getall()
{
$target_file=storage_path('app/xmls/shoyaku.xml');
$xmls = simplexml_load_file($target_file);
$json = json_encode($xmls);
$xmlArray = json_decode($json,TRUE);
return $xmlArray['row'];
}
(rowはXMLのレコードの名前。XMLに合わせて変更する。)
Controllerは結果をviewに渡すだけ。
public function index()
{
$shoyaku = new Shoyaku();
$xmlArray=$shoyaku -> getall();
return view('/shoyaku.index',['items' => $xmlArray]);
}
まずは、ここから。