Správný zápis deprected addStyle
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- David Matějka
- Moderator | 6445
ne, spravnou moznosti je nepouzivat staticke filtry, ale filtry u konkretnich rout: https://doc.nette.org/…tion/routing#…
- Keeehi
- Člen | 36
Ale to jde přeci proti DRY. Když potřebuji stejný filtr použít u více rout. Teda řešení mě napadlo, ale je to stejně příšerně ukecané.
Nyní mám
Route::$styles['#filter'] = [
Route::FILTER_OUT => null,
Route::PATTERN => ".*"
];
$router[] = new Route('xyz/<action>/<parameter #filter>', 'Abc:default');
$router[] = new Route('<presenter>/<action>/<parameter #filter>', 'Homepage:default');
A správně by tedy mělo být?
$filter = [
Route::FILTER_OUT => null,
Route::PATTERN => ".*"
]
$router[] = new Route('xyz/<action>/<parameter>', [
'presenter' => 'Abc',
'action' => 'default',
'parameter' => $filter]
);
$router[] = new Route('<presenter>/<action>/<parameter>', [
'presenter' => 'Homepage',
'action' => 'default',
'parameter' => $filter]
);
- David Matějka
- Moderator | 6445
ano, treba takhle to muzes zapsat, nebo si treba muzes napsat factory na ty routy
- greeny
- Člen | 405
Vždycky můžeš použít přístup jako tenhle:
class RouterFactory
{
public function createRouter()
{
$myFilter = new MyFilter; // (or use DI)
$router = new RouteList;
$router[] = new Route('<presenter>/<action>[/<id>]', [
'module' => 'Public',
'presenter' => 'Dashboard',
'action' => 'default',
NULL => [
Route::FILTER_IN => [$myFilter, 'in'],
Route::FILTER_OUT => [$myFilter, 'out'],
],
]);
$router[] = new Route('admin/<presenter>/<action>[/<id>]', [
'module' => 'Admin',
'presenter' => 'Dashboard',
'action' => 'default',
NULL => [
Route::FILTER_IN => [$myFilter, 'in'],
Route::FILTER_OUT => [$myFilter, 'out'],
],
]);
}
}
Custom logiku filtrů máš tak krásně oddělenou v třídě bokem a nezaneřádí ti RouterFactory.
- David Grudl
- Nette Core | 8218
Nestačí tohle?
$router[] = new Route('xyz/<action>/<parameter .*>', 'Abc:default');