1. Go to this page and download the library: Download m6web/draftjs-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
m6web / draftjs-bundle example snippets
# app/AppKernel.php
public function registerBundles()
{
$bundles = array(
new M6Web\Bundle\DraftjsBundle\M6WebDraftjsBundle(),
);
}
namespace Acme\Bundle\DemoBundle\Renderer\Block;
use M6Web\Bundle\DraftjsBundle\Renderer\Block\AbstractBlockRenderer;
use M6Web\Bundle\DraftjsBundle\Model\ContentBlock;
class AcmeBlockRenderer extends AbstractBlockRenderer
{
/**
* @param \ArrayIterator $iterator
* @param array $entities
*
* @return string
*/
public function render(\ArrayIterator &$iterator, array $entities)
{
// you have acces to the global iterator of ContentBlock
// so just get current item by use curent()
$contentBlock = $iterator->current();
// if your renderer is handling the current ContentBlock
// you must inform the iterator to move to the next entry for next iteration
$iterator->next();
// By extending the AbstractBlockRenderer, you can use the ContentRenderer who allow to render inline html
$content = $this->contentRenderer->render(
$contentBlock->getText(),
$contentBlock->getCharacterList(),
$entities
);
if (!$this->template) {
return $content;
}
// You also have access to the templating engine
return $this->templating->render($this->template, [
'classNames' => $this->buildClassNames($contentBlock),
'content' => $content,
]);
}
/**
* @param string $type
*
* @return bool
*/
public function supports($type)
{
return 'acme' === $type;
}
/**
* @return string
*/
public function getName()
{
return 'acme';
}
}
function createLink() {
return DraftEntity.__create('LINK', 'MUTABLE', {uri: 'zombo.com'});
}
namespace Acme\Bundle\DemoBundle\Renderer\Inline;
use M6Web\Bundle\DraftjsBundle\Renderer\Inline\AbstractInlineEntityRenderer;
use M6Web\Bundle\DraftjsBundle\Renderer\Helper\InlineRendererHelperTrait;
use M6Web\Bundle\DraftjsBundle\Model\DraftEntity;
class LinkInlineEntityRenderer extends AbstractInlineEntityRenderer
{
const TAG_NAME = 'a';
use InlineRendererHelperTrait;
/**
* @param DraftEntity $entity
*
* @return string
*/
public function openTag(DraftEntity $entity)
{
$data = $entity->getData();
$attributes = [];
if (isset($data['url'])) {
$attributes['href'] = $data['url'];
}
if (isset($data['target']) && '_self' !== $data['target']) {
$attributes['target'] = $data['target'];
}
if (isset($data['nofollow']) && true === $data['nofollow']) {
$attributes['rel'] = 'nofollow';
}
if ($this->className) {
$attributes['class'] = $this->className;
}
return $this->openNode(self::TAG_NAME, $attributes);
}
/**
* @return string
*/
public function closeTag()
{
return $this->closeNode(self::TAG_NAME);
}
/**
* @param string $type
*
* @return bool
*/
public function supports($type)
{
return 'link' === $type;
}
/**
* @return string
*/
public function getName()
{
return 'link';
}
}
namespace Acme\Bundle\DemoBundle\Renderer\Entity;
use M6Web\Bundle\DraftjsBundle\Renderer\Entity\AbstractBlockEntityRenderer;
use M6Web\Bundle\DraftjsBundle\Model\DraftEntity;
class AcmeBlockEntityRenderer extends AbstractBlockEntityRenderer
{
/**
* @param DraftEntity $entity
*
* @return string
*/
public function render(DraftEntity $entity)
{
// generate content from the entity data
$content = 'content of your acme block';
return $this->templating->render($this->getTemplate(), [
'className' => $this->getClassName(),
'content' => $content,
]);
}
/**
* @param string $type
*
* @return bool
*/
public function supports($type)
{
return 'acme' === $type;
}
/**
* @return string
*/
public function getName()
{
return 'acme';
}
}