laravel 如何从HTML文件中的元数据访问日期值?

pftdvrlh  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(120)

我在Laravel项目中安装了spatie/yaml-front-matter包来访问HTML文件中的元数据。不幸的是,我无法按日期对文件进行排序,因为元数据中的date属性返回空值。我的操作系统是Microsoft Windows 10 Pro Version 10.0.19042 Build 19042。我使用Laravel版本9和PHP版本8.0。
这里是元数据的副本,它出现在HTML文件的顶部。

---

title: My Fifth Post
slug: my-fifth-post
excerpt: Lorem Ipsum is simply dummy text of the printing and typesetting industry.
date: 2022-01-25

---

下面是我的Models目录中的POST类的副本。

namespace App\Models;

use Illuminate\Support\Facades\File;
use Spatie\YamlFrontMatter\YamlFrontMatter;

class Post
{
    public $title;
    public $excerpt;
    public $date;
    public $body;
    public $slug;

    public function __construct($title, $excerpt, $date, $body, $slug)
    {
        $this->title = $title;
        $this->excerpt = $excerpt;
        $this->date - $date;
        $this->body = $body;
        $this->slug = $slug;
    }

    public static function all()
    {
        return collect(File::files(resource_path("posts")))
            ->map(fn($file) => YamlFrontMatter::parseFile($file))
            ->map(fn($document) => new Post(
                $document->title,
                $document->excerpt,
                $document->date,
                $document->body(),
                $document->slug
            ));
    }

    public static function find($slug)
    {
        return static::all()->firstWhere('slug', $slug);
    }
}

最后是var_dump(Post::find('my-fifth-post'))的截图。

5jvtdoz2

5jvtdoz21#

你应该继承Laravel的默认模型:

use Illuminate\Database\Eloquent\Model;

类Post扩展Model。之后,你可以使用Laravel的模型方法,强制转换等等。你已经发现,模型中的所有方法都不理想。如果您愿意,可以使用存储库模式。Laravel,Eloquent使用活动记录,所以你不必设置所有的$title $slug等。Laravel做这一切

相关问题