标题看起来很奇怪。让我解释一下。
我有适合Post的模型结构。帖子有一个正文栏。但我需要在两种不同的风格中使用它。
其中一个降价解析风格。我使用MarkdownNext package。如果我致电$post->body->markdown()
,它将处理Markdown::render($post->body)
。同时$post->body
将返回纯文本。
答案 0 :(得分: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);
}
}