Alles hat wie geplant funktioniert, jedoch habe ich die Domain immer noch hardgecoded.
Mittlerweile weiss ich, dass die Domain in $GLOBALS['kernel'] steht - habe hier aber das selbe Problem, dass ich dies nicht ausgeben kann, und komme nicht weiter.
Habe diese Datei gefunden:
Code:
declare(strict_types=1);
namespace Terminal42\ShortlinkBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension;
class Terminal42ShortlinkExtension extends ConfigurableExtension
{
/**
* {@inheritdoc}
*/
public function loadInternal(array $config, ContainerBuilder $container)
{
$loader = new YamlFileLoader(
$container,
new FileLocator(__DIR__.'/../Resources/config')
);
$loader->load('services.yml');
$container->setParameter('terminal42_shortlink.host', $config['host']);
$container->setParameter('terminal42_shortlink.salt', $config['salt']);
$container->setParameter('terminal42_shortlink.log_ip', $config['log_ip']);
}
}
Kann man sich irgendwie $config oder $container in mein Modul holen? Das Übersteigt leider stark meine Fähigkeiten....
ich habe mal mit
Code:
$this->import('Terminal42\ShortlinkBundle\DependencyInjection\Terminal42ShortlinkExtension');
begonnen und bekomme so auch keine Fehlermeldung - jedoch weiss ich nicht wie ich weiter machen soll
EDIT: Diese Datei sieht noch vielversprechender aus:
Code:
declare(strict_types=1);
namespace Terminal42\ShortlinkBundle\EventListener\DataContainer;
use Contao\DataContainer;
use Hashids\Hashids;
use Symfony\Component\Routing\RequestContext;
use Terminal42\ShortlinkBundle\Entity\Shortlink;
use Terminal42\ShortlinkBundle\Repository\ShortlinkRepository;
class ShortlinkLabelListener
{
/**
* @var ShortlinkRepository
*/
private $repository;
/**
* @var Hashids
*/
private $hashids;
/**
* @var RequestContext
*/
private $requestContext;
/**
* @var string
*/
private $host;
public function __construct(ShortlinkRepository $repository, Hashids $hashids, RequestContext $requestContext, string $host)
{
$this->repository = $repository;
$this->hashids = $hashids;
$this->requestContext = $requestContext;
$this->host = $host;
}
public function onLabelCallback(array $row, string $label, DataContainer $dc, array $columns)
{
/** @var Shortlink $shortlink */
$shortlink = $this->repository->find($row['id']);
if (!$columns[0]) {
$columns[0] = $this->hashids->encode($row['id']);
}
$columns[0] = sprintf(
'<a href="%s" target="_blank">%s</a>',
($this->host ? '//'.$this->host : '').'/'.$columns[0],
($this->host ?: $this->requestContext->getHost()).'/'.$columns[0]
);
$columns[1] = sprintf(
'<a href="%s" target="_blank">%s</a>',
$columns[1],
$shortlink->getName() ?: $columns[1]
);
$columns[2] = $shortlink->countLog();
return $columns;
}
}