The recommended way to is via Composer:
composer require surda/back-button
After that you have to register extension in config.neon:
extensions:
backButton: Surda\BackButton\BackButtonExtension
Default
backButton:
defaultPresenterLink: 'default'
templates:
default: bootstrap4.default.latte
secondary: bootstrap4.secondary.latte
List of all configuration options:
backButton:
defaultPresenterLink: 'default'
useAjax: false
template: path/to/your/latte/file.latte
# or
templates:
default: path/to/your/latte/file.latte
foo: path/to/your/latte/foo.latte
...
use Nette\Application\UI\Presenter;
use Surda\BackButton\InjectBackButton;
abstract class ProductPresenter extends Presenter
{
use InjectBackButton;
}
Source page (e.g. Product:default) add link to default.latte
<a n:href="detail $id, destination => $currentLink">Detail</a>
Destination page (Product:detail) add component to detail.latte
{control backButton}
Presenter
$this->template->destination = $this->link('detail', $id);
Latte
{control backButton destination:$destination}
Default template
{control backButton} or {control backButton default}
Set control template by type of template (see config.neon)
{control backButton templateType}
Reset persistent parameter $destination
in URL ...?destination=%2Fproduct
<a n:href="default, destination => NULL">Products</a>
or all (defined) persistent parameters
<a n:href="default, (expand) $resetPersistentParameters">Products</a>