/ Gists / Nette 2.4 - custom filters - class
On gists

Nette 2.4 - custom filters - class

Nette Nette-Latte

SotioFilters.php Raw #

<?php

namespace App\FrontModule\Filters;

use Nette;
use Andweb;

class SotioFilter
{

	/**
	 * Andweb\Localization\ITranslator
	 */
	private $translator;

	public function __construct(Andweb\Localization\ITranslator $translator)
	{
		$this->translator = $translator;
	}


	public function register($template)
    {
        $template->addFilter(null, [$this, 'loader']);
    }


	public function loader($filter)
	{
		if (method_exists(__CLASS__, $filter)) 
		{
            $args = func_get_args();
            array_shift($args);
            return call_user_func_array(array(__CLASS__, $filter), $args);
		}

		return NULL;
	}


	public function readMore($s)
	{
		$s = preg_replace('~(<div>--START--</div>)(.+)<div>--END--</div>~Usi', 
			'<div class="read-more-wrapper">$2</div><div class="read-more-btn-wrapper"><a href="">'.$this->translator->translate('READ MORE').'</a></div>',
			 $s
		);

		return $s;
	}


}

config.neon Raw #

	SotioFilters:
		factory: App\FrontModule\Filters\SotioFilter
		
	latte.templateFactory:
		setup:
			- "$onCreate[]" = [@SotioFilters, 'register']