/ Gists / Nette filter helper latte
On gists

Nette filter helper latte

Nette Nette-Latte
Nette vlastní filter , helper, latte

config1.neon Raw #

services:
    nette.latteFactory:
        setup:
            - addFilter(abs, @petrjirasek\Latte\AbsFilter)

    - petrjirasek\Latte\AbsFilter

config4.neon Raw #

# https://www.janpecha.cz/blog/poznamky/nette-registrace-latte-filtru/

services:
        nette.latteFactory:
                setup:
                        - addFilter('nazevFiltru', ['Trida', 'statickaMetoda'])
                        - addFilter('nazevFiltru2', @Sluzba::metoda)

config3.neon Raw #

services:
    - petrjirasek\Latte\AbsFilter

filter.php Raw #

<?php

 protected function beforeRender()
    {
        $this->template->addFilter('abs', function ($number) {
            return abs($number);
        });
    }

config4.neon Raw #

# https://www.janpecha.cz/blog/poznamky/nette-registrace-latte-filtru/

services:
        nette.latteFactory:
                setup:
                        - addFilter('nazevFiltru', ['Trida', 'statickaMetoda'])
                        - addFilter('nazevFiltru2', @Sluzba::metoda)

config3.neon Raw #

services:
    - petrjirasek\Latte\AbsFilter

filter.php Raw #

<?php

 protected function beforeRender()
    {
        $this->template->addFilter('abs', function ($number) {
            return abs($number);
        });
    }

filter3.php Raw #

<?php
// se zavislostmi

use petrjirasek\Latte\AbsFilter;

/** @var AbsFilter @inject */
public $absFilter;

protected function beforeRender()
{
    $this->template->addFilter('abs', $this->absFilter);
}

filter2.php Raw #

<?php 

// jako cela trida, bez zavislosti

namespace petrjirasek\Latte;

use Nette\Object;


class AbsFilter extends Object
{

    /**
     * @param int $number
     * @return int
     */
    public function __invoke($number)
    {
        return abs($number);
    }
}




// PRESENTER

use petrjirasek\Latte\AbsFilter;

protected function beforeRender()
{
    $this->template->addFilter('abs', new AbsFilter);
}

filter3.php Raw #

<?php
// se zavislostmi

use petrjirasek\Latte\AbsFilter;

/** @var AbsFilter @inject */
public $absFilter;

protected function beforeRender()
{
    $this->template->addFilter('abs', $this->absFilter);
}

nette-2-4.php Raw #

<?php

/*
 autowiring

*/

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;
	}


}

nette-2-4.neon Raw #

	awLatteFilters:
		class: Andweb\Latte\Filters
		tags:
			- run

	SotioFilters:
		factory: App\FrontModule\Filters\SotioFilter

	latte.templateFactory:
		setup:
			- "$onCreate[]" = [@awLatteFilters, 'register']
			- "$onCreate[]" = [@SotioFilters, 'register']

filter.md Raw #

filter

class OnlyQuery
{
    public function format(string $url): string
    {
        return (new \Nette\Http\Url($url))->getQuery();
    }
}

config

services:
    latte.latteFactory:
        setup:
            - addFilter(onlyQuery, [@onlyQuery, format])

    onlyQuery: App\Filter\OnlyQuery

sablona

{link show!|onlyQuery}