LaravelでXML

データベースでなく、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]);
    }

まずは、ここから。

CAT