タイトルが奇妙に見えます。説明させてください。
Post の適切なモデル構造があります。投稿には本文列があります。しかし、私はそれを2つの異なるスタイルで使用する必要があります。
そのうちの 1 つはマークダウン解析スタイルです。MarkdownNext パッケージを使用しています。私が呼び出すと$post->body->markdown()
、それが処理されMarkdown::render($post->body)
ます。同時に$post->body
プレーンテキストを返します。
これを 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);
}
}