93 lines
2.7 KiB
PHP
93 lines
2.7 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony MakerBundle package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Symfony\Bundle\MakerBundle;
|
|
|
|
/**
|
|
* @author Sadicov Vladimir <sadikoff@gmail.com>
|
|
*/
|
|
final class GeneratorTwigHelper
|
|
{
|
|
public function __construct(
|
|
private FileManager $fileManager,
|
|
) {
|
|
}
|
|
|
|
public function getEntityFieldPrintCode($entity, $field): string
|
|
{
|
|
$twigField = preg_replace_callback('/(?!^)_([a-z0-9])/', static function ($s) {
|
|
return strtoupper($s[1]);
|
|
}, $field['fieldName']);
|
|
$printCode = $entity.'.'.str_replace('_', '', $twigField);
|
|
|
|
switch ($field['type']) {
|
|
case 'datetimetz_immutable':
|
|
case 'datetimetz':
|
|
$printCode .= ' ? '.$printCode.'|date(\'Y-m-d H:i:s T\') : \'\'';
|
|
break;
|
|
case 'datetime_immutable':
|
|
case 'datetime':
|
|
$printCode .= ' ? '.$printCode.'|date(\'Y-m-d H:i:s\') : \'\'';
|
|
break;
|
|
case 'dateinterval':
|
|
$printCode .= ' ? '.$printCode.'.format(\'%y year(s), %m month(s), %d day(s)\') : \'\'';
|
|
break;
|
|
case 'date_immutable':
|
|
case 'date':
|
|
$printCode .= ' ? '.$printCode.'|date(\'Y-m-d\') : \'\'';
|
|
break;
|
|
case 'time_immutable':
|
|
case 'time':
|
|
$printCode .= ' ? '.$printCode.'|date(\'H:i:s\') : \'\'';
|
|
break;
|
|
case 'json':
|
|
$printCode .= ' ? '.$printCode.'|json_encode : \'\'';
|
|
break;
|
|
case 'array':
|
|
$printCode .= ' ? '.$printCode.'|join(\', \') : \'\'';
|
|
break;
|
|
case 'boolean':
|
|
$printCode .= ' ? \'Yes\' : \'No\'';
|
|
break;
|
|
}
|
|
|
|
return $printCode;
|
|
}
|
|
|
|
public function getHeadPrintCode($title): string
|
|
{
|
|
if ($this->fileManager->fileExists($this->fileManager->getPathForTemplate('base.html.twig'))) {
|
|
return <<<TWIG
|
|
{% extends 'base.html.twig' %}
|
|
|
|
{% block title %}$title{% endblock %}
|
|
|
|
TWIG;
|
|
}
|
|
|
|
return <<<HTML
|
|
<!DOCTYPE html>
|
|
|
|
<title>$title</title>
|
|
|
|
HTML;
|
|
}
|
|
|
|
public function getFileLink($path, $text = null, $line = 0): string
|
|
{
|
|
trigger_deprecation('symfony/maker-bundle', 'v1.53.0', 'getFileLink() is deprecated and will be removed in the future.');
|
|
|
|
$text = $text ?: $path;
|
|
|
|
return "<a href=\"{{ '$path'|file_link($line) }}\">$text</a>";
|
|
}
|
|
}
|