0

タイトルが奇妙に見えます。説明させてください。

Post の適切なモデル構造があります。投稿には本文列があります。しかし、私はそれを2つの異なるスタイルで使用する必要があります。

そのうちの 1 つはマークダウン解析スタイルです。MarkdownNext パッケージを使用しています。私が呼び出すと$post->body->markdown()、それが処理されMarkdown::render($post->body)ます。同時に$post->bodyプレーンテキストを返します。

4

1 に答える 1

1

これを Laravel で直接行うことはできませんが、PHP を使用して再現できます。

これはテストされていないコードですが、動作するはずです。基本的に、クラス Markdown のオブジェクトを返すアクセサーを作成します。必要なのは、そのオブジェクトに本体を挿入することだけです。

class Post extends Eloquent {

    public function getBodyAttribute($originalValue)
    {
        return new Markdown($originalValue);
    }

}

クラスはボディを受け取り、それをプロパティに格納します。$this->body魔法のメソッド __toString は、コードが文字列として使用しようとするたびに使用されます。使用する場合$this->body->markdown()、これはこのメソッドを持つオブジェクトであり、MarkdownNext クラスを使用してボディをレンダリングするだけです。

class Markdown {

    public $body;

    public function __construct($body)
    {
        $this->body = $body;
    }

    public function __toString()
    {
        return $this->body;
    }

    public function markdown()
    {
        return MarkdownNext::render($this->body);
    }

}
于 2014-01-09T01:39:54.523 に答える