1. Go to this page and download the library: Download setono/sylius-video-plugin 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/ */
# src/Entity/Product/Product.php
declare(strict_types=1);
namespace App\Entity\Product;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Setono\SyliusVideoPlugin\Model\ProductVideosAwareInterface;
use Setono\SyliusVideoPlugin\Model\ProductVideosAwareTrait;
use Sylius\Component\Core\Model\Product as BaseProduct;
#[ORM\Entity]
#[ORM\Table(name: 'sylius_product')]
class Product extends BaseProduct implements ProductVideosAwareInterface
{
use ProductVideosAwareTrait;
public function __construct()
{
parent::__construct();
$this->videos = new ArrayCollection();
}
}
namespace App\Entity\Video;
use Setono\SyliusVideoPlugin\Model\UrlProductVideo;
use Setono\SyliusVideoPlugin\Model\UrlProductVideoInterface;
interface YoutubeProductVideoInterface extends UrlProductVideoInterface
{
public function getVideoId(): ?string;
}
class YoutubeProductVideo extends UrlProductVideo implements YoutubeProductVideoInterface
{
public function getVideoId(): ?string
{
$url = (string) $this->getUrl();
if (1 === preg_match('#youtu\.be/([\w-]{11})#', $url, $matches)) {
return $matches[1];
}
parse_str((string) parse_url($url, \PHP_URL_QUERY), $query);
return is_string($query['v'] ?? null) ? $query['v'] : null;
}
}
#[ORM\MappedSuperclass]
class YoutubeProductVideo extends UrlProductVideo implements YoutubeProductVideoInterface
final class YoutubePosterResolver implements VideoPosterResolverInterface
{
public function supports(ProductVideoInterface $video): bool
{
return $video instanceof YoutubeProductVideoInterface && null !== $video->getVideoId();
}
public function resolve(ProductVideoInterface $video): ?string
{
\assert($video instanceof YoutubeProductVideoInterface);
return null === $video->getVideoId()
? null
: sprintf('https://img.youtube.com/vi/%s/hqdefault.jpg', $video->getVideoId());
}
}
final class YoutubeProductVideoTypeExtension extends AbstractProductVideoTypeExtension
{
protected function getType(): string
{
return YoutubeProductVideo::getType();
}
protected function getFields(): array
{
// Field names must be unique across types (the plugin's URL type owns `url`), so name
// yours distinctly and map it onto the inherited property with `property_path`.
return [
'youtube_url' => [UrlType::class, [
'property_path' => 'url',
'label' => 'app.form.video.youtube_url',
'
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.