我使用Laravel Markdown来查看内容。我希望创建@image(image_id)
来呈现<img src="path_to_image"></img>
=&gt; @image(image_id)
。
我已使用此Inline Parsing但仍不明白如何检测class ImageParser extends AbstractInlineParser
{
/**
* @return string[]
*/
public function getCharacters()
{
return ['@'];
}
/**
* @param InlineParserContext $inlineContext
*
* @return bool
*/
public function parse(InlineParserContext $inlineContext)
{
$cursor = $inlineContext->getCursor();
$previous = $cursor->peek(-1);
if ($previous !== null && $previous !== ' ') {
return false;
}
$previousState = $cursor->saveState();
$cursor->advance();
$handle = $cursor->match('/image\((\d+)\)/');
if (empty($handle)) {
$cursor->restoreState($previousState);
return false;
}
$imageId = preg_replace("/image\((\d+)\)/", "$1", $handle);
$image = Image::find($imageId);
if (is_null($image)) {
return false;
}
$inlineContext->getContainer()->appendChild(new HtmlInline($this->render($image)));
return true;
}
/**
* Render the image figure.
*
* @param \PYM\Storage\Image $image
*
* @return string
*/
protected function render(Image $image)
{
$source = empty($image->source) ? null : "<figcaption>{$image->source}</figcaption>";
return '<figure><img src="' . $image->getUrl('wide') . '" alt="' . $image->alt_tag . '">' . $source . '</figure>';
}
}
。
这里是我尝试过的示例代码:
parse()
我不明白如何使用{{1}}方法。也许这里的任何人都可以向我解释或举例:)