diff --git a/application/bg/ajax.texy b/application/bg/ajax.texy index 3b98231de7..04cc36448d 100644 --- a/application/bg/ajax.texy +++ b/application/bg/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Първо трябва да [инициализирате |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] библиотеката: + +```js +naja.initialize(); +``` + За да превърнете обикновена връзка (сигнал) или подаване на форма в AJAX заявка, просто маркирайте съответната връзка, форма или бутон с класа `ajax`: ```html diff --git a/application/bg/bootstrap.texy b/application/bg/bootstrap.texy index c2cd01ec7e..2ac3dc2e99 100644 --- a/application/bg/bootstrap.texy +++ b/application/bg/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Конфигураторът отговаря за настройката на средата на приложението и услугите. + $this->configurator = new Configurator; + // Задайте директорията за временни файлове, генерирани от Nette (напр. компилирани шаблони) + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette е интелигентен и режимът за разработка се включва автоматично, + // или можете да го включите за определен IP адрес, като разкоментирате следния ред: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Активира Tracy: най-добрият инструмент за отстраняване на грешки "швейцарско ножче". + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: автоматично зарежда всички класове в дадената директория + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Зареждане на конфигурационни файлове + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -В случая на уеб приложения началният файл е `index.php`, който се намира в публичната директория `www/`. Той позволява на класа `Bootstrap` да инициализира средата и връща `$configurator`, който създава контейнера DI. След това тя извлича услугата `Application`, която стартира уеб приложението: +Началният файл за уеб приложенията е `index.php`, разположен в публичната директория `www/`. Той използва класа `Bootstrap` за инициализиране на средата и създаване на контейнер DI. След това получава услугата `Application` от контейнера, която стартира уеб приложението: ```php -// инициализиране на средата + получаване на обект Configurator -$configurator = App\Bootstrap::boot(); -// създаване на DI-контейнер -$container = $configurator->createContainer(); -// DI-контейнерът ще създаде обект Nette\Application\Application +$bootstrap = new App\Bootstrap; +// Иницииране на средата + създаване на контейнер DI +$container = $bootstrap->bootWebApplication(); +// Контейнерът DI създава обект Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -//стартиране на приложението Nette +// Стартирайте приложението Nette и обработете входящата заявка $application->run(); ``` @@ -66,19 +91,19 @@ Nette прави разграничение между два основни р Ако искате да активирате режима за разработка в други случаи, например за програмисти, които имат достъп от определен IP адрес, можете да използвате `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // един или повече IP адреси +$this->configurator->setDebugMode('23.75.345.200'); // един или повече IP адреси ``` Определено препоръчваме да комбинирате IP адреса с "бисквитка". Ще съхраним тайния токен в "бисквитката" `nette-debug', например, `secret1234`, а режимът за разработка ще бъде активиран за програмистите с тази комбинация от IP и "бисквитка". ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Можете да деактивирате напълно режима за разработчици, дори за localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Обърнете внимание, че стойността `true` активира плътно режима за разработчици, което никога не трябва да се случва на производствен сървър. @@ -90,7 +115,7 @@ $configurator->setDebugMode(false); За да улесним дебъгването, ще включим чудесния инструмент [Tracy |tracy:]. В режим за разработчици той визуализира грешките, а в производствен режим записва грешките в определена директория: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ $configurator->enableTracy($rootDir . '/log'); Nette използва кеш за DI-контейнер, RobotLoader, шаблони и др. Затова е необходимо да се зададе пътят до директорията, в която се съхранява кешът: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` В Linux или macOS задайте [разрешения за запис |nette:troubleshooting#Setting-Directory-Permissions] за директориите `log/` и `temp/`. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Обикновено искаме да заредим класовете автоматично с помощта на [RobotLoader |robot-loader:], така че трябва да го стартираме и да му позволим да зареди класовете от директорията, в която се намира `Bootstrap.php` (т.е. `__DIR__`) и всички негови поддиректории: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ $configurator->createRobotLoader() Конфигураторът ви позволява да зададете часовата зона за вашето приложение. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ $configurator->setTimeZone('Europe/Prague'); Файловете за конфигурация се зареждат с помощта на `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Методът `addConfig()` може да се извика няколко пъти, за да се добавят няколко файла. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ if (PHP_SAPI === 'cli') { Параметрите, използвани в конфигурационните файлове, могат да бъдат дефинирани [в раздела `parameters` |dependency-injection:configuration#parameters] и да бъдат взети (или презаписани) от метода `addStaticParameters()` (той има псевдоним `addParameters()`). Важно е, че различните стойности на параметрите водят до генериране на допълнителни DI-контейнери, т.е. допълнителни класове. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ $configurator->addStaticParameters([ Възможно е също така да се добавят динамични параметри към контейнер. Различните им стойности, за разлика от статичните параметри, не генерират нови контейнери DI. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Достъпът до променливите на средата е лесен с помощта на динамични параметри. Достъпът до тях се осъществява чрез `%env.variable%` в конфигурационните файлове. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Създайте нов екземпляр и го вмъкнете в Bootstrap: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Различни среди .[#toc-different-environments] ============================================= -Не се колебайте да персонализирате класа `Bootstrap` според нуждите си. Можете да добавите параметри към метода `boot()`, за да разделите уеб проектите, или да добавите други методи, като например `bootForTests()`, който инициализира средата за тестове на единици, `bootForCli()` за скриптове, извикани от командния ред, и т.н. +Не се колебайте да персонализирате класа `Bootstrap` според нуждите си. Можете да добавите параметри към метода `bootWebApplication()`, за да разграничите отделните уеб проекти. Като алтернатива можете да добавите и други методи, например `bootTestEnvironment()` за инициализиране на средата за unit тестове, `bootConsoleApplication()` за скриптове, извикани от командния ред, и т.н. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container +{ + Tester\Environment::setup(); // Инициализация на Nette Tester + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container { - $configurator = self::boot(); - Tester\Environment::setup(); // Инициализация Nette Tester - return $configurator; + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/bg/components.texy b/application/bg/components.texy index e5ccab94e7..ab5c216e1c 100644 --- a/application/bg/components.texy +++ b/application/bg/components.texy @@ -230,6 +230,28 @@ $this->redirect(/* ... */); // пренасочване ``` +Пренасочване след сигнал .[#toc-redirection-after-a-signal] +=========================================================== + +След обработката на сигнал от компонент често следва пренасочване. Тази ситуация е подобна на формулярите - след изпращане на формуляр също пренасочваме, за да предотвратим повторното изпращане на данни, когато страницата се опреснява в браузъра. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Тъй като компонентът е елемент за многократна употреба и обикновено не трябва да има пряка зависимост от конкретни презентатори, методите `redirect()` и `link()` автоматично интерпретират параметъра като сигнал за компонент: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Ако трябва да пренасочите към друг презентатор или действие, можете да го направите чрез презентатора: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Постоянни параметри .[#toc-persistent-parameters] ================================================= diff --git a/application/bg/presenters.texy b/application/bg/presenters.texy index e596b0f55a..bf2aeb04fc 100644 --- a/application/bg/presenters.texy +++ b/application/bg/presenters.texy @@ -60,7 +60,7 @@ class ArticlePresenter extends Nette\Application\UI\Presenter Важното е, че `action()` се извиква преди `render()`, така че в него можем евентуално да променим следващия жизнен цикъл, т.е. да променим шаблона за визуализиране и метода `render()`която ще бъде извикана с помощта на `setView('otherView')`. -Параметрите от заявката се предават на метода. Възможно и препоръчително е да се посочат типове за параметрите, например `actionShow(int $id, string $slug = null)` - ако параметърът `id` липсва или ако не е цяло число, презентаторът ще върне [грешка 404 |#Error-404-etc] и ще прекрати операцията. +Параметрите от заявката се предават на метода. Възможно и препоръчително е да се посочат типове за параметрите, например `actionShow(int $id, ?string $slug = null)` - ако параметърът `id` липсва или ако не е цяло число, презентаторът ще върне [грешка 404 |#Error-404-etc] и ще прекрати операцията. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ $this->redirect(/* ... */); Грешка 404 и т.н. .[#toc-error-404-etc] ======================================= -Когато не можем да изпълним дадена заявка, защото например статията, която искаме да покажем, не съществува в базата данни, ще хвърлим грешка 404, като използваме метода `error(string $message = null, int $httpCode = 404)`, който представлява HTTP грешка 404: +Когато не можем да изпълним дадена заявка, защото например статията, която искаме да покажем, не съществува в базата данни, ще хвърлим грешка 404, като използваме метода `error(?string $message = null, int $httpCode = 404)`, който представлява HTTP грешка 404: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ class ProductPresenter extends Nette\Application\UI\Presenter Можете също така да извикате канонизацията ръчно с метода `canonicalize()`, който, както и методът `link()`, приема като аргументи водещия, действията и параметрите. Тя създава връзка и я сравнява с текущия URL адрес. Ако те са различни, се пренасочва към генерираната връзка. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // пренасочва, ако $slug е различен от $realSlug diff --git a/application/cs/ajax.texy b/application/cs/ajax.texy index 407622ab95..327977ea19 100644 --- a/application/cs/ajax.texy +++ b/application/cs/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Nejprve je potřeba knihovnu [inicializovat |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization]: + +```js +naja.initialize(); +``` + Aby se z obyčejného odkazu (signálu) nebo odeslání formuláře vytvořil AJAXový požadavek, stačí označit příslušný odkaz, formulář nebo tlačítko třídou `ajax`: ```html diff --git a/application/cs/bootstrap.texy b/application/cs/bootstrap.texy index 7ed9569e3c..6357fe0d4d 100644 --- a/application/cs/bootstrap.texy +++ b/application/cs/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Konfigurátor je zodpovědný za nastavení prostředí aplikace a služeb. + $this->configurator = new Configurator; + // Nastaví adresář pro dočasné soubory generované Nette (např. zkompilované šablony) + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette je chytré a vývojový režim se zapíná automaticky, + // nebo jej můžete povolit pro konkrétní IP adresu odkomentováním následujícího řádku: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Aktivuje Tracy: ultimátní "švýcarský nůž" pro ladění. + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: automaticky načítá všechny třídy ve zvoleném adresáři + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Načte konfigurační soubory + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php ========= -Prvotní soubor je v případě webových aplikací `index.php`, který se nachází ve veřejném adresáři `www/`. Ten si nechá od třídy Bootstrap inicializovat prostředí a vrátit `$configurator` a následně vyrobí DI kontejner. Poté z něj získá službu `Application`, kterou spustí webovou aplikaci: +Prvotní soubor je v případě webových aplikací `index.php`, který se nachází ve veřejném adresáři `www/`. Ten si nechá od třídy Bootstrap inicializovat prostředí a vyrobit DI kontejner. Poté z něj získá službu `Application`, která spustí webovou aplikaci: ```php -// inicializace prostředí + získání objektu Configurator -$configurator = App\Bootstrap::boot(); -// vytvoření DI kontejneru -$container = $configurator->createContainer(); +$bootstrap = new App\Bootstrap; +// Inicializace prostředí + vytvoření DI kontejneru +$container = $bootstrap->bootWebApplication(); // DI kontejner vytvoří objekt Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -// spuštění Nette aplikace +// Spuštění aplikace Nette a zpracování příchozího požadavku $application->run(); ``` @@ -66,19 +91,19 @@ Volba režimu se provádí autodetekcí, takže obvykle není potřeba nic konfi Pokud chceme vývojářský režim povolit i v dalších případech, například programátorům přistupujícím z konkrétní IP adresy, použijeme `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // lze uvést i pole IP adres +$this->configurator->setDebugMode('23.75.345.200'); // lze uvést i pole IP adres ``` Rozhodně doporučujeme kombinovat IP adresu s cookie. Do cookie `nette-debug` uložíme tajný token, např. `secret1234`, a tímto způsobem aktivujeme vývojářský režim pro programátory přistupující z konkrétní IP adresy a zároveň mající v cookie zmíněný token: ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Vývojářský režim můžeme také vypnout úplně, i pro localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Pozor, hodnota `true` zapne vývojářský režim natvrdo, což se nikdy nesmí stát na produkčním serveru. @@ -90,7 +115,7 @@ Debugovací nástroj Tracy Pro snadné debugování ještě zapneme skvělý nástroj [Tracy |tracy:]. Ve vývojářském režimu chyby vizualizuje a v produkčním režimu chyby loguje do uvedeného adresáře: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Dočasné soubory Nette využívá cache pro DI kontejner, RobotLoader, šablony atd. Proto je nutné nastavit cestu k adresáři, kam se bude cache ukládat: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` Na Linuxu nebo macOS nastavte adresářům `log/` a `temp/` [práva pro zápis |nette:troubleshooting#Nastavení práv adresářů]. @@ -112,7 +137,7 @@ RobotLoader Zpravidla budeme chtít automaticky načítat třídy pomocí [RobotLoaderu |robot-loader:], musíme ho tedy nastartovat a necháme jej načítat třídy z adresáře, kde je umístěný `Bootstrap.php` (tj. `__DIR__`), a všech podadresářů: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Timezone Přes konfigurátor můžete nastavit výchozí časovou zónu. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ Ve vývojářském režimu se kontejner automaticky aktualizuje při každé zm Konfigurační soubory načteme pomocí `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Pokud chceme přidat více konfiguračních souborů, můžeme funkci `addConfig()` zavolat vícekrát. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Statické parametry Parametry používané v konfiguračních souborech můžeme definovat [v sekci `parameters`|dependency-injection:configuration#parametry] a také je předávat (či přepisovat) metodou `addStaticParameters()` (má alias `addParameters()`). Důležité je, že různé hodnoty parametrů způsobí vygenerování dalších DI kontejnerů, tedy dalších tříd. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Dynamické parametry Do kontejneru můžeme přidat i dynamické parametry, jejichž různé hodnoty na rozdíl od statických parameterů nezpůsobí generování nových DI kontejnerů. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Jednoduše tak můžeme přidat např. environmentální proměnné, na které se pak lze v konfiguraci odkázat zápisem `%env.variable%`. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: A v bootstrapu do kontejneru vložíme objekt: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Odlišné prostředí ================= -Nebojte se upravit třídu Bootstrap podle svých potřeb. Metodě `boot()` můžete přidat parametry pro rozlišení webových projektů nebo doplnit další metody, například `bootForTests()`, která inicializuje prostředí pro jednotkové testy, `bootForCli()` pro skripty volané z příkazové řádky atd. +Nebojte se upravit třídu Bootstrap podle svých potřeb. Metodě `bootWebApplication()` můžete přidat parametry pro rozlišení webových projektů. Nebo můžeme doplnit další metody, například `bootTestEnvironment()`, která inicializuje prostředí pro jednotkové testy, `bootConsoleApplication()` pro skripty volané z příkazové řádky atd. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container { - $configurator = self::boot(); Tester\Environment::setup(); // inicializace Nette Testeru - return $configurator; + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container +{ + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/cs/components.texy b/application/cs/components.texy index d60ee2b7fd..db86af248c 100644 --- a/application/cs/components.texy +++ b/application/cs/components.texy @@ -198,7 +198,7 @@ Odkaz, který zavolá signál, vytvoříme obvyklým způsobem, tedy v šabloně click here ``` -Signál se vždy volá na aktuálním presenteru a view, tudíž není možné jej vyvolat na jiném presenteru nebo view. +Signál se vždy volá na aktuálním presenteru a action, není možné jej vyvolat na jiném presenteru nebo jiné action. Signál tedy způsobí znovunačtení stránky úplně stejně jako při původním požadavku, jen navíc zavolá obslužnou metodu signálu s příslušnými parametry. Pokud metoda neexistuje, vyhodí se výjimka [api:Nette\Application\UI\BadSignalException], která se uživateli zobrazí jako chybová stránka 403 Forbidden. @@ -230,6 +230,28 @@ $this->redirect(/* ... */); // a přesměrujeme ``` +Přesměrování po signálu +======================= + +Po zpracování signálu komponenty často následuje přesměrování. Je to podobná situace jako u formulářů - po jejich odeslání také přesměrováváme, aby při obnovení stránky v prohlížeči nedošlo k opětovnému odeslání dat. + +```php +$this->redirect('this') // přesměruje na aktuální presenter a action +``` + +Protože komponenta je znovupoužitelný prvek a obvykle by neměla mít přímou vazbu na konkrétní presentery, metody `redirect()` a `link()` automaticky interpretují parametr jako signál komponenty: + +```php +$this->redirect('click') // přesměruje na signál 'click' téže komponenty +``` + +Pokud potřebujete přesměrovat na jiný presenter či akci, můžete to udělat prostřednictvím presenteru: + +```php +$this->getPresenter()->redirect('Product:show'); // přesměruje na jiný presenter/action +``` + + Persistentní parametry ====================== @@ -430,7 +452,7 @@ class PaginatingControl extends Control } ``` -Opačný proces, tedy sesbírání hodnot z persistentních properites, má na starosti metoda `saveState()`. +Opačný proces, tedy sesbírání hodnot z persistentních properties, má na starosti metoda `saveState()`. Signály do hloubky @@ -444,7 +466,7 @@ Signál může přijímat jakákoliv komponenta, presenter nebo objekt, který i Mezi hlavní příjemce signálů budou patřit `Presentery` a vizuální komponenty dědící od `Control`. Signál má sloužit jako znamení pro objekt, že má něco udělat – anketa si má započítat hlas od uživatele, blok s novinkami se má rozbalit a zobrazit dvakrát tolik novinek, formulář byl odeslán a má zpracovat data a podobně. -URL pro signál vytváříme pomocí metody [Component::link() |api:Nette\Application\UI\Component::link()]. Jako parametr `$destination` předáme řetězec `{signal}!` a jako `$args` pole argumentů, které chceme signálu předat. Signál se vždy volá na aktuální view s aktuálními parametry, parametry signálu se jen přidají. Navíc se přidává hned na začátku **parametr `?do`, který určuje signál**. +URL pro signál vytváříme pomocí metody [Component::link() |api:Nette\Application\UI\Component::link()]. Jako parametr `$destination` předáme řetězec `{signal}!` a jako `$args` pole argumentů, které chceme signálu předat. Signál se vždy volá na aktuálním presenteru a action s aktuálními parametry, parametry signálu se jen přidají. Navíc se přidává hned na začátku **parametr `?do`, který určuje signál**. Jeho formát je buď `{signal}`, nebo `{signalReceiver}-{signal}`. `{signalReceiver}` je název komponenty v presenteru. Proto nemůže být v názvu komponenty pomlčka – používá se k oddělení názvu komponenty a signálu, je ovšem možné takto zanořit několik komponent. diff --git a/application/cs/presenters.texy b/application/cs/presenters.texy index cb8a415b75..c6b207b0f1 100644 --- a/application/cs/presenters.texy +++ b/application/cs/presenters.texy @@ -60,7 +60,7 @@ Obdoba metody `render()`. Zatímco `render()` je určená k tomu, ab Důležité je, že `action()` se volá dříve než `render()`, takže v ní můžeme případně změnit další běh dějin, tj. změnit šablonu, která se bude kreslit, a také metodu `render()`, která se bude volat. A to pomocí `setView('jineView')`. -Metodě se předávají parametry z požadavku. Je možné a doporučené uvést parametrům typy, např. `actionShow(int $id, string $slug = null)` - pokud bude parametr `id` chybět nebo pokud nebude integer, presenter vrátí [chybu 404|#Chyba 404 a spol.] a ukončí činnost. +Metodě se předávají parametry z požadavku. Je možné a doporučené uvést parametrům typy, např. `actionShow(int $id, ?string $slug = null)` - pokud bude parametr `id` chybět nebo pokud nebude integer, presenter vrátí [chybu 404|#Chyba 404 a spol.] a ukončí činnost. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ $this->redirect(/* ... */); // a přesměrujeme Chyba 404 a spol. ================= -Pokud nelze splnit požadavek, třeba z důvodu, že článek který chceme zobrazit neexistuje v databázi, vyhodíme chybu 404 metodou `error(string $message = null, int $httpCode = 404)`. +Pokud nelze splnit požadavek, třeba z důvodu, že článek který chceme zobrazit neexistuje v databázi, vyhodíme chybu 404 metodou `error(?string $message = null, int $httpCode = 404)`. ```php public function renderShow(int $id): void @@ -225,7 +225,7 @@ Nastavení error-preseteru se provádí v [konfiguraci application|configuration Odeslání JSON ============= -Příklad action-metody, která odešle data ve formátu JSON a ukončí presenter: +Metoda sendJson($data) převede $data do formátu JSON, ten odešle jako http odpověď a ukončí běh presenteru. ```php public function actionData(): void @@ -384,7 +384,7 @@ K přesměrování nedojde při AJAXovém nebo POST požadavku, protože by doš Kanonizaci můžete vyvolat i manuálně pomocí metody `canonicalize()`, které se podobně jako metodě `link()` předá presenter, akce a parametry. Vyrobí odkaz a porovná ho s aktuální URL adresou. Pokud se liší, tak přesměruje na vygenerovaný odkaz. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // přesměruje, pokud $slug se liší od $realSlug diff --git a/application/de/ajax.texy b/application/de/ajax.texy index 9b97c2db0e..fe36f40a83 100644 --- a/application/de/ajax.texy +++ b/application/de/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Zunächst müssen Sie die Bibliothek [initialisieren |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization]: + +```js +naja.initialize(); +``` + Um einen gewöhnlichen Link (Signal) oder eine Formularübermittlung zu einer AJAX-Anfrage zu machen, markieren Sie einfach den entsprechenden Link, das Formular oder die Schaltfläche mit der Klasse `ajax`: ```html diff --git a/application/de/bootstrap.texy b/application/de/bootstrap.texy index 6b1fa8f7e6..6c441bfcf9 100644 --- a/application/de/bootstrap.texy +++ b/application/de/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Der Konfigurator ist für das Einrichten der Anwendungsumgebung und der Dienste zuständig. + $this->configurator = new Configurator; + // Legen Sie das Verzeichnis für temporäre Dateien fest, die von Nette erzeugt werden (z. B. kompilierte Vorlagen) + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette ist intelligent, und der Entwicklungsmodus wird automatisch aktiviert, + // oder Sie können ihn für eine bestimmte IP-Adresse aktivieren, indem Sie die folgende Zeile auskommentieren: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Aktiviert Tracy: das ultimative "Schweizer Taschenmesser" zur Fehlersuche. + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: Lädt automatisch alle Klassen im angegebenen Verzeichnis + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Konfigurationsdateien laden + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -Im Falle von Webanwendungen ist die Ausgangsdatei `index.php`, die sich im öffentlichen Verzeichnis `www/` befindet. Sie überlässt es der Klasse `Bootstrap`, die Umgebung zu initialisieren und den `$configurator` zurückzugeben, der den DI-Container erstellt. Dann wird der Dienst `Application` aufgerufen, der die Webanwendung ausführt: +Die Ausgangsdatei für Webanwendungen ist `index.php`, die sich im öffentlichen Verzeichnis `www/` befindet. Sie verwendet die Klasse `Bootstrap`, um die Umgebung zu initialisieren und einen DI-Container zu erstellen. Anschließend wird der Dienst `Application` aus dem Container abgerufen, der die Webanwendung startet: ```php -// Initialisieren der Umgebung + Abrufen des Configurator-Objekts -$configurator = App\Bootstrap::boot(); -// Erstellen eines DI-Containers -$container = $configurator->createContainer(); -// DI-Container erstellt ein Nette\Application\Application-Objekt +$bootstrap = new App\Bootstrap; +// Initialisierung der Umgebung + Erstellung eines DI-Containers +$container = $bootstrap->bootWebApplication(); +// DI-Container erstellt ein Nette\Anwendung\Anwendungsobjekt $application = $container->getByType(Nette\Application\Application::class); -// Nette-Anwendung starten +// Starten Sie die Nette-Anwendung und bearbeiten Sie die eingehende Anfrage $application->run(); ``` @@ -66,19 +91,19 @@ Die Auswahl des Modus erfolgt durch automatische Erkennung, so dass in der Regel Wenn Sie den Entwicklungsmodus in anderen Fällen aktivieren möchten, z. B. für Programmierer, die von einer bestimmten IP-Adresse aus zugreifen, können Sie `setDebugMode()` verwenden: ```php -$configurator->setDebugMode('23.75.345.200'); // eine oder mehrere IP-Adressen +$this->configurator->setDebugMode('23.75.345.200'); // eine oder mehrere IP-Adressen ``` Wir empfehlen auf jeden Fall, eine IP-Adresse mit einem Cookie zu kombinieren. Wir speichern ein geheimes Token im `nette-debug` Cookie, z.B. `secret1234`, und der Entwicklungsmodus wird für Programmierer mit dieser Kombination von IP und Cookie aktiviert. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Wir können den Entwicklermodus auch komplett abschalten, sogar für localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Beachten Sie, dass der Wert `true` den Entwicklermodus standardmäßig einschaltet, was auf einem Produktionsserver niemals passieren sollte. @@ -90,7 +115,7 @@ Debugging-Werkzeug Tracy .[#toc-debugging-tool-tracy] Zur einfachen Fehlersuche werden wir das großartige Tool [Tracy |tracy:] einschalten. Im Entwicklermodus zeigt es Fehler an und im Produktionsmodus protokolliert es Fehler in das angegebene Verzeichnis: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Temporäre Dateien .[#toc-temporary-files] Nette verwendet den Cache für DI-Container, RobotLoader, Vorlagen usw. Daher ist es notwendig, den Pfad zu dem Verzeichnis festzulegen, in dem der Cache gespeichert werden soll: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` Unter Linux oder macOS setzen Sie die [Schreibrechte |nette:troubleshooting#Setting directory permissions] für die Verzeichnisse `log/` und `temp/`. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Normalerweise wollen wir die Klassen automatisch mit [RobotLoader |robot-loader:] laden, also müssen wir ihn starten und ihn Klassen aus dem Verzeichnis laden lassen, in dem sich `Bootstrap.php` befindet (d.h. `__DIR__`) und aus allen seinen Unterverzeichnissen: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Zeitzone .[#toc-timezone] Configurator ermöglicht es Ihnen, eine Zeitzone für Ihre Anwendung festzulegen. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ Im Entwicklungsmodus wird der Container jedes Mal automatisch aktualisiert, wenn Konfigurationsdateien werden mit `addConfig()` geladen: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Die Methode `addConfig()` kann mehrfach aufgerufen werden, um mehrere Dateien hinzuzufügen. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Statische Parameter .[#toc-static-parameters] Parameter, die in Konfigurationsdateien verwendet werden, können [im Abschnitt `parameters` |dependency-injection:configuration#parameters] definiert und auch von der Methode `addStaticParameters()` übergeben (oder überschrieben) werden (sie hat den Alias `addParameters()`). Wichtig ist, dass unterschiedliche Parameterwerte die Erzeugung zusätzlicher DI-Container, d.h. zusätzlicher Klassen, bewirken. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Dynamische Parameter .[#toc-dynamic-parameters] Wir können dem Container auch dynamische Parameter hinzufügen, deren unterschiedliche Werte, im Gegensatz zu statischen Parametern, nicht die Erzeugung neuer DI-Container verursachen. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Umgebungsvariablen können mit dynamischen Parametern leicht verfügbar gemacht werden. Wir können über `%env.variable%` in Konfigurationsdateien auf sie zugreifen. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Erstellen Sie eine neue Instanz und fügen Sie sie in Bootstrap ein: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Verschiedene Umgebungen .[#toc-different-environments] ====================================================== -Es steht Ihnen frei, die Klasse `Bootstrap` an Ihre Bedürfnisse anzupassen. Sie können der Methode `boot()` Parameter hinzufügen, um Webprojekte zu unterscheiden, oder andere Methoden hinzufügen, wie `bootForTests()`, die die Umgebung für Unit-Tests initialisiert, `bootForCli()` für Skripte, die von der Befehlszeile aus aufgerufen werden, und so weiter. +Zögern Sie nicht, die Klasse `Bootstrap` nach Ihren Bedürfnissen anzupassen. Sie können der Methode `bootWebApplication()` Parameter hinzufügen, um zwischen Webprojekten zu unterscheiden. Alternativ können Sie auch andere Methoden hinzufügen, z. B. `bootTestEnvironment()`, um die Umgebung für Unit-Tests zu initialisieren, `bootConsoleApplication()` für Skripte, die von der Befehlszeile aus aufgerufen werden, und so weiter. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container +{ + Tester\Environment::setup(); // Initialisierung des Nette-Testers + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container { - $configurator = self::boot(); - Tester\Environment::setup(); // Nette Tester Initialisierung - return $configurator; + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/de/components.texy b/application/de/components.texy index a335f73618..d47cc5bd78 100644 --- a/application/de/components.texy +++ b/application/de/components.texy @@ -230,6 +230,28 @@ In der Vorlage stehen diese Meldungen in der Variablen `$flashes` als Objekte `s ``` +Umleitung nach einem Signal .[#toc-redirection-after-a-signal] +============================================================== + +Nach der Verarbeitung eines Komponentensignals folgt oft eine Umleitung. Diese Situation ist ähnlich wie bei Formularen - nach dem Absenden eines Formulars leiten wir ebenfalls um, um eine erneute Übermittlung von Daten zu verhindern, wenn die Seite im Browser aktualisiert wird. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Da eine Komponente ein wiederverwendbares Element ist und in der Regel keine direkte Abhängigkeit von bestimmten Presentern haben sollte, interpretieren die Methoden `redirect()` und `link()` den Parameter automatisch als Komponentensignal: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Wenn Sie zu einem anderen Präsentator oder einer Aktion umleiten müssen, können Sie dies über den Präsentator tun: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Dauerhafte Parameter .[#toc-persistent-parameters] ================================================== diff --git a/application/de/presenters.texy b/application/de/presenters.texy index 026ebee737..8622224006 100644 --- a/application/de/presenters.texy +++ b/application/de/presenters.texy @@ -60,7 +60,7 @@ Unmittelbar nach Erhalt der Anfrage wird die Methode `startup ()` aufgerufen. Si Es ist wichtig, dass `action()` vor aufgerufen wird `render()`aufgerufen wird, damit wir darin möglicherweise den weiteren Verlauf des Lebenszyklus ändern können, d. h. die Vorlage, die gerendert wird, und auch die Methode `render()` die aufgerufen wird, mit `setView('otherView')`. -Die Parameter der Anfrage werden an die Methode übergeben. Es ist möglich und empfehlenswert, Typen für die Parameter anzugeben, z. B. `actionShow(int $id, string $slug = null)` - wenn der Parameter `id` fehlt oder keine ganze Zahl ist, gibt der Präsentator den [Fehler 404 |#Error 404 etc.] zurück und bricht die Operation ab. +Die Parameter der Anfrage werden an die Methode übergeben. Es ist möglich und empfehlenswert, Typen für die Parameter anzugeben, z. B. `actionShow(int $id, ?string $slug = null)` - wenn der Parameter `id` fehlt oder keine ganze Zahl ist, gibt der Präsentator den [Fehler 404 |#Error 404 etc.] zurück und bricht die Operation ab. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ In der Vorlage sind diese Meldungen in der Variablen `$flashes` als Objekte `std Fehler 404 usw. .[#toc-error-404-etc] ===================================== -Wenn wir die Anfrage nicht erfüllen können, weil z.B. der Artikel, den wir anzeigen wollen, nicht in der Datenbank existiert, werden wir den Fehler 404 mit der Methode `error(string $message = null, int $httpCode = 404)` ausgeben, die den HTTP-Fehler 404 darstellt: +Wenn wir die Anfrage nicht erfüllen können, weil z.B. der Artikel, den wir anzeigen wollen, nicht in der Datenbank existiert, werden wir den Fehler 404 mit der Methode `error(?string $message = null, int $httpCode = 404)` ausgeben, die den HTTP-Fehler 404 darstellt: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ Eine Umleitung findet bei einer AJAX- oder POST-Anfrage nicht statt, da dies zu Sie können die Kanonisierung auch manuell mit der Methode `canonicalize()` aufrufen, die wie die Methode `link()` den Präsentator, Aktionen und Parameter als Argumente erhält. Sie erstellt einen Link und vergleicht ihn mit der aktuellen URL. Wenn sie sich unterscheidet, wird sie auf den erzeugten Link umgeleitet. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // leitet um, wenn $slug nicht mit $realSlug übereinstimmt diff --git a/application/el/ajax.texy b/application/el/ajax.texy index de4975d290..ab0e2f48f5 100644 --- a/application/el/ajax.texy +++ b/application/el/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Πρώτα πρέπει να [αρχικοποιήσετε |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] τη βιβλιοθήκη: + +```js +naja.initialize(); +``` + Για να μετατρέψετε έναν συνηθισμένο σύνδεσμο (σήμα) ή την υποβολή φόρμας σε αίτηση AJAX, απλά σημειώστε τον αντίστοιχο σύνδεσμο, φόρμα ή κουμπί με την κλάση `ajax`: ```html diff --git a/application/el/bootstrap.texy b/application/el/bootstrap.texy index 91cc3f41db..f71018bac5 100644 --- a/application/el/bootstrap.texy +++ b/application/el/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Ο διαμορφωτής είναι υπεύθυνος για τη ρύθμιση του περιβάλλοντος και των υπηρεσιών της εφαρμογής. + $this->configurator = new Configurator; + // Ορίστε τον κατάλογο για τα προσωρινά αρχεία που παράγονται από τη Nette (π.χ. μεταγλωττισμένα πρότυπα) + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Η Nette είναι έξυπνη και η λειτουργία ανάπτυξης ενεργοποιείται αυτόματα, + // ή μπορείτε να την ενεργοποιήσετε για μια συγκεκριμένη διεύθυνση IP ξεσχολιάζοντας την ακόλουθη γραμμή: + // $this->configurator->setDebugMode('secret@23.75.345.200'), + + // Ενεργοποιεί το Tracy: το απόλυτο εργαλείο αποσφαλμάτωσης "ελβετικό μαχαίρι του στρατού". + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: αυτόματη φόρτωση όλων των κλάσεων στον δεδομένο κατάλογο + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Φόρτωση αρχείων διαμόρφωσης + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -Στην περίπτωση των διαδικτυακών εφαρμογών, το αρχικό αρχείο είναι το `index.php`, το οποίο βρίσκεται στον δημόσιο κατάλογο `www/`. Επιτρέπει στην κλάση `Bootstrap` να αρχικοποιήσει το περιβάλλον και να επιστρέψει το `$configurator` που δημιουργεί το DI container. Στη συνέχεια αποκτά την υπηρεσία `Application`, η οποία εκτελεί την εφαρμογή ιστού: +Το αρχικό αρχείο για τις διαδικτυακές εφαρμογές είναι το `index.php`, το οποίο βρίσκεται στον δημόσιο κατάλογο `www/`. Χρησιμοποιεί την κλάση `Bootstrap` για την αρχικοποίηση του περιβάλλοντος και τη δημιουργία ενός δοχείου DI. Στη συνέχεια, λαμβάνει την υπηρεσία `Application` από το δοχείο, η οποία εκκινεί την εφαρμογή ιστού: ```php -// αρχικοποίηση του περιβάλλοντος + λήψη του αντικειμένου Configurator -$configurator = App\Bootstrap::boot(); -// Δημιουργία ενός δοχείου DI -$container = $configurator->createContainer(); +$bootstrap = new App\Bootstrap; +// Αρχικοποίηση του περιβάλλοντος + δημιουργία ενός δοχείου DI +$container = $bootstrap->bootWebApplication(); // Το δοχείο DI δημιουργεί ένα αντικείμενο Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -// έναρξη της εφαρμογής Nette +// Εκκίνηση της εφαρμογής Nette και χειρισμός της εισερχόμενης αίτησης $application->run(); ``` @@ -66,19 +91,19 @@ $application->run(); Αν θέλετε να ενεργοποιήσετε τη λειτουργία ανάπτυξης σε άλλες περιπτώσεις, για παράδειγμα, για προγραμματιστές που έχουν πρόσβαση από μια συγκεκριμένη διεύθυνση IP, μπορείτε να χρησιμοποιήσετε τη διεύθυνση `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // μία ή περισσότερες διευθύνσεις IP +$this->configurator->setDebugMode('23.75.345.200'); // μία ή περισσότερες διευθύνσεις IP ``` Συνιστούμε οπωσδήποτε τον συνδυασμό μιας διεύθυνσης IP με ένα cookie. Θα αποθηκεύσουμε ένα μυστικό token στο cookie `nette-debug`, π.χ. `secret1234`, και η λειτουργία ανάπτυξης θα ενεργοποιηθεί για τους προγραμματιστές με αυτόν τον συνδυασμό IP και cookie. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Μπορούμε επίσης να απενεργοποιήσουμε εντελώς τη λειτουργία προγραμματιστή, ακόμη και για το localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Σημειώστε ότι η τιμή `true` ενεργοποιεί τη λειτουργία προγραμματιστή με σκληρό τρόπο, κάτι που δεν πρέπει ποτέ να συμβαίνει σε έναν διακομιστή παραγωγής. @@ -90,7 +115,7 @@ $configurator->setDebugMode(false); Για εύκολη αποσφαλμάτωση, θα ενεργοποιήσουμε το σπουδαίο εργαλείο [Tracy |tracy:]. Στη λειτουργία προγραμματιστή απεικονίζει τα σφάλματα και στη λειτουργία παραγωγής καταγράφει τα σφάλματα στον καθορισμένο κατάλογο: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ $configurator->enableTracy($rootDir . '/log'); Η Nette χρησιμοποιεί την κρυφή μνήμη για το DI container, το RobotLoader, τα πρότυπα κ.λπ. Ως εκ τούτου, είναι απαραίτητο να ορίσετε τη διαδρομή προς τον κατάλογο όπου θα αποθηκεύεται η προσωρινή μνήμη: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` Σε Linux ή macOS, ορίστε τα [δικαιώματα εγγραφής |nette:troubleshooting#Setting directory permissions] για τους καταλόγους `log/` και `temp/`. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Συνήθως, θα θέλουμε να φορτώνουμε αυτόματα τις κλάσεις χρησιμοποιώντας [τον RobotLoader |robot-loader:], οπότε πρέπει να τον εκκινήσουμε και να τον αφήσουμε να φορτώσει κλάσεις από τον κατάλογο όπου βρίσκεται το `Bootstrap.php` (δηλαδή το `__DIR__`) και όλους τους υποκαταλόγους του: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ $configurator->createRobotLoader() Το Configurator σας επιτρέπει να καθορίσετε μια ζώνη ώρας για την εφαρμογή σας. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ $configurator->setTimeZone('Europe/Prague'); Τα αρχεία διαμόρφωσης φορτώνονται με τη χρήση του `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Η μέθοδος `addConfig()` μπορεί να κληθεί πολλές φορές για την προσθήκη πολλών αρχείων. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ if (PHP_SAPI === 'cli') { Οι παράμετροι που χρησιμοποιούνται σε αρχεία ρυθμίσεων μπορούν να οριστούν [στην ενότητα `parameters` |dependency-injection:configuration#parameters] και επίσης να μεταβιβαστούν (ή να αντικατασταθούν) από τη μέθοδο `addStaticParameters()` (έχει το ψευδώνυμο `addParameters()`). Είναι σημαντικό ότι διαφορετικές τιμές παραμέτρων προκαλούν τη δημιουργία πρόσθετων δοχείων DI, δηλαδή πρόσθετων κλάσεων. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ $configurator->addStaticParameters([ Μπορούμε επίσης να προσθέσουμε δυναμικές παραμέτρους στο δοχείο, οι διαφορετικές τιμές τους, σε αντίθεση με τις στατικές παραμέτρους, δεν θα προκαλέσουν τη δημιουργία νέων δοχείων DI. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Οι μεταβλητές περιβάλλοντος θα μπορούσαν εύκολα να γίνουν διαθέσιμες με τη χρήση δυναμικών παραμέτρων. Μπορούμε να έχουμε πρόσβαση σε αυτές μέσω της διεύθυνσης `%env.variable%` στα αρχεία ρυθμίσεων. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Δημιουργούμε μια νέα περίπτωση και την εισάγουμε στο bootstrap: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Διαφορετικά περιβάλλοντα .[#toc-different-environments] ======================================================= -Μπορείτε να προσαρμόσετε την τάξη `Bootstrap` ανάλογα με τις ανάγκες σας. Μπορείτε να προσθέσετε παραμέτρους στη μέθοδο `boot()` για να διαφοροποιήσετε τα έργα ιστού ή να προσθέσετε άλλες μεθόδους, όπως η `bootForTests()`, η οποία αρχικοποιεί το περιβάλλον για δοκιμές μονάδας, η `bootForCli()` για σενάρια που καλούνται από τη γραμμή εντολών κ.ο.κ. +Μη διστάσετε να προσαρμόσετε την τάξη `Bootstrap` σύμφωνα με τις ανάγκες σας. Μπορείτε να προσθέσετε παραμέτρους στη μέθοδο `bootWebApplication()` για να διαφοροποιήσετε τα διάφορα web projects. Εναλλακτικά, μπορείτε να προσθέσετε άλλες μεθόδους, όπως `bootTestEnvironment()` για την αρχικοποίηση του περιβάλλοντος για δοκιμές μονάδας, `bootConsoleApplication()` για σενάρια που καλούνται από τη γραμμή εντολών κ.ο.κ. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container { - $configurator = self::boot(); Tester\Environment::setup(); // Αρχικοποίηση Nette Tester - return $configurator; + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container +{ + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/el/components.texy b/application/el/components.texy index ed46dc4e74..06fafcf4d4 100644 --- a/application/el/components.texy +++ b/application/el/components.texy @@ -230,6 +230,28 @@ $this->redirect(/* ... */); // και ανακατεύθυνση ``` +Επανακατεύθυνση μετά από ένα σήμα .[#toc-redirection-after-a-signal] +==================================================================== + +Μετά την επεξεργασία ενός σήματος συνιστωσών, ακολουθεί συχνά ανακατεύθυνση. Αυτή η κατάσταση είναι παρόμοια με τις φόρμες - μετά την υποβολή μιας φόρμας, κάνουμε επίσης ανακατεύθυνση για να αποτρέψουμε την εκ νέου υποβολή δεδομένων όταν η σελίδα ανανεώνεται στο πρόγραμμα περιήγησης. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Δεδομένου ότι ένα συστατικό είναι ένα επαναχρησιμοποιήσιμο στοιχείο και συνήθως δεν πρέπει να έχει άμεση εξάρτηση από συγκεκριμένους παρουσιαστές, οι μέθοδοι `redirect()` και `link()` ερμηνεύουν αυτόματα την παράμετρο ως σήμα συστατικού: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Εάν χρειάζεται να ανακατευθύνετε σε διαφορετικό παρουσιαστή ή ενέργεια, μπορείτε να το κάνετε μέσω του παρουσιαστή: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Μόνιμες παράμετροι .[#toc-persistent-parameters] ================================================ @@ -430,7 +452,7 @@ class PaginatingControl extends Control } ``` -Η αντίθετη διαδικασία, δηλαδή η συλλογή τιμών από persistent properites, αντιμετωπίζεται από τη μέθοδο `saveState()`. +Η αντίθετη διαδικασία, δηλαδή η συλλογή τιμών από persistent properties, αντιμετωπίζεται από τη μέθοδο `saveState()`. Σήματα σε βάθος .[#toc-signals-in-depth] diff --git a/application/el/presenters.texy b/application/el/presenters.texy index b2db7f0af6..8b7a737672 100644 --- a/application/el/presenters.texy +++ b/application/el/presenters.texy @@ -60,7 +60,7 @@ class ArticlePresenter extends Nette\Application\UI\Presenter Είναι σημαντικό ότι `action()` καλείται πριν από την `render()`, ώστε μέσα σε αυτό να μπορούμε ενδεχομένως να αλλάξουμε την επόμενη πορεία του κύκλου ζωής, δηλαδή να αλλάξουμε το πρότυπο που θα αποδοθεί και επίσης τη μέθοδο `render()` που θα κληθεί, χρησιμοποιώντας το `setView('otherView')`. -Οι παράμετροι από το αίτημα περνούν στη μέθοδο. Είναι δυνατόν και συνιστάται να καθορίσετε τύπους για τις παραμέτρους, π.χ. `actionShow(int $id, string $slug = null)` - αν η παράμετρος `id` λείπει ή αν δεν είναι ακέραιος αριθμός, ο παρουσιαστής επιστρέφει [σφάλμα 404 |#Error 404 etc.] και τερματίζει τη λειτουργία. +Οι παράμετροι από το αίτημα περνούν στη μέθοδο. Είναι δυνατόν και συνιστάται να καθορίσετε τύπους για τις παραμέτρους, π.χ. `actionShow(int $id, ?string $slug = null)` - αν η παράμετρος `id` λείπει ή αν δεν είναι ακέραιος αριθμός, ο παρουσιαστής επιστρέφει [σφάλμα 404 |#Error 404 etc.] και τερματίζει τη λειτουργία. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ $this->redirect(/* ... */); Σφάλμα 404 κ.λπ. .[#toc-error-404-etc] ====================================== -Όταν δεν μπορούμε να ικανοποιήσουμε το αίτημα επειδή για παράδειγμα το άρθρο που θέλουμε να εμφανίσουμε δεν υπάρχει στη βάση δεδομένων, θα πετάξουμε το σφάλμα 404 χρησιμοποιώντας τη μέθοδο `error(string $message = null, int $httpCode = 404)`, η οποία αντιπροσωπεύει το σφάλμα HTTP 404: +Όταν δεν μπορούμε να ικανοποιήσουμε το αίτημα επειδή για παράδειγμα το άρθρο που θέλουμε να εμφανίσουμε δεν υπάρχει στη βάση δεδομένων, θα πετάξουμε το σφάλμα 404 χρησιμοποιώντας τη μέθοδο `error(?string $message = null, int $httpCode = 404)`, η οποία αντιπροσωπεύει το σφάλμα HTTP 404: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ class ProductPresenter extends Nette\Application\UI\Presenter Μπορείτε επίσης να επικαλεστείτε την κανονικοποίηση χειροκίνητα χρησιμοποιώντας τη μέθοδο `canonicalize()`, η οποία, όπως και η μέθοδος `link()`, λαμβάνει τον παρουσιαστή, τις ενέργειες και τις παραμέτρους ως ορίσματα. Δημιουργεί έναν σύνδεσμο και τον συγκρίνει με την τρέχουσα διεύθυνση URL. Εάν είναι διαφορετική, ανακατευθύνει στον δημιουργημένο σύνδεσμο. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // ανακατευθύνει εάν το $slug είναι διαφορετικό από το $realSlug diff --git a/application/en/ajax.texy b/application/en/ajax.texy index a62ed95cfc..819a6e4627 100644 --- a/application/en/ajax.texy +++ b/application/en/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +First you need to [initialize |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] the library: + +```js +naja.initialize(); +``` + To make an ordinary link (signal) or form submission an AJAX request, simply mark the respective link, form, or button with the `ajax` class: ```html diff --git a/application/en/bootstrap.texy b/application/en/bootstrap.texy index f0b54d49b9..a950df1e88 100644 --- a/application/en/bootstrap.texy +++ b/application/en/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // The configurator is responsible for setting up the application environment and services. + $this->configurator = new Configurator; + // Set the directory for temporary files generated by Nette (e.g. compiled templates) + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette is smart, and the development mode turns on automatically, + // or you can enable for a specific IP address it by uncommenting the following line: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Enables Tracy: the ultimate "swiss army knife" debugging tool. + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: autoloads all classes in the given directory + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Load configuration files + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php ========= -In the case of web applications, the initial file is `index.php`, which is located in the public directory `www/`. It lets the `Bootstrap` class to initialize the environment and return the `$configurator` which creates DI container. Then it obtains the `Application` service, that runs the web application: +The initial file for web applications is `index.php`, located in the public directory `www/`. It uses the `Bootstrap` class to initialize the environment and create a DI container. Then, it obtains the `Application` service from the container, which launches the web application: ```php -// initialize the environment + get Configurator object -$configurator = App\Bootstrap::boot(); -// create a DI container -$container = $configurator->createContainer(); +$bootstrap = new App\Bootstrap; +// Initialize the environment + create a DI container +$container = $bootstrap->bootWebApplication(); // DI container creates a Nette\Application\Application object $application = $container->getByType(Nette\Application\Application::class); -// start Nette application +// Start the Nette application and handle the incoming request $application->run(); ``` @@ -66,19 +91,19 @@ Mode selection is done by autodetection, so there is usually no need to configur If you want to enable development mode in other cases, for example, for programmers accessing from a specific IP address, you can use `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // one or more IP addresses +$this->configurator->setDebugMode('23.75.345.200'); // one or more IP addresses ``` We definitely recommend combining an IP address with a cookie. We will store a secret token into the `nette-debug` cookie, e.g. `secret1234`, and the development mode will be activated for programmers with this combination of IP and cookie. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` We can also turn off developer mode completely, even for localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Note that the value `true` turns on developer mode by hard, which should never happen on a production server. @@ -90,7 +115,7 @@ Debugging Tool Tracy For easy debugging, we will turn on the great tool [Tracy |tracy:]. In developer mode it visualizes errors and in production mode it logs errors to the specified directory: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Temporary Files Nette uses the cache for DI container, RobotLoader, templates, etc. Therefore it is necessary to set the path to the directory where the cache will be stored: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` On Linux or macOS, set the [write permissions |nette:troubleshooting#Setting directory permissions] for directories `log/` and `temp/`. @@ -112,7 +137,7 @@ RobotLoader Usually, we will want to automatically load the classes using [RobotLoader |robot-loader:], so we have to start it up and let it load classes from the directory where `Bootstrap.php` is located (i.e. `__DIR__`) and all its subdirectories: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Timezone Configurator allows you to specify a timezone for your application. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ In the development mode, the container is automatically updated each time you ch Configuration files are loaded using `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` The method `addConfig()` can be called multiple times to add multiple files. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Static Parameters Parameters used in configuration files can be defined [in the section `parameters`|dependency-injection:configuration#parameters] and also passed (or overwritten) by the `addStaticParameters()` method (it has alias `addParameters()`). It is important that different parameter values cause the generation of additional DI containers, i.e. additional classes. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Dynamic Parameters We can also add dynamic parameters to the container, their different values, unlike static parameters, will not cause the generation of new DI containers. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Environment variables could be easily made available using dynamic parameters. We can access them via `%env.variable%` in configuration files. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Create a new instance and insert it in bootstrap: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Different Environments ====================== -Feel free to customize the `Bootstrap` class to suit your needs. You can add parameters to the `boot()` method to differentiate web projects, or add other methods, such as `bootForTests()`, which initializes the environment for unit tests, `bootForCli()` for scripts called from the command line, and so on. +Don't hesitate to customize the `Bootstrap` class according to your needs. You can add parameters to the `bootWebApplication()` method to differentiate between web projects. Alternatively, you can add other methods, such as `bootTestEnvironment()` to initialize the environment for unit tests, `bootConsoleApplication()` for scripts called from the command line, and so on. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container { - $configurator = self::boot(); Tester\Environment::setup(); // Nette Tester initialization - return $configurator; + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container +{ + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/en/components.texy b/application/en/components.texy index 42b40aaacb..2c79308bef 100644 --- a/application/en/components.texy +++ b/application/en/components.texy @@ -198,7 +198,7 @@ The link that calls the signal is created in the usual way, i.e. in the template click here ``` -The signal is always called on the current presenter and view, so it is not possible to link to signal in different presenter / action. +The signal is always called on the current presenter and action, it cannot be called on another presenter or action. Thus, the signal causes the page to be reloaded in exactly the same way as in the original request, only in addition it calls the signal handling method with the appropriate parameters. If the method does not exist, exception [api:Nette\Application\UI\BadSignalException] is thrown, which is displayed to the user as error page 403 Forbidden. @@ -230,6 +230,28 @@ In the template, these messages are available in the variable `$flashes` as obje ``` +Redirection After a Signal +========================== + +After processing a component signal, redirection often follows. This situation is similar to forms—after submitting a form, we also redirect to prevent resubmission of data when the page is refreshed in the browser. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Since a component is a reusable element and should not usually have a direct dependency on specific presenters, the `redirect()` and `link()` methods automatically interpret the parameter as a component signal: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +If you need to redirect to a different presenter or action, you can do so through the presenter: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Persistent Parameters ===================== @@ -430,7 +452,7 @@ class PaginatingControl extends Control } ``` -The opposite process, that is, collecting values from persistent properites, is handled by the `saveState()` method. +The opposite process, that is, collecting values from persistent properties, is handled by the `saveState()` method. Signals in Depth @@ -444,7 +466,7 @@ Signal can be received by any component, presenter of object which implements in The main receivers of signals are `Presenters` and visual components extending `Control`. A signal is a sign for an object that it has to do something - poll counts in a vote from user, box with news has to unfold, form was sent and has to process data and so on. -The URL for the signal is created using the method [Component::link() |api:Nette\Application\UI\Component::link()]. As parameter `$destination` we pass string `{signal}!` and as `$args` an array of arguments which we want to pass to the signal handler. Signal parameters are attached to the URL of the current presenter/view. **The parameter `?do` in the URL determines the signal called.** +The URL for the signal is created using the [Component::link() |api:Nette\Application\UI\Component::link()] method. We pass the string `{signal}!` as the `$destination` parameter and the array of arguments we want to pass to the signal as `$args`. The signal is always called on the current presenter and action with the current parameters, the signal parameters are just added. In addition, the **parameter `?do`, which specifies the signal** is added right at the beginning. Its format is `{signal}` or `{signalReceiver}-{signal}`. `{signalReceiver}` is the name of the component in the presenter. This is why hyphen (inaccurately dash) can't be present in the name of components - it is used to divide the name of the component and signal, but it's possible to compose several components. diff --git a/application/en/presenters.texy b/application/en/presenters.texy index 65a0dcf131..2773f8486b 100644 --- a/application/en/presenters.texy +++ b/application/en/presenters.texy @@ -60,7 +60,7 @@ Similar to the method `render()`. While `render()` is intended to pr It is important that `action()` is called before `render()`, so inside it we can possibly change the next course of life cycle, i.e. change the template that will be rendered and also the method `render()` that will be called, using `setView('otherView')`. -The parameters from the request are passed to the method. It is possible and recommended to specify types for the parameters, e.g. `actionShow(int $id, string $slug = null)` - if parameter `id` is missing or if it is not an integer, the presenter returns [error 404|#Error 404 etc.] and terminates the operation. +The parameters from the request are passed to the method. It is possible and recommended to specify types for the parameters, e.g. `actionShow(int $id, ?string $slug = null)` - if parameter `id` is missing or if it is not an integer, the presenter returns [error 404|#Error 404 etc.] and terminates the operation. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ In the template, these messages are available in the variable `$flashes` as obje Error 404 etc. ============== -When we can't fulfill the request because for example the article we want to display does not exist in the database, we will throw out the 404 error using method `error(string $message = null, int $httpCode = 404)`, which represents HTTP error 404: +When we can't fulfill the request because for example the article we want to display does not exist in the database, we will throw out the 404 error using method `error(?string $message = null, int $httpCode = 404)`, which represents HTTP error 404: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ Redirection does not occur with an AJAX or POST request because it would result You can also invoke canonization manually using method `canonicalize()`, which, like method `link()`, receives the presenter, actions, and parameters as arguments. It creates a link and compares it to the current URL. If it is different, it redirects to the generated link. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // redirects if $slug is different from $realSlug diff --git a/application/es/ajax.texy b/application/es/ajax.texy index a90acb698b..d1414e84c4 100644 --- a/application/es/ajax.texy +++ b/application/es/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Primero hay que [inicializar |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] la biblioteca: + +```js +naja.initialize(); +``` + Para convertir un enlace ordinario (señal) o el envío de un formulario en una petición AJAX, basta con marcar el enlace, formulario o botón correspondiente con la clase `ajax`: ```html diff --git a/application/es/bootstrap.texy b/application/es/bootstrap.texy index d1753e0a9f..19bb56c0ba 100644 --- a/application/es/bootstrap.texy +++ b/application/es/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // El configurador se encarga de configurar el entorno y los servicios de la aplicación. + $this->configurator = new Configurator; + // Establecer el directorio para los archivos temporales generados por Nette (por ejemplo, plantillas compiladas). + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette es inteligente, y el modo de desarrollo se activa automáticamente, + // o puede habilitarlo para una dirección IP específica descomentando la siguiente línea: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Habilita Tracy: la última herramienta de depuración "navaja suiza". + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: carga automáticamente todas las clases en el directorio dado + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Carga archivos de configuración + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -En el caso de las aplicaciones web, el archivo inicial es `index.php`, que se encuentra en el directorio público `www/`. Permite a la clase `Bootstrap` inicializar el entorno y devolver el `$configurator` que crea el contenedor DI. Luego obtiene el servicio `Application`, que ejecuta la aplicación web: +El archivo inicial para aplicaciones web es `index.php`, ubicado en el directorio público `www/`. Utiliza la clase `Bootstrap` para inicializar el entorno y crear un contenedor DI. A continuación, obtiene el servicio `Application` del contenedor, que lanza la aplicación web: ```php -// initialize the environment + get Configurator object -$configurator = App\Bootstrap::boot(); -// create a DI container -$container = $configurator->createContainer(); -// DI container creates a Nette\Application\Application object +$bootstrap = new App\Bootstrap; +// Inicializar el entorno + crear un contenedor DI +$container = $bootstrap->bootWebApplication(); +// El contenedor DI crea un objeto Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -// start Nette application +// Inicia la aplicación Nette y gestiona la petición entrante $application->run(); ``` @@ -66,19 +91,19 @@ La selección del modo se hace por autodetección, por lo que normalmente no hay Si desea habilitar el modo de desarrollo en otros casos, por ejemplo, para los programadores que acceden desde una dirección IP específica, puede utilizar `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // one or more IP addresses +$this->configurator->setDebugMode('23.75.345.200'); // one or more IP addresses ``` Recomendamos encarecidamente combinar una dirección IP con una cookie. Almacenaremos un token secreto en la cookie `nette-debug`, por ejemplo `secret1234`, y el modo de desarrollo se activará para los programadores con esta combinación de IP y cookie. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` También podemos desactivar completamente el modo de desarrollo, incluso para localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Nótese que el valor `true` activa el modo desarrollador por fuerza, lo que nunca debería ocurrir en un servidor de producción. @@ -90,7 +115,7 @@ Herramienta de depuración Tracy .[#toc-debugging-tool-tracy] Para facilitar la depuración, activaremos la gran herramienta [Tracy |tracy:]. En modo desarrollador visualiza los errores y en modo producción los registra en el directorio especificado: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Archivos temporales .[#toc-temporary-files] Nette utiliza la caché para el contenedor DI, RobotLoader, plantillas, etc. Por lo tanto es necesario establecer la ruta al directorio donde se almacenará la caché: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` En Linux o macOS, establezca los [permisos de escritura |nette:troubleshooting#Setting directory permissions] para los directorios `log/` y `temp/`. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Normalmente, querremos cargar automáticamente las clases usando [RobotLoader |robot-loader:], así que tenemos que iniciarlo y dejar que cargue las clases desde el directorio donde se encuentra `Bootstrap.php` (es decir, `__DIR__`) y todos sus subdirectorios: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Zona horaria .[#toc-timezone] Configurator le permite especificar una zona horaria para su aplicación. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ En el modo de desarrollo, el contenedor se actualiza automáticamente cada vez q Los archivos de configuración se cargan utilizando `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` El método `addConfig()` se puede llamar varias veces para añadir varios archivos. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Parámetros estáticos .[#toc-static-parameters] Los parámetros utilizados en los archivos de configuración pueden definirse [en la sección `parameters` |dependency-injection:configuration#parameters] y también pasarse (o sobrescribirse) por el método `addStaticParameters()` (tiene el alias `addParameters()`). Es importante que los diferentes valores de los parámetros provoquen la generación de contenedores DI adicionales, es decir, clases adicionales. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Parámetros dinámicos .[#toc-dynamic-parameters] También podemos añadir parámetros dinámicos al contenedor, sus diferentes valores, a diferencia de los parámetros estáticos, no provocarán la generación de nuevos contenedores DI. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Las variables de entorno podrían estar fácilmente disponibles utilizando parámetros dinámicos. Podemos acceder a ellas a través de `%env.variable%` en archivos de configuración. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Creamos una nueva instancia y la insertamos en bootstrap: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Diferentes entornos .[#toc-different-environments] ================================================== -Siéntete libre de personalizar la clase `Bootstrap` para adaptarla a tus necesidades. Puedes añadir parámetros al método `boot()` para diferenciar proyectos web, o añadir otros métodos, como `bootForTests()`, que inicializa el entorno para pruebas unitarias, `bootForCli()` para scripts llamados desde la línea de comandos, etc. +No dude en personalizar la clase `Bootstrap` según sus necesidades. Puedes añadir parámetros al método `bootWebApplication()` para diferenciar entre proyectos web. Alternativamente, puedes añadir otros métodos, como `bootTestEnvironment()` para inicializar el entorno para pruebas unitarias, `bootConsoleApplication()` para scripts llamados desde la línea de comandos, etc. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container +{ + Tester\Environment::setup(); // Inicialización del comprobador de redes + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container { - $configurator = self::boot(); - Tester\Environment::setup(); // Nette Tester initialization - return $configurator; + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/es/components.texy b/application/es/components.texy index 0482a246a3..5e58b7e920 100644 --- a/application/es/components.texy +++ b/application/es/components.texy @@ -230,6 +230,28 @@ En la plantilla, estos mensajes están disponibles en la variable `$flashes` com ``` +Redirección tras una señal .[#toc-redirection-after-a-signal] +============================================================= + +Después de procesar una señal de componente, a menudo se produce una redirección. Esta situación es similar a la de los formularios: después de enviar un formulario, también redirigimos para evitar que se vuelvan a enviar los datos cuando se actualiza la página en el navegador. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Dado que un componente es un elemento reutilizable y, por lo general, no debería tener una dependencia directa de presentadores específicos, los métodos `redirect()` y `link()` interpretan automáticamente el parámetro como una señal de componente: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Si necesita redirigir a un presentador o acción diferente, puede hacerlo a través del presentador: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Parámetros persistentes .[#toc-persistent-parameters] ===================================================== diff --git a/application/es/presenters.texy b/application/es/presenters.texy index 030cd85b9c..ee6f551d6c 100644 --- a/application/es/presenters.texy +++ b/application/es/presenters.texy @@ -60,7 +60,7 @@ Similar al método `render()`. Mientras que `render()` está destina Es importante que `action()` se llame antes que `render()`para que dentro de él podamos posiblemente cambiar el siguiente curso del ciclo de vida, es decir, cambiar la plantilla que será renderizada y también el método `render()` que será llamado, usando `setView('otherView')`. -Los parámetros de la petición se pasan al método. Es posible y recomendable especificar tipos para los parámetros, por ejemplo `actionShow(int $id, string $slug = null)` - si el parámetro `id` falta o si no es un entero, el presentador devuelve [el error 404 |#Error 404 etc.] y termina la operación. +Los parámetros de la petición se pasan al método. Es posible y recomendable especificar tipos para los parámetros, por ejemplo `actionShow(int $id, ?string $slug = null)` - si el parámetro `id` falta o si no es un entero, el presentador devuelve [el error 404 |#Error 404 etc.] y termina la operación. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ En la plantilla, estos mensajes están disponibles en la variable `$flashes` com Error 404 etc. .[#toc-error-404-etc] ==================================== -Cuando no podamos satisfacer la petición porque por ejemplo el artículo que queremos mostrar no existe en la base de datos, lanzaremos el error 404 utilizando el método `error(string $message = null, int $httpCode = 404)`, que representa el error HTTP 404: +Cuando no podamos satisfacer la petición porque por ejemplo el artículo que queremos mostrar no existe en la base de datos, lanzaremos el error 404 utilizando el método `error(?string $message = null, int $httpCode = 404)`, que representa el error HTTP 404: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ La redirección no se produce con una solicitud AJAX o POST porque provocaría u También puede invocar la canonización manualmente mediante el método `canonicalize()`, que, al igual que el método `link()`, recibe el presentador, las acciones y los parámetros como argumentos. Crea un enlace y lo compara con la URL actual. Si es diferente, redirige al enlace generado. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // redirects if $slug is different from $realSlug diff --git a/application/fr/ajax.texy b/application/fr/ajax.texy index 6ef5b2bf32..d93abac2f4 100644 --- a/application/fr/ajax.texy +++ b/application/fr/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Vous devez d'abord [initialiser |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] la bibliothèque : + +```js +naja.initialize(); +``` + Pour faire d'un lien ordinaire (signal) ou d'une soumission de formulaire une requête AJAX, il suffit de marquer le lien, le formulaire ou le bouton correspondant avec la classe `ajax`: ```html diff --git a/application/fr/bootstrap.texy b/application/fr/bootstrap.texy index dbe7e4bc85..32c12e829b 100644 --- a/application/fr/bootstrap.texy +++ b/application/fr/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Le configurateur est chargé de configurer l'environnement et les services de l'application. + $this->configurator = new Configurator; + // Définir le répertoire pour les fichiers temporaires générés par Nette (par exemple, les modèles compilés) + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette est intelligent, et le mode développement est activé automatiquement, + // ou vous pouvez l'activer pour une adresse IP spécifique en décommentant la ligne suivante: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Active Tracy: l'ultime outil de débogage "couteau suisse". + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: charge automatiquement toutes les classes dans le répertoire donné + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Chargement des fichiers de configuration + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -Dans le cas des applications web, le fichier initial est `index.php`, qui se trouve dans le répertoire public `www/`. Il laisse la classe `Bootstrap` pour initialiser l'environnement et retourne la classe `$configurator` qui crée le conteneur DI. Ensuite, il obtient le service `Application`, qui exécute l'application web : +Le fichier initial des applications web est `index.php`, situé dans le répertoire public `www/`. Il utilise la classe `Bootstrap` pour initialiser l'environnement et créer un conteneur DI. Ensuite, il obtient le service `Application` du conteneur, ce qui lance l'application web : ```php -// initialisation de l'environnement + obtention de l'objet Configurateur -$configurator = App\Bootstrap::boot(); -// créer un conteneur DI -$container = $configurator->createContainer(); +$bootstrap = new App\Bootstrap; +// Initialiser l'environnement + créer un conteneur DI +$container = $bootstrap->bootWebApplication(); // Le conteneur DI crée un objet Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -// Démarrage de l'application Nette +// Démarrer l'application Nette et traiter la demande entrante $application->run(); ``` @@ -66,19 +91,19 @@ La sélection du mode se fait par autodétection, il n'est donc généralement p Si vous souhaitez activer le mode développement dans d'autres cas, par exemple pour les programmeurs accédant depuis une adresse IP spécifique, vous pouvez utiliser `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // une ou plusieurs adresses IP +$this->configurator->setDebugMode('23.75.345.200'); // une ou plusieurs adresses IP ``` Nous recommandons vivement de combiner une adresse IP avec un cookie. Nous stockerons un jeton secret dans le cookie `nette-debug`, par exemple `secret1234`, et le mode de développement sera activé pour les programmeurs avec cette combinaison d'IP et de cookie. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Nous pouvons également désactiver complètement le mode de développement, même pour localhost : ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Notez que la valeur `true` active le mode développeur par défaut, ce qui ne devrait jamais arriver sur un serveur de production. @@ -90,7 +115,7 @@ Outil de débogage Tracy .[#toc-debugging-tool-tracy] Pour faciliter le débogage, nous allons activer l'excellent outil [Tracy |tracy:]. En mode développeur, il visualise les erreurs et en mode production, il enregistre les erreurs dans le répertoire spécifié : ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Fichiers temporaires .[#toc-temporary-files] Nette utilise le cache pour le conteneur DI, RobotLoader, les modèles, etc. Il est donc nécessaire de définir le chemin d'accès au répertoire où le cache sera stocké : ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` Sous Linux ou macOS, définissez les [droits d'écriture |nette:troubleshooting#Setting directory permissions] pour les répertoires `log/` et `temp/`. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] En général, nous voulons charger automatiquement les classes à l'aide de [RobotLoader |robot-loader:], nous devons donc le lancer et le laisser charger les classes du répertoire où se trouve `Bootstrap.php` (c'est-à-dire `__DIR__`) et de tous ses sous-répertoires : ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Fuseau horaire .[#toc-timezone] Le configurateur vous permet de spécifier un fuseau horaire pour votre application. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ En mode développement, le conteneur est automatiquement mis à jour chaque fois Les fichiers de configuration sont chargés à l'aide de `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` La méthode `addConfig()` peut être appelée plusieurs fois pour ajouter plusieurs fichiers. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Paramètres statiques .[#toc-static-parameters] Les paramètres utilisés dans les fichiers de configuration peuvent être définis [dans la section `parameters` |dependency-injection:configuration#parameters] et également transmis (ou écrasés) par la méthode `addStaticParameters()` (qui a un alias `addParameters()`). Il est important que les différentes valeurs des paramètres entraînent la génération de conteneurs DI supplémentaires, c'est-à-dire de classes supplémentaires. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Paramètres dynamiques .[#toc-dynamic-parameters] Nous pouvons également ajouter des paramètres dynamiques au conteneur, leurs différentes valeurs, contrairement aux paramètres statiques, ne provoqueront pas la génération de nouveaux conteneurs DI. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Les variables d'environnement peuvent être facilement mises à disposition à l'aide de paramètres dynamiques. Nous pouvons y accéder via `%env.variable%` dans les fichiers de configuration. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Créez une nouvelle instance et insérez-la dans bootstrap : ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Différents environnements .[#toc-different-environments] ======================================================== -N'hésitez pas à personnaliser la classe `Bootstrap` en fonction de vos besoins. Vous pouvez ajouter des paramètres à la méthode `boot()` pour différencier les projets Web, ou ajouter d'autres méthodes, comme `bootForTests()`, qui initialise l'environnement pour les tests unitaires, `bootForCli()` pour les scripts appelés depuis la ligne de commande, etc. +N'hésitez pas à personnaliser la classe `Bootstrap` en fonction de vos besoins. Vous pouvez ajouter des paramètres à la méthode `bootWebApplication()` pour différencier les projets web. Vous pouvez également ajouter d'autres méthodes, telles que `bootTestEnvironment()` pour initialiser l'environnement des tests unitaires, `bootConsoleApplication()` pour les scripts appelés à partir de la ligne de commande, etc. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container +{ + Tester\Environment::setup(); // Initialisation du testeur Nette + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container { - $configurator = self::boot(); - Tester\Environment::setup(); // Initialisation du testeur de nappe - return $configurator; + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/fr/components.texy b/application/fr/components.texy index 0b261bac97..a9472f1af9 100644 --- a/application/fr/components.texy +++ b/application/fr/components.texy @@ -230,6 +230,28 @@ Dans le modèle, ces messages sont disponibles dans la variable `$flashes` sous ``` +Redirection après un signal .[#toc-redirection-after-a-signal] +============================================================== + +Le traitement d'un signal de composant est souvent suivi d'une redirection. Cette situation est similaire à celle des formulaires : après avoir soumis un formulaire, nous redirigeons également les données pour éviter qu'elles ne soient soumises à nouveau lorsque la page est rafraîchie dans le navigateur. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Étant donné qu'un composant est un élément réutilisable et qu'il ne doit généralement pas dépendre directement de présentateurs spécifiques, les méthodes `redirect()` et `link()` interprètent automatiquement le paramètre comme un signal de composant : + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Si vous devez rediriger vers un autre présentateur ou une autre action, vous pouvez le faire par l'intermédiaire du présentateur : + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Paramètres persistants .[#toc-persistent-parameters] ==================================================== diff --git a/application/fr/presenters.texy b/application/fr/presenters.texy index bb0010a1f0..538f20ab44 100644 --- a/application/fr/presenters.texy +++ b/application/fr/presenters.texy @@ -60,7 +60,7 @@ Similaire à la méthode `render()`. Alors que `render()` a pour but Il est important que `action()` soit appelé avant `render()`afin qu'à l'intérieur de celui-ci, nous puissions éventuellement modifier le cours suivant du cycle de vie, c'est-à-dire changer le modèle qui sera rendu et également la méthode `render()` qui sera appelée, en utilisant `setView('otherView')`. -Les paramètres de la requête sont transmis à la méthode. Il est possible et recommandé de spécifier des types pour les paramètres, par exemple `actionShow(int $id, string $slug = null)` - si le paramètre `id` est manquant ou s'il ne s'agit pas d'un nombre entier, le présentateur renvoie l'[erreur 404 |#Error 404 etc.] et met fin à l'opération. +Les paramètres de la requête sont transmis à la méthode. Il est possible et recommandé de spécifier des types pour les paramètres, par exemple `actionShow(int $id, ?string $slug = null)` - si le paramètre `id` est manquant ou s'il ne s'agit pas d'un nombre entier, le présentateur renvoie l'[erreur 404 |#Error 404 etc.] et met fin à l'opération. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ Dans le modèle, ces messages sont disponibles dans la variable `$flashes` en ta Erreur 404 etc. .[#toc-error-404-etc] ===================================== -Lorsque nous ne pouvons pas répondre à la demande, par exemple parce que l'article que nous voulons afficher n'existe pas dans la base de données, nous envoyons l'erreur 404 en utilisant la méthode `error(string $message = null, int $httpCode = 404)`, qui représente l'erreur HTTP 404 : +Lorsque nous ne pouvons pas répondre à la demande, par exemple parce que l'article que nous voulons afficher n'existe pas dans la base de données, nous envoyons l'erreur 404 en utilisant la méthode `error(?string $message = null, int $httpCode = 404)`, qui représente l'erreur HTTP 404 : ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ La redirection ne se produit pas avec une demande AJAX ou POST, car elle entraî Vous pouvez également invoquer la canonisation manuellement à l'aide de la méthode `canonicalize()`, qui, comme la méthode `link()`, reçoit le présentateur, les actions et les paramètres comme arguments. Elle crée un lien et le compare à l'URL actuelle. Si elle est différente, elle redirige vers le lien généré. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // redirige si $slug est différent de $realSlug diff --git a/application/hu/ajax.texy b/application/hu/ajax.texy index 24ec5880e0..b2a6f90cc9 100644 --- a/application/hu/ajax.texy +++ b/application/hu/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Először [inicializálni |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] kell a könyvtárat: + +```js +naja.initialize(); +``` + Ahhoz, hogy egy közönséges linket (jelet) vagy űrlapküldést AJAX-kérelemmé tegyen, egyszerűen jelölje meg az adott linket, űrlapot vagy gombot a `ajax` osztállyal: ```html diff --git a/application/hu/bootstrap.texy b/application/hu/bootstrap.texy index 49be7dca25..a05ab01083 100644 --- a/application/hu/bootstrap.texy +++ b/application/hu/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // A konfigurátor felelős az alkalmazási környezet és a szolgáltatások beállításáért. + $this->configurator = new Configurator; + // A Nette által generált ideiglenes fájlok (pl. lefordított sablonok) könyvtárának beállítása. + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // A Nette intelligens, és a fejlesztői üzemmód automatikusan bekapcsol, + // vagy engedélyezheti egy adott IP-címre a következő sor megjegyzésének feloldásával: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Bekapcsolja a Tracy-t: a végső "svájci bicska" hibakeresési eszköz. + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: automatikusan feltölti az összes osztályt a megadott könyvtárban. + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Konfigurációs fájlok betöltése + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -A webes alkalmazások esetében a kezdő fájl a `index.php`, amely a `www/` nyilvános könyvtárban található. Ez lehetővé teszi a `Bootstrap` osztály számára, hogy inicializálja a környezetet, és visszaadja a `$configurator`, amely létrehozza a DI konténert. Ezután megszerzi a `Application` szolgáltatást, amely a webalkalmazást futtatja: +A webes alkalmazások kezdőfájlja a `index.php`, amely a `www/` nyilvános könyvtárban található. A `Bootstrap` osztályt használja a környezet inicializálásához és a DI konténer létrehozásához. Ezután megszerzi a `Application` szolgáltatást a konténerből, amely elindítja a webalkalmazást: ```php -// a környezet inicializálása + konfigurátor objektum kinyerése -$configurator = App\Bootstrap::boot(); -// DI konténer létrehozása -$container = $configurator->createContainer(); +$bootstrap = new App\Bootstrap; +// A környezet inicializálása + DI konténer létrehozása +$container = $bootstrap->bootWebApplication(); // A DI konténer létrehoz egy Nette\Application\Application objektumot. $application = $container->getByType(Nette\Application\Application::class); -// Nette alkalmazás indítása +// A Nette-alkalmazás elindítása és a bejövő kérések kezelése. $application->run(); ``` @@ -66,19 +91,19 @@ A mód kiválasztása automatikus felismeréssel történik, így általában ne Ha más esetekben, például egy adott IP-címről hozzáférő programozók számára szeretné engedélyezni a fejlesztési üzemmódot, akkor a `setDebugMode()` címet használhatja: ```php -$configurator->setDebugMode('23.75.345.200'); // egy vagy több IP-cím +$this->configurator->setDebugMode('23.75.345.200'); // egy vagy több IP-cím ``` Mindenképpen javasoljuk az IP-cím és a cookie kombinálását. A `nette-debug` cookie-ban tárolunk egy titkos tokent, pl. `secret1234`, és a fejlesztési mód az IP és a cookie ilyen kombinációjával rendelkező programozók számára aktiválódik. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` A fejlesztői módot teljesen ki is kapcsolhatjuk, akár a localhost esetében is: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` A `true` érték keményen bekapcsolja a fejlesztői módot, ami soha nem történhet meg egy termelő szerveren. @@ -90,7 +115,7 @@ Hibakereső eszköz Tracy .[#toc-debugging-tool-tracy] Az egyszerű hibakeresés érdekében bekapcsoljuk a [Tracy |tracy:] nevű nagyszerű eszközt. Fejlesztői módban megjeleníti a hibákat, termelési módban pedig a megadott könyvtárba naplózza a hibákat: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Ideiglenes fájlok .[#toc-temporary-files] A Nette a DI konténer, a RobotLoader, a sablonok stb. számára használja a gyorsítótárat. Ezért szükséges annak a könyvtárnak az elérési útvonalát beállítani, ahol a gyorsítótár tárolásra kerül: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` Linuxon vagy macOS-en állítsa be a `log/` és a `temp/` könyvtárak [írási engedélyeit |nette:troubleshooting#Setting directory permissions]. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Általában a [RobotLoader |robot-loader:] segítségével szeretnénk automatikusan betölteni az osztályokat, ezért el kell indítanunk, és hagynunk kell, hogy betöltse az osztályokat abból a könyvtárból, ahol a `Bootstrap.php` található (azaz `__DIR__`) és annak összes alkönyvtárából: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Időzóna .[#toc-timezone] A Configurator lehetővé teszi, hogy megadjon egy időzónát az alkalmazásához. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ Fejlesztői üzemmódban a konténer automatikusan frissül minden alkalommal, a A konfigurációs fájlok betöltése a `addConfig()` segítségével történik: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` A `addConfig()` metódus többször is meghívható több fájl hozzáadásához. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Statikus paraméterek .[#toc-static-parameters] A konfigurációs fájlokban használt paramétereket a [`parameters` szakaszban |dependency-injection:configuration#parameters] lehet definiálni, és a `addStaticParameters()` metódus (amelynek alias neve `addParameters()`) is átadhatja (vagy felülírhatja). Fontos, hogy a különböző paraméterértékek további DI-konténerek, azaz további osztályok generálását okozzák. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Dinamikus paraméterek .[#toc-dynamic-parameters] A konténerhez dinamikus paramétereket is hozzáadhatunk, ezek eltérő értékei a statikus paraméterekkel ellentétben nem okoznak új DI-konténerek generálását. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ A környezeti változókat könnyen elérhetővé tehetnénk dinamikus paraméterek segítségével. A konfigurációs fájlokban a `%env.variable%` címen keresztül érhetjük el őket. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Hozzunk létre egy új példányt, és illesszük be a bootstrapbe: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Különböző környezetek .[#toc-different-environments] ==================================================== -Nyugodtan testre szabhatja a `Bootstrap` osztályt, hogy megfeleljen az igényeinek. A `boot()` metódushoz paramétereket adhat a webes projektek megkülönböztetéséhez, vagy más metódusokat is hozzáadhat, például a `bootForTests()`, amely inicializálja a környezetet a unit tesztekhez, a `bootForCli()` a parancssorból hívott szkriptekhez, és így tovább. +Ne habozzon, ha a `Bootstrap` osztályt saját igényei szerint alakíthatja. A `bootWebApplication()` metódushoz paramétereket adhat hozzá a webes projektek megkülönböztetése érdekében. Alternatívaként más metódusokat is hozzáadhat, például a `bootTestEnvironment()` a környezet inicializálásához a unit tesztekhez, a `bootConsoleApplication()` a parancssorból hívott szkriptekhez stb. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container { - $configurator = self::boot(); Tester\Environment::setup(); // Nette Tester inicializálása - return $configurator; + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container +{ + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/hu/components.texy b/application/hu/components.texy index 96d0ee1e96..0e10d16126 100644 --- a/application/hu/components.texy +++ b/application/hu/components.texy @@ -230,6 +230,28 @@ A sablonban ezek az üzenetek a `$flashes` változóban állnak rendelkezésre, ``` +Átirányítás jelzést követően .[#toc-redirection-after-a-signal] +=============================================================== + +Egy komponensjel feldolgozása után gyakran következik az átirányítás. Ez a helyzet hasonló az űrlapokhoz - egy űrlap elküldése után mi is átirányítunk, hogy megakadályozzuk az adatok újbóli elküldését, amikor az oldal frissül a böngészőben. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Mivel a komponens egy újrafelhasználható elem, és általában nem szabad, hogy közvetlen függőségben álljon az egyes prezenterektől, a `redirect()` és a `link()` metódusok automatikusan komponensjelként értelmezik a paramétert: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Ha át kell irányítani egy másik prezenterre vagy műveletre, akkor ezt a prezenteren keresztül teheti meg: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Állandó paraméterek .[#toc-persistent-parameters] ================================================= diff --git a/application/hu/presenters.texy b/application/hu/presenters.texy index f38a06450a..076c632a4c 100644 --- a/application/hu/presenters.texy +++ b/application/hu/presenters.texy @@ -60,7 +60,7 @@ Hasonlóan a módszerhez `render()`. Míg a `render()` célja, hogy Fontos, hogy `action()` előbb hívódik meg, mint a `render()`, így ezen belül esetleg megváltoztathatjuk az életciklus következő menetét, azaz megváltoztathatjuk a megjelenítendő sablont és a metódust is. `render()` ami meghívásra kerül, a `setView('otherView')` segítségével. -A kérésből származó paramétereket átadjuk a metódusnak. Lehetséges és ajánlott a paraméterek típusainak megadása, pl. `actionShow(int $id, string $slug = null)` - ha a `id` paraméter hiányzik, vagy nem egész szám, a prezenter [404-es hibát |#Error 404 etc.] ad vissza, és megszakítja a műveletet. +A kérésből származó paramétereket átadjuk a metódusnak. Lehetséges és ajánlott a paraméterek típusainak megadása, pl. `actionShow(int $id, ?string $slug = null)` - ha a `id` paraméter hiányzik, vagy nem egész szám, a prezenter [404-es hibát |#Error 404 etc.] ad vissza, és megszakítja a műveletet. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ A sablonban ezek az üzenetek a `$flashes` változóban `stdClass` objektumként 404-es hiba stb. .[#toc-error-404-etc] ====================================== -Ha nem tudjuk teljesíteni a kérést, mert például a megjeleníteni kívánt cikk nem létezik az adatbázisban, akkor a 404-es hibát dobjuk ki a `error(string $message = null, int $httpCode = 404)` módszerrel, amely a 404-es HTTP hibát jelenti: +Ha nem tudjuk teljesíteni a kérést, mert például a megjeleníteni kívánt cikk nem létezik az adatbázisban, akkor a 404-es hibát dobjuk ki a `error(?string $message = null, int $httpCode = 404)` módszerrel, amely a 404-es HTTP hibát jelenti: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ Az átirányítás nem történik AJAX vagy POST kérés esetén, mivel az adatv A kanonizálás manuálisan is meghívható a `canonicalize()` módszerrel, amely a `link()` módszerhez hasonlóan a prezentálót, a műveleteket és a paramétereket kapja argumentumként. Létrehoz egy linket, és összehasonlítja azt az aktuális URL-lel. Ha eltér, akkor átirányít a létrehozott linkre. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // átirányít, ha a $slug különbözik a $realSlug-tól. diff --git a/application/it/ajax.texy b/application/it/ajax.texy index 76658ce100..f15f19b518 100644 --- a/application/it/ajax.texy +++ b/application/it/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Per prima cosa è necessario [inizializzare |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] la libreria: + +```js +naja.initialize(); +``` + Per rendere un normale link (segnale) o l'invio di un modulo una richiesta AJAX, è sufficiente contrassegnare il rispettivo link, modulo o pulsante con la classe `ajax`: ```html diff --git a/application/it/bootstrap.texy b/application/it/bootstrap.texy index 4459c3c534..b338b46064 100644 --- a/application/it/bootstrap.texy +++ b/application/it/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Il configuratore è responsabile dell'impostazione dell'ambiente applicativo e dei servizi. + $this->configurator = new Configurator; + // Impostare la directory per i file temporanei generati da Nette (ad esempio, i modelli compilati). + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette è intelligente e la modalità di sviluppo si attiva automaticamente, + // oppure si può attivare per un indirizzo IP specifico decommentando la seguente riga: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Abilita Tracy: lo strumento di debug per eccellenza, il "coltellino svizzero". + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: carica automaticamente tutte le classi nella cartella data + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Carica i file di configurazione + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -Nel caso delle applicazioni web, il file iniziale è `index.php`, che si trova nella cartella pubblica `www/`. Permette alla classe `Bootstrap` di inizializzare l'ambiente e restituisce la classe `$configurator` che crea il contenitore DI. Quindi ottiene il servizio `Application`, che esegue l'applicazione web: +Il file iniziale per le applicazioni web è `index.php`, situato nella cartella pubblica `www/`. Utilizza la classe `Bootstrap` per inizializzare l'ambiente e creare un contenitore DI. Quindi, ottiene il servizio `Application` dal contenitore, che lancia l'applicazione web: ```php -// inizializzare l'ambiente + ottenere l'oggetto Configuratore -$configurator = App\Bootstrap::boot(); -// creare un contenitore DI -$container = $configurator->createContainer(); -// Il contenitore DI crea un oggetto Nette\Application\Application +$bootstrap = new App\Bootstrap; +// Inizializzare l'ambiente + creare un contenitore DI +$container = $bootstrap->bootWebApplication(); +// Il contenitore DI crea un oggetto NetteApplicationApplication $application = $container->getByType(Nette\Application\Application::class); -// avvia l'applicazione Nette +// Avviare l'applicazione Nette e gestire la richiesta in arrivo $application->run(); ``` @@ -66,19 +91,19 @@ La selezione della modalità avviene tramite il rilevamento automatico, quindi d Se si vuole abilitare la modalità di sviluppo in altri casi, ad esempio per i programmatori che accedono da un indirizzo IP specifico, si può usare `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // uno o più indirizzi IP +$this->configurator->setDebugMode('23.75.345.200'); // uno o più indirizzi IP ``` Consigliamo assolutamente di combinare un indirizzo IP con un cookie. Nel cookie `nette-debug` verrà memorizzato un token segreto, ad esempio `secret1234`, e la modalità di sviluppo verrà attivata per i programmatori con questa combinazione di IP e cookie. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Possiamo anche disattivare completamente la modalità sviluppatore, anche per localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Si noti che il valore `true` attiva la modalità sviluppatore, cosa che non dovrebbe mai accadere su un server di produzione. @@ -90,7 +115,7 @@ Strumento di debug Tracy .[#toc-debugging-tool-tracy] Per facilitare il debug, attiviamo l'ottimo strumento [Tracy |tracy:]. In modalità sviluppatore visualizza gli errori e in modalità produzione li registra nella directory specificata: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ File temporanei .[#toc-temporary-files] Nette utilizza la cache per il contenitore DI, il RobotLoader, i modelli, ecc. Per questo motivo è necessario impostare il percorso della cartella in cui verrà memorizzata la cache: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` Su Linux o macOS, impostare i [permessi di scrittura |nette:troubleshooting#Setting directory permissions] per le directory `log/` e `temp/`. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Di solito, vogliamo caricare automaticamente le classi usando [RobotLoader |robot-loader:], quindi dobbiamo avviarlo e fargli caricare le classi dalla directory in cui si trova `Bootstrap.php` (cioè `__DIR__`) e da tutte le sue sottodirectory: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Fuso orario .[#toc-timezone] Il configuratore consente di specificare un fuso orario per l'applicazione. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ In modalità di sviluppo, il contenitore viene aggiornato automaticamente ogni v I file di configurazione vengono caricati usando `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Il metodo `addConfig()` può essere richiamato più volte per aggiungere più file. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Parametri statici .[#toc-static-parameters] I parametri usati nei file di configurazione possono essere definiti [nella sezione `parameters` |dependency-injection:configuration#parameters] e anche passati (o sovrascritti) dal metodo `addStaticParameters()` (ha l'alias `addParameters()`). È importante che valori diversi dei parametri causino la generazione di contenitori DI aggiuntivi, cioè di classi aggiuntive. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Parametri dinamici .[#toc-dynamic-parameters] Possiamo anche aggiungere parametri dinamici al contenitore; i loro diversi valori, a differenza dei parametri statici, non causeranno la generazione di nuovi contenitori DI. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Le variabili d'ambiente possono essere facilmente rese disponibili usando parametri dinamici. Possiamo accedervi tramite `%env.variable%` nei file di configurazione. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Creare una nuova istanza e inserirla in bootstrap: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Ambienti diversi .[#toc-different-environments] =============================================== -Sentitevi liberi di personalizzare la classe `Bootstrap` in base alle vostre esigenze. Si possono aggiungere parametri al metodo `boot()` per differenziare i progetti web, oppure aggiungere altri metodi, come `bootForTests()`, che inizializza l'ambiente per i test unitari, `bootForCli()` per gli script chiamati dalla riga di comando e così via. +Non esitate a personalizzare la classe `Bootstrap` in base alle vostre esigenze. Si possono aggiungere parametri al metodo `bootWebApplication()` per differenziare i progetti web. In alternativa, si possono aggiungere altri metodi, come `bootTestEnvironment()` per inizializzare l'ambiente per i test unitari, `bootConsoleApplication()` per gli script chiamati dalla riga di comando e così via. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container +{ + Tester\Environment::setup(); // Inizializzazione del tester Nette + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container { - $configurator = self::boot(); - Tester\Environment::setup(); // Nette Tester initialization - return $configurator; + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/it/components.texy b/application/it/components.texy index c623b0b7cd..a4198af736 100644 --- a/application/it/components.texy +++ b/application/it/components.texy @@ -230,6 +230,28 @@ Nel modello, questi messaggi sono disponibili nella variabile `$flashes` come og ``` +Reindirizzamento dopo un segnale .[#toc-redirection-after-a-signal] +=================================================================== + +Dopo l'elaborazione di un segnale di un componente, spesso segue un reindirizzamento. Questa situazione è simile a quella dei moduli: dopo l'invio di un modulo, si effettua un reindirizzamento per evitare che i dati vengano inviati nuovamente quando la pagina viene aggiornata nel browser. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Poiché un componente è un elemento riutilizzabile e di solito non dovrebbe avere una dipendenza diretta da presentatori specifici, i metodi `redirect()` e `link()` interpretano automaticamente il parametro come un segnale di componente: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Se è necessario reindirizzare a un presentatore o a un'azione diversa, lo si può fare attraverso il presentatore: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Parametri persistenti .[#toc-persistent-parameters] =================================================== diff --git a/application/it/presenters.texy b/application/it/presenters.texy index 5c8c2d8d80..7f12f07c7f 100644 --- a/application/it/presenters.texy +++ b/application/it/presenters.texy @@ -60,7 +60,7 @@ Simile al metodo `render()`. Mentre `render()` è destinato a prepar È importante che `action()` sia chiamato prima di `render()`quindi al suo interno si può eventualmente modificare il corso successivo del ciclo di vita, cioè cambiare il template che sarà reso e anche il metodo `render()` che sarà chiamato, utilizzando `setView('otherView')`. -I parametri della richiesta vengono passati al metodo. È possibile e consigliabile specificare i tipi di parametri, ad esempio `actionShow(int $id, string $slug = null)` - se il parametro `id` manca o non è un intero, il presentatore restituisce l'[errore 404 |#Error 404 etc.] e termina l'operazione. +I parametri della richiesta vengono passati al metodo. È possibile e consigliabile specificare i tipi di parametri, ad esempio `actionShow(int $id, ?string $slug = null)` - se il parametro `id` manca o non è un intero, il presentatore restituisce l'[errore 404 |#Error 404 etc.] e termina l'operazione. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ Nel modello, questi messaggi sono disponibili nella variabile `$flashes` come og Errore 404 ecc. .[#toc-error-404-etc] ===================================== -Quando non possiamo soddisfare la richiesta, perché ad esempio l'articolo che vogliamo visualizzare non esiste nel database, lanceremo l'errore 404 usando il metodo `error(string $message = null, int $httpCode = 404)`, che rappresenta l'errore HTTP 404: +Quando non possiamo soddisfare la richiesta, perché ad esempio l'articolo che vogliamo visualizzare non esiste nel database, lanceremo l'errore 404 usando il metodo `error(?string $message = null, int $httpCode = 404)`, che rappresenta l'errore HTTP 404: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ Il reindirizzamento non avviene con una richiesta AJAX o POST, perché comporter Si può anche invocare la canonizzazione manualmente con il metodo `canonicalize()`, che, come il metodo `link()`, riceve come argomenti il presentatore, le azioni e i parametri. Crea un link e lo confronta con l'URL corrente. Se è diverso, reindirizza al link generato. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // reindirizza se $slug è diverso da $realSlug diff --git a/application/pl/ajax.texy b/application/pl/ajax.texy index e38121342e..9a6f09bd03 100644 --- a/application/pl/ajax.texy +++ b/application/pl/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Najpierw należy [zainicjować |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] bibliotekę: + +```js +naja.initialize(); +``` + Aby uczynić zwykły link (sygnał) lub przesłanie formularza żądaniem AJAX, wystarczy oznaczyć odpowiedni link, formularz lub przycisk klasą `ajax`: ```html diff --git a/application/pl/bootstrap.texy b/application/pl/bootstrap.texy index cfbd2d5f09..084d93b416 100644 --- a/application/pl/bootstrap.texy +++ b/application/pl/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Konfigurator jest odpowiedzialny za konfigurację środowiska aplikacji i usług. + $this->configurator = new Configurator; + // Ustawienie katalogu dla plików tymczasowych generowanych przez Nette (np. skompilowanych szablonów). + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette jest inteligentny i tryb deweloperski włącza się automatycznie, + // lub można go włączyć dla określonego adresu IP, odkomentowując następującą linię: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Włącza Tracy: najlepsze narzędzie do debugowania. + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: automatycznie ładuje wszystkie klasy w podanym katalogu + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Ładowanie plików konfiguracyjnych + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -Podstawowym plikiem w przypadku aplikacji internetowych jest `index.php`, który znajduje się w katalogu publicznym `www/`. Spowoduje to, że klasa Bootstrap zainicjuje środowisko i zwróci `$configurator`, a następnie wyprodukuje kontener DI. Następnie pobiera z niego usługę `Application`, która uruchamia aplikację internetową: +Początkowym plikiem dla aplikacji internetowych jest `index.php`, znajdujący się w publicznym katalogu `www/`. Używa on klasy `Bootstrap` do zainicjowania środowiska i utworzenia kontenera DI. Następnie uzyskuje usługę `Application` z kontenera, który uruchamia aplikację internetową: ```php -// inicjalizacja środowiska + uzyskanie obiektu Configurator -$configurator = App\Bootstrap::boot(); -// tworzenie kontenera DI -$container = $configurator->createContainer(); -// Kontener DI tworzy obiekt "Nette +$bootstrap = new App\Bootstrap; +// Inicjalizacja środowiska + utworzenie kontenera DI +$container = $bootstrap->bootWebApplication(); +// Kontener DI tworzy obiekt Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -// uruchomienie aplikacji Nette +// Uruchom aplikację Nette i obsłuż przychodzące żądanie $application->run(); ``` @@ -66,19 +91,19 @@ Wybór trybu odbywa się poprzez autodetekcję, więc zazwyczaj nie ma potrzeby Jeśli chcemy włączyć tryb deweloperski w innych przypadkach, takich jak programiści uzyskujący dostęp z określonego adresu IP, używamy `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // można również określić pole adresu IP +$this->configurator->setDebugMode('23.75.345.200'); // można również określić pole adresu IP ``` Zdecydowanie zalecamy połączenie adresu IP z plikiem cookie. W pliku cookie `nette-debug` przechowujemy tajny token, np. `secret1234`, i w ten sposób umożliwiamy tryb deweloperski dla programistów uzyskujących dostęp z określonego adresu IP i posiadających token w pliku cookie: ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Możemy również całkowicie wyłączyć tryb deweloperski, nawet dla localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Uwaga, wartość `true` domyślnie włącza tryb deweloperski, co nigdy nie może mieć miejsca na serwerze produkcyjnym. @@ -90,7 +115,7 @@ Narzędzie do debugowania Tracy .[#toc-debugging-tool-tracy] Aby ułatwić debugowanie, włączmy wspaniałe narzędzie [Tracy |tracy:]. Wizualizuje błędy w trybie deweloperskim i loguje błędy w trybie produkcyjnym do podanego katalogu: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Pliki tymczasowe .[#toc-temporary-files] Nette używa buforowania dla kontenera DI, RobotLoader, szablonów itp. Dlatego musisz ustawić ścieżkę do katalogu, w którym będzie przechowywany cache: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` W systemach Linux lub macOS ustaw katalogi `log/` i `temp/` na uprawnienia do [zapisu |nette:troubleshooting#Setting-Directory-Permissions]. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Zazwyczaj będziemy chcieli automatycznie załadować klasy za pomocą [RobotLoader |robot-loader:], więc musimy go uruchomić i kazać mu załadować klasy z katalogu, w którym znajduje się `Bootstrap.php` (czyli `__DIR__`), oraz z wszelkich podkatalogów: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Strefa czasowa .[#toc-timezone] Domyślną strefę czasową można ustawić za pośrednictwem konfiguratora. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ W trybie deweloperskim kontener jest automatycznie aktualizowany przy każdej zm Pliki konfiguracyjne są ładowane za pomocą `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Jeśli chcemy dodać więcej plików konfiguracyjnych, możemy wywołać funkcję `addConfig()` wielokrotnie. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Parametry statyczne .[#toc-static-parameters] Parametry wykorzystywane w plikach konfiguracyjnych można zdefiniować [w sekcji `parameters` |dependency-injection:configuration#parameters], a także przekazać (lub nadpisać) za pomocą metody `addStaticParameters()` (posiada ona alias `addParameters()`). Co ważne, różne wartości parametrów spowodują wygenerowanie dodatkowych kontenerów DI, czyli dodatkowych klas. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Parametry dynamiczne .[#toc-dynamic-parameters] Do kontenera możemy również dodać parametry dynamiczne, których różne wartości, w przeciwieństwie do parametrów statycznych, nie będą powodowały generowania nowych kontenerów DI. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Możemy po prostu dodać np. zmienne środowiskowe, do których następnie możemy się odwołać w konfiguracji pisząc `%env.variable%`. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: A w bootstrapie wstawiamy obiekt do kontenera: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Różne środowiska .[#toc-different-environments] =============================================== -Zapraszamy do dostosowania klasy Bootstrap do swoich potrzeb. Możesz dodać parametry do metody `boot()`, aby odróżnić projekty internetowe, lub dodać inne metody, takie jak `bootForTests()`, która inicjalizuje środowisko dla testów jednostkowych, `bootForCli()` dla skryptów wywoływanych z linii poleceń itp. +Nie wahaj się dostosować klasy `Bootstrap` do swoich potrzeb. Możesz dodać parametry do metody `bootWebApplication()`, aby rozróżnić projekty internetowe. Alternatywnie można dodać inne metody, takie jak `bootTestEnvironment()` do inicjalizacji środowiska dla testów jednostkowych, `bootConsoleApplication()` dla skryptów wywoływanych z wiersza poleceń itp. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container +{ + Tester\Environment::setup(); // Inicjalizacja testera sieci + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container { - $configurator = self::boot(); - Tester\Environment::setup(); // inicializace Nette Testeru - return $configurator; + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/pl/components.texy b/application/pl/components.texy index 740e5f919e..21cbd673e9 100644 --- a/application/pl/components.texy +++ b/application/pl/components.texy @@ -230,6 +230,28 @@ Do szablonu wiadomości te są dostępne w zmiennej `$flashes` jako obiekty `std ``` +Przekierowanie po sygnale .[#toc-redirection-after-a-signal] +============================================================ + +Po przetworzeniu sygnału komponentu często następuje przekierowanie. Sytuacja ta jest podobna do formularzy - po przesłaniu formularza również przekierowujemy, aby zapobiec ponownemu przesłaniu danych po odświeżeniu strony w przeglądarce. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Ponieważ komponent jest elementem wielokrotnego użytku i zwykle nie powinien mieć bezpośredniej zależności od konkretnych prezenterów, metody `redirect()` i `link()` automatycznie interpretują parametr jako sygnał komponentu: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Jeśli konieczne jest przekierowanie do innego prezentera lub akcji, można to zrobić za pośrednictwem prezentera: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Trwałe parametry .[#toc-persistent-parameters] ============================================== @@ -430,7 +452,7 @@ class PaginatingControl extends Control } ``` -Procesem przeciwnym, czyli pobieraniem wartości z persistent properites, zajmuje się metoda `saveState()`. +Procesem przeciwnym, czyli pobieraniem wartości z persistent properties, zajmuje się metoda `saveState()`. Sygnały w głąb .[#toc-signaly-do-hloubky] diff --git a/application/pl/presenters.texy b/application/pl/presenters.texy index 7f366882c7..f35bddf004 100644 --- a/application/pl/presenters.texy +++ b/application/pl/presenters.texy @@ -60,7 +60,7 @@ Podobna metoda `render()`. Podczas gdy `render()` Metoda ma na celu Ważne jest to, że `action()` jest wywoływany przed `render()`więc możemy w nim potencjalnie zmienić dalszy bieg historii, czyli zmienić szablon do wylosowania, a także metodę `render()`który zostanie wywołany. Odbywa się to za pomocą strony `setView('jineView')`. -Do metody przekazywane są parametry z żądania. Możliwe i zalecane jest podawanie typów do parametrów, np. `actionShow(int $id, string $slug = null)` - jeśli w parametrze `id` zabraknie lub nie będzie on liczbą całkowitą, prezenter zwróci [błąd 404 |#Error-404-etc] i wyjdzie. +Do metody przekazywane są parametry z żądania. Możliwe i zalecane jest podawanie typów do parametrów, np. `actionShow(int $id, ?string $slug = null)` - jeśli w parametrze `id` zabraknie lub nie będzie on liczbą całkowitą, prezenter zwróci [błąd 404 |#Error-404-etc] i wyjdzie. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ Wiadomości te są dostępne dla szablonu w zmiennej `$flashes` jako obiekty `st Error 404 i co. .[#toc-error-404-etc] ===================================== -Jeśli żądanie nie może zostać spełnione, na przykład dlatego, że artykuł, który chcemy wyświetlić, nie istnieje w bazie danych, rzucamy błąd 404 za pomocą metody `error(string $message = null, int $httpCode = 404)`. +Jeśli żądanie nie może zostać spełnione, na przykład dlatego, że artykuł, który chcemy wyświetlić, nie istnieje w bazie danych, rzucamy błąd 404 za pomocą metody `error(?string $message = null, int $httpCode = 404)`. ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ Przekierowanie nie nastąpi w przypadku żądań AJAX lub POST, ponieważ spowod Możesz również wywołać kanonizację ręcznie za pomocą metody `canonicalize()`, która przekaże prezentera, akcję i parametry podobnie jak w przypadku metody `link()`. Tworzy link i porównuje go z bieżącym adresem URL. Jeśli się różni, przekierowuje na wygenerowany link. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // přesměruje, pokud $slug se liší od $realSlug diff --git a/application/pt/ajax.texy b/application/pt/ajax.texy index 7eace28064..c2159c60f4 100644 --- a/application/pt/ajax.texy +++ b/application/pt/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Primeiro, você precisa [inicializar |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] a biblioteca: + +```js +naja.initialize(); +``` + Para transformar um link comum (sinal) ou o envio de um formulário em uma solicitação AJAX, basta marcar o respectivo link, formulário ou botão com a classe `ajax`: ```html diff --git a/application/pt/bootstrap.texy b/application/pt/bootstrap.texy index e95d09a093..1428498866 100644 --- a/application/pt/bootstrap.texy +++ b/application/pt/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // O configurador é responsável pela configuração do ambiente e dos serviços do aplicativo. + $this->configurator = new Configurator; + // Defina o diretório para os arquivos temporários gerados pelo Nette (por exemplo, modelos compilados) + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // O Nette é inteligente e o modo de desenvolvimento é ativado automaticamente, + // ou você pode ativá-lo para um endereço IP específico, descomentando a seguinte linha: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Habilita o Tracy: a melhor ferramenta de depuração do tipo "canivete suíço". + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: carrega automaticamente todas as classes no diretório fornecido + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Carregar arquivos de configuração + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -No caso de aplicações web, o arquivo inicial é `index.php`, que está localizado no diretório público `www/`. Ele permite que a classe `Bootstrap` inicialize o ambiente e devolva o `$configurator` que cria o contêiner DI. Em seguida, obtém o serviço `Application`, que executa a aplicação web: +O arquivo inicial para aplicativos Web é `index.php`, localizado no diretório público `www/`. Ele usa a classe `Bootstrap` para inicializar o ambiente e criar um contêiner DI. Em seguida, ele obtém o serviço `Application` do contêiner, que inicia o aplicativo Web: ```php -// inicializar o ambiente + obter objeto Configurador -$configurator = App\Bootstrap::boot(); -// criar um recipiente DI -$container = $configurator->createContainer(); -// Recipiente DI cria um objeto de aplicação Nette +$bootstrap = new App\Bootstrap; +// Inicializar o ambiente + criar um contêiner DI +$container = $bootstrap->bootWebApplication(); +// O contêiner DI cria um objeto Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -// iniciar a aplicação Nette +// Iniciar o aplicativo Nette e tratar a solicitação de entrada $application->run(); ``` @@ -66,19 +91,19 @@ A seleção do modo é feita por autodetecção, de modo que normalmente não h Se você quiser ativar o modo de desenvolvimento em outros casos, por exemplo, para programadores que acessam de um endereço IP específico, você pode usar `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // um ou mais endereços IP +$this->configurator->setDebugMode('23.75.345.200'); // um ou mais endereços IP ``` Definitivamente, recomendamos combinar um endereço IP com um cookie. Armazenaremos um token secreto no cookie `nette-debug`, por exemplo `secret1234`, e o modo de desenvolvimento será ativado para programadores com esta combinação de IP e cookie. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Também podemos desligar completamente o modo desenvolvedor, mesmo para o localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Note que o valor `true` liga o modo desenvolvedor por hard, o que nunca deveria acontecer em um servidor de produção. @@ -90,7 +115,7 @@ Ferramenta de depuração Tracy .[#toc-debugging-tool-tracy] Para facilitar a depuração, vamos acionar a grande ferramenta [Tracy |tracy:]. No modo desenvolvedor ela visualiza os erros e no modo de produção registra os erros no diretório especificado: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Arquivos temporários .[#toc-temporary-files] Nette utiliza o cache para contêiner DI, RobotLoader, modelos, etc. Portanto, é necessário definir o caminho para o diretório onde o cache será armazenado: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` No Linux ou macOS, defina as [permissões de escrita |nette:troubleshooting#Setting directory permissions] para os diretórios `log/` e `temp/`. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Normalmente, queremos carregar automaticamente as classes usando [o RobotLoader |robot-loader:], então temos que iniciá-lo e deixá-lo carregar classes do diretório onde se encontra `Bootstrap.php` (ou seja, `__DIR__`) e todos os seus subdiretórios: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Fuso horário .[#toc-timezone] O Configurador permite que você especifique um fuso horário para sua aplicação. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ No modo de desenvolvimento, o recipiente é atualizado automaticamente cada vez Os arquivos de configuração são carregados usando `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` O método `addConfig()` pode ser chamado várias vezes para adicionar vários arquivos. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Parâmetros estáticos .[#toc-static-parameters] Os parâmetros usados nos arquivos de configuração podem ser definidos [na seção `parameters` |dependency-injection:configuration#parameters] e também passados (ou sobrescritos) pelo método `addStaticParameters()` (tem o pseudônimo `addParameters()`). É importante que diferentes valores de parâmetros causem a geração de recipientes DI adicionais, ou seja, classes adicionais. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Parâmetros dinâmicos .[#toc-dynamic-parameters] Também podemos adicionar parâmetros dinâmicos ao recipiente, seus diferentes valores, ao contrário dos parâmetros estáticos, não causarão a geração de novos recipientes DI. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ As variáveis ambientais poderiam ser facilmente disponibilizadas usando parâmetros dinâmicos. Podemos acessá-las via `%env.variable%` em arquivos de configuração. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Criar uma nova instância e inseri-la no bootstrap: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Diferentes Ambientes .[#toc-different-environments] =================================================== -Sinta-se à vontade para personalizar a classe `Bootstrap` de acordo com suas necessidades. Você pode adicionar parâmetros ao método `boot()` para diferenciar projetos web, ou adicionar outros métodos, tais como `bootForTests()`, que inicializa o ambiente para testes unitários, `bootForCli()` para scripts chamados a partir da linha de comando, e assim por diante. +Não hesite em personalizar a classe `Bootstrap` de acordo com suas necessidades. Você pode adicionar parâmetros ao método `bootWebApplication()` para diferenciar os projetos da Web. Como alternativa, você pode adicionar outros métodos, como `bootTestEnvironment()` para inicializar o ambiente para testes de unidade, `bootConsoleApplication()` para scripts chamados pela linha de comando e assim por diante. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container +{ + Tester\Environment::setup(); // Inicialização do Nette Tester + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container { - $configurator = self::boot(); - Tester\Environment::setup(); // Nette Tester initialization - return $configurator; + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/pt/components.texy b/application/pt/components.texy index 9cfe7557f5..502dc15cdc 100644 --- a/application/pt/components.texy +++ b/application/pt/components.texy @@ -230,6 +230,28 @@ No modelo, estas mensagens estão disponíveis na variável `$flashes` como obje ``` +Redirecionamento após um sinal .[#toc-redirection-after-a-signal] +================================================================= + +Depois de processar um sinal de componente, o redirecionamento geralmente é feito. Essa situação é semelhante à dos formulários: após o envio de um formulário, também redirecionamos para evitar o reenvio de dados quando a página é atualizada no navegador. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Como um componente é um elemento reutilizável e normalmente não deve ter uma dependência direta de apresentadores específicos, os métodos `redirect()` e `link()` interpretam automaticamente o parâmetro como um sinal de componente: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Se precisar redirecionar para um apresentador ou ação diferente, você poderá fazer isso por meio do apresentador: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Parâmetros Persistentes .[#toc-persistent-parameters] ===================================================== @@ -430,7 +452,7 @@ class PaginatingControl extends Control } ``` -O processo oposto, ou seja, a coleta de valores de properites persistentes, é tratado pelo método `saveState()`. +O processo oposto, ou seja, a coleta de valores de properties persistentes, é tratado pelo método `saveState()`. Sinais em profundidade .[#toc-signals-in-depth] diff --git a/application/pt/presenters.texy b/application/pt/presenters.texy index 58df8e8539..b6537f16c6 100644 --- a/application/pt/presenters.texy +++ b/application/pt/presenters.texy @@ -60,7 +60,7 @@ Semelhante ao método `render()`. Enquanto `render()` é destinado a É importante que `action()` é chamado antes `render()`Assim, dentro dele podemos possivelmente mudar o próximo ciclo de vida, ou seja, mudar o modelo que será apresentado e também o método `render()` que será chamado, usando `setView('otherView')`. -Os parâmetros do pedido são passados para o método. É possível e recomendado especificar tipos para os parâmetros, por exemplo `actionShow(int $id, string $slug = null)` - se o parâmetro `id` estiver faltando ou se não for um número inteiro, o apresentador retorna o [erro 404 |#Error 404 etc.] e encerra a operação. +Os parâmetros do pedido são passados para o método. É possível e recomendado especificar tipos para os parâmetros, por exemplo `actionShow(int $id, ?string $slug = null)` - se o parâmetro `id` estiver faltando ou se não for um número inteiro, o apresentador retorna o [erro 404 |#Error 404 etc.] e encerra a operação. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ No modelo, estas mensagens estão disponíveis na variável `$flashes` como obje Erro 404 etc. .[#toc-error-404-etc] =================================== -Quando não pudermos atender ao pedido porque, por exemplo, o artigo que queremos exibir não existe no banco de dados, vamos jogar fora o erro 404 usando o método `error(string $message = null, int $httpCode = 404)`, que representa o erro HTTP 404: +Quando não pudermos atender ao pedido porque, por exemplo, o artigo que queremos exibir não existe no banco de dados, vamos jogar fora o erro 404 usando o método `error(?string $message = null, int $httpCode = 404)`, que representa o erro HTTP 404: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ O redirecionamento não ocorre com um pedido AJAX ou POST porque resultaria em p Você também pode invocar a canonização manualmente usando o método `canonicalize()`, que, como o método `link()`, recebe o apresentador, ações e parâmetros como argumentos. Ele cria um link e o compara com a URL atual. Se for diferente, ele se redireciona para o link gerado. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // redireciona se $slug for diferente de $realSlug diff --git a/application/ro/ajax.texy b/application/ro/ajax.texy index 3f20c912bc..03eec3fac5 100644 --- a/application/ro/ajax.texy +++ b/application/ro/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Mai întâi trebuie să [inițializați |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] biblioteca: + +```js +naja.initialize(); +``` + Pentru a transforma un link obișnuit (semnal) sau un formular de trimitere într-o cerere AJAX, este suficient să marcați link-ul, formularul sau butonul respectiv cu clasa `ajax`: ```html diff --git a/application/ro/bootstrap.texy b/application/ro/bootstrap.texy index 9daa091f0e..97b1a1fe30 100644 --- a/application/ro/bootstrap.texy +++ b/application/ro/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Configuratorul este responsabil de configurarea mediului și a serviciilor aplicației. + $this->configurator = new Configurator; + // Setați directorul pentru fișierele temporare generate de Nette (de exemplu, șabloane compilate) + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette este inteligent, iar modul de dezvoltare se activează automat, + // sau îl puteți activa pentru o anumită adresă IP prin decomentarea următoarei linii: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Activează Tracy: instrumentul suprem de depanare "swiss army knife". + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: Încarcă automat toate clasele din directorul dat + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Încarcă fișierele de configurare + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -În cazul aplicațiilor web, fișierul inițial este `index.php`, care se află în directorul public `www/`. Acesta permite clasei `Bootstrap` să inițializeze mediul și să returneze `$configurator` care creează containerul DI. Apoi se obține serviciul `Application`, care execută aplicația web: +Fișierul inițial pentru aplicațiile web este `index.php`, situat în directorul public `www/`. Acesta utilizează clasa `Bootstrap` pentru a inițializa mediul și a crea un container DI. Apoi, obține serviciul `Application` din container, care lansează aplicația web: ```php -// inițializarea mediului + obținerea obiectului Configurator -$configurator = App\Bootstrap::boot(); -// creați un container DI -$container = $configurator->createContainer(); -// containerul DI creează un obiect Nette\Application\Application +$bootstrap = new App\Bootstrap; +// Inițializarea mediului + crearea unui container DI +$container = $bootstrap->bootWebApplication(); +// Containerul DI creează un obiect Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -// pornește aplicația Nette +// Porniți aplicația Nette și tratați cererea de intrare $application->run(); ``` @@ -66,19 +91,19 @@ Selectarea modului se face prin autodetecție, astfel încât, de obicei, nu est Dacă doriți să activați modul de dezvoltare în alte cazuri, de exemplu, pentru programatorii care accesează de la o anumită adresă IP, puteți utiliza `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // una sau mai multe adrese IP +$this->configurator->setDebugMode('23.75.345.200'); // una sau mai multe adrese IP ``` Vă recomandăm cu siguranță să combinați o adresă IP cu un cookie. Vom stoca un token secret în cookie-ul `nette-debug`, de exemplu `secret1234`, iar modul de dezvoltare va fi activat pentru programatorii cu această combinație de IP și cookie. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` De asemenea, putem dezactiva complet modul de dezvoltare, chiar și pentru localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Rețineți că valoarea `true` activează modul dezvoltator din greu, ceea ce nu ar trebui să se întâmple niciodată pe un server de producție. @@ -90,7 +115,7 @@ Instrumentul de depanare Tracy .[#toc-debugging-tool-tracy] Pentru o depanare mai ușoară, vom porni minunata unealtă [Tracy |tracy:]. În modul dezvoltator, acesta vizualizează erorile, iar în modul de producție înregistrează erorile în directorul specificat: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Temporary Files .[#toc-temporary-files] Nette utilizează memoria cache pentru DI container, RobotLoader, șabloane etc. Prin urmare, este necesar să setați calea către directorul în care va fi stocată memoria cache: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` Pe Linux sau macOS, setați [permisiunile de scriere |nette:troubleshooting#Setting directory permissions] pentru directoarele `log/` și `temp/`. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] De obicei, vom dori să încărcăm automat clasele folosind [RobotLoader |robot-loader:], așa că trebuie să îl pornim și să îl lăsăm să încarce clasele din directorul în care se află `Bootstrap.php` (adică `__DIR__`) și din toate subdirectoarele sale: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Fusul orar .[#toc-timezone] Configurator vă permite să specificați un fus orar pentru aplicația dumneavoastră. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ Fișierele de configurare sunt de obicei scrise în [formatul NEON |neon:format] Fișierele de configurare sunt încărcate utilizând `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Metoda `addConfig()` poate fi apelată de mai multe ori pentru a adăuga mai multe fișiere. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Parametrii statici .[#toc-static-parameters] Parametrii utilizați în fișierele de configurare pot fi definiți [în secțiunea `parameters` |dependency-injection:configuration#parameters] și, de asemenea, pot fi trecuți (sau suprascriși) prin metoda `addStaticParameters()` (are pseudonimul `addParameters()`). Este important ca valorile diferite ale parametrilor să determine generarea de containere DI suplimentare, adică de clase suplimentare. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Parametrii dinamici .[#toc-dynamic-parameters] De asemenea, putem adăuga parametri dinamici la container, valorile lor diferite, spre deosebire de parametrii statici, nu vor determina generarea de noi containere DI. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Variabilele de mediu ar putea fi puse cu ușurință la dispoziție prin intermediul parametrilor dinamici. Le putem accesa prin intermediul `%env.variable%` în fișierele de configurare. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Creați o nouă instanță și inserați-o în bootstrap: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Diferite medii .[#toc-different-environments] ============================================= -Nu ezitați să personalizați clasa `Bootstrap` pentru a se potrivi nevoilor dumneavoastră. Puteți adăuga parametri la metoda `boot()` pentru a diferenția proiectele web sau puteți adăuga alte metode, cum ar fi `bootForTests()`, care inițializează mediul pentru testele unitare, `bootForCli()` pentru scripturile apelate din linia de comandă și așa mai departe. +Nu ezitați să personalizați clasa `Bootstrap` în funcție de nevoile dumneavoastră. Puteți adăuga parametri la metoda `bootWebApplication()` pentru a face diferența între proiectele web. Alternativ, puteți adăuga alte metode, cum ar fi `bootTestEnvironment()` pentru a inițializa mediul pentru testele unitare, `bootConsoleApplication()` pentru scripturile apelate din linia de comandă și așa mai departe. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container { - $configurator = self::boot(); Tester\Environment::setup(); // Inițializarea Nette Tester - return $configurator; + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container +{ + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/ro/components.texy b/application/ro/components.texy index d988ba261f..1d48351bbd 100644 --- a/application/ro/components.texy +++ b/application/ro/components.texy @@ -230,6 +230,28 @@ $this->redirect(/* ... */); // și redirecționarea ``` +Redirecționarea după un semnal .[#toc-redirection-after-a-signal] +================================================================= + +După procesarea unui semnal de componentă, urmează adesea redirecționarea. Această situație este similară formularelor - după trimiterea unui formular, redirecționăm, de asemenea, pentru a preveni retrimiterea datelor atunci când pagina este reîmprospătată în browser. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Deoarece o componentă este un element reutilizabil și de obicei nu ar trebui să aibă o dependență directă de anumiți prezentatori, metodele `redirect()` și `link()` interpretează automat parametrul ca fiind un semnal de componentă: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Dacă trebuie să redirecționați către un alt prezentator sau acțiune, puteți face acest lucru prin intermediul prezentatorului: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Parametrii persistenți .[#toc-persistent-parameters] ==================================================== diff --git a/application/ro/presenters.texy b/application/ro/presenters.texy index ff6009176f..56eef37cb0 100644 --- a/application/ro/presenters.texy +++ b/application/ro/presenters.texy @@ -60,7 +60,7 @@ Similar cu metoda `render()`. În timp ce `render()` este destinată Este important ca `action()` este apelat înainte de `render()`, astfel încât în interiorul acesteia să putem eventual să schimbăm următorul curs al ciclului de viață, adică să schimbăm șablonul care va fi redat și, de asemenea, metoda `render()` care va fi apelată, folosind `setView('otherView')`. -Parametrii din cerere sunt trecuți către metodă. Este posibil și recomandat să se precizeze tipurile pentru parametri, de exemplu `actionShow(int $id, string $slug = null)` - dacă parametrul `id` lipsește sau dacă nu este un număr întreg, prezentatorul returnează [eroarea 404 |#Error 404 etc.] și încheie operațiunea. +Parametrii din cerere sunt trecuți către metodă. Este posibil și recomandat să se precizeze tipurile pentru parametri, de exemplu `actionShow(int $id, ?string $slug = null)` - dacă parametrul `id` lipsește sau dacă nu este un număr întreg, prezentatorul returnează [eroarea 404 |#Error 404 etc.] și încheie operațiunea. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ $this->redirect(/* ... */); Eroare 404 etc. .[#toc-error-404-etc] ===================================== -Atunci când nu putem îndeplini cererea deoarece, de exemplu, articolul pe care dorim să îl afișăm nu există în baza de date, vom arunca eroarea 404 folosind metoda `error(string $message = null, int $httpCode = 404)`, care reprezintă eroarea HTTP 404: +Atunci când nu putem îndeplini cererea deoarece, de exemplu, articolul pe care dorim să îl afișăm nu există în baza de date, vom arunca eroarea 404 folosind metoda `error(?string $message = null, int $httpCode = 404)`, care reprezintă eroarea HTTP 404: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ Redirecționarea nu are loc cu o cerere AJAX sau POST, deoarece ar duce la pierd De asemenea, puteți invoca manual canonizarea folosind metoda `canonicalize()`, care, ca și metoda `link()`, primește ca argumente prezentatorul, acțiunile și parametrii. Aceasta creează o legătură și o compară cu URL-ul curent. Dacă este diferit, redirecționează către link-ul generat. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // redirecționează dacă $slug este diferit de $realSlug diff --git a/application/ru/ajax.texy b/application/ru/ajax.texy index bed9143e1e..ffcb026607 100644 --- a/application/ru/ajax.texy +++ b/application/ru/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Сначала нужно [инициализировать |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] библиотеку: + +```js +naja.initialize(); +``` + Чтобы превратить обычную ссылку (сигнал) или отправку формы в AJAX-запрос, достаточно пометить соответствующую ссылку, форму или кнопку классом `ajax`: ```html diff --git a/application/ru/bootstrap.texy b/application/ru/bootstrap.texy index a0036cf7a1..82e18f8d6b 100644 --- a/application/ru/bootstrap.texy +++ b/application/ru/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Конфигуратор отвечает за настройку среды и служб приложения. + $this->configurator = new Configurator; + // Задайте директорию для временных файлов, создаваемых Nette (например, скомпилированных шаблонов). + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette умный, и режим разработки включается автоматически, + // или вы можете включить его для определенного IP-адреса, откомментировав следующую строку: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Включает Tracy: основной инструмент отладки в виде "армейского ножа". + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: автозагрузка всех классов в заданной директории + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Загрузка конфигурационных файлов + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php ========= -В случае веб-приложений начальным файлом является `index.php`, который находится в общедоступном каталоге `www/`. Он позволяет классу `Bootstrap` инициализировать среду и возвращает `$configurator`, который создает контейнер DI. Затем он получает сервис `Application`, запускающий веб-приложение: +Начальным файлом для веб-приложений является `index.php`, расположенный в публичной директории `www/`. Он использует класс `Bootstrap` для инициализации среды и создания контейнера DI. Затем он получает из контейнера службу `Application`, которая запускает веб-приложение: ```php -// инициализируем среду + получаем объект Configurator -$configurator = App\Bootstrap::boot(); -// создаем DI-контейнер -$container = $configurator->createContainer(); -// DI-контейнер создайет объект Nette\Application\Application +$bootstrap = new App\Bootstrap; +// Инициализация среды + создание DI-контейнера +$container = $bootstrap->bootWebApplication(); +// DI-контейнер создает объект Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -// запускаем приложение Nette +// Запуск приложения Nette и обработка входящего запроса $application->run(); ``` @@ -66,19 +91,19 @@ Nette различает два основных режима, в которых Если вы хотите включить режим разработки в других случаях, например, для программистов, получающих доступ с определенного IP-адреса, вы можете использовать `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // один или более IP-адресов +$this->configurator->setDebugMode('23.75.345.200'); // один или более IP-адресов ``` Мы определенно рекомендуем сочетать IP-адрес с файлом cookie. Мы будем хранить секретный токен в cookie `nette-debug', например, `secret1234`, и режим разработки будет активирован для программистов с такой комбинацией IP и cookie. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Можно полностью отключить режим разработчика, даже для localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Обратите внимание, что значение `true` жестко включает режим разработчика, чего никогда не должно происходить на рабочем сервере. @@ -90,7 +115,7 @@ $configurator->setDebugMode(false); Для облегчения отладки мы включим замечательный инструмент [Tracy |tracy:]. В режиме разработчика он визуализирует ошибки, а в режиме производства — записывает ошибки в указанный каталог: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ $configurator->enableTracy($rootDir . '/log'); Nette использует кэш для DI-контейнера, RobotLoader, шаблонов и т. д. Поэтому необходимо задать путь к директории, где будет храниться кэш: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` В Linux или macOS установите [права на запись |nette:troubleshooting#Setting-Directory-Permissions] для каталогов `log/` и `temp/`. @@ -112,7 +137,7 @@ RobotLoader Обычно мы хотим автоматически загружать классы с помощью [RobotLoader |robot-loader:], поэтому мы должны запустить его и позволить ему загрузить классы из каталога, в котором находится `Bootstrap.php` (т. е. `__DIR__`) и все его подкаталоги: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ $configurator->createRobotLoader() Configurator позволяет указать часовой пояс для вашего приложения. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ $configurator->setTimeZone('Europe/Prague'); Файлы конфигурации загружаются с помощью `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Метод `addConfig()` может быть вызван несколько раз для добавления нескольких файлов. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ if (PHP_SAPI === 'cli') { Параметры, используемые в файлах конфигурации, могут быть определены [в секции `parameters`|dependency-injection:configuration#parameters] и подхвачены (или перезаписаны) методом `addStaticParameters()` (у него есть алиас `addParameters()`). Важно, что разные значения параметров вызывают генерацию дополнительных DI-контейнеров, то есть дополнительных классов. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ $configurator->addStaticParameters([ Можно также добавить динамические параметры в контейнер. Их разные значения, в отличие от статических параметров, не приведут к генерации новых DI-контейнеров. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Переменные среды могут быть легко доступны с использованием динамических параметров. Мы можем получить доступ к ним через `%env.variable%` в файлах конфигурации. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Создаём новый экземпляр и вставляем его в Bootstrap: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Разные среды .[#toc-different-environments] =========================================== -Не стесняйтесь настроить класс `Bootstrap` в соответствии с вашими потребностями. Вы можете добавлять параметры в метод `boot()` для разделения веб-проектов, или добавлять другие методы, такие как `bootForTests()`, которые инициализируют среду для модульных тестов, `bootForCli()` для скриптов, вызываемых из командной строки, и так далее. +Не стесняйтесь настраивать класс `Bootstrap` в соответствии с вашими потребностями. Вы можете добавить параметры в метод `bootWebApplication()`, чтобы различать веб-проекты. Также можно добавить другие методы, например `bootTestEnvironment()` для инициализации окружения для модульных тестов, `bootConsoleApplication()` для скриптов, вызываемых из командной строки, и так далее. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container +{ + Tester\Environment::setup(); // Инициализация тестера Nette Tester + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container { - $configurator = self::boot(); - Tester\Environment::setup(); // Инициализация Nette Tester - return $configurator; + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/ru/components.texy b/application/ru/components.texy index 9c9fa01111..31c39481d0 100644 --- a/application/ru/components.texy +++ b/application/ru/components.texy @@ -230,6 +230,28 @@ $this->redirect(/* ... */); // делаем редирект ``` +Перенаправление после сигнала .[#toc-redirection-after-a-signal] +================================================================ + +После обработки сигнала компонента часто следует перенаправление. Эта ситуация похожа на ситуацию с формами - после отправки формы мы также делаем перенаправление, чтобы предотвратить повторную отправку данных при обновлении страницы в браузере. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Поскольку компонент - это многократно используемый элемент и обычно не должен иметь прямой зависимости от конкретных презентаторов, методы `redirect()` и `link()` автоматически интерпретируют параметр как сигнал компонента: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Если вам нужно перенаправить на другого ведущего или действие, вы можете сделать это через ведущего: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Постоянные параметры .[#toc-persistent-parameters] ================================================== diff --git a/application/ru/presenters.texy b/application/ru/presenters.texy index e2341e5446..ac48e3a344 100644 --- a/application/ru/presenters.texy +++ b/application/ru/presenters.texy @@ -60,7 +60,7 @@ class ArticlePresenter extends Nette\Application\UI\Presenter Важно, что `action()` вызывается перед `render()`, поэтому внутри него мы можем, возможно, изменить следующий ход жизненного цикла, т. е. изменить шаблон, который будет отображаться, а также метод `render()`, который будет вызываться, используя `setView('otherView')`. -В метод передаются параметры из запроса. Можно и рекомендуется указывать типы для параметров, например `actionShow(int $id, string $slug = null)` — если параметр `id` отсутствует или если он не является целым числом, презентер возвращает [ошибку 404|#Error-404-etc] и завершает операцию. +В метод передаются параметры из запроса. Можно и рекомендуется указывать типы для параметров, например `actionShow(int $id, ?string $slug = null)` — если параметр `id` отсутствует или если он не является целым числом, презентер возвращает [ошибку 404|#Error-404-etc] и завершает операцию. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ $this->redirect(/* ... */); Ошибка 404 и т. д. .[#toc-error-404-etc] ======================================== -Когда мы не можем выполнить запрос, потому что, например, статья, которую мы хотим отобразить, не существует в базе данных, мы выбросим ошибку 404, используя метод `error(string $message = null, int $httpCode = 404)`, который представляет HTTP-ошибку 404: +Когда мы не можем выполнить запрос, потому что, например, статья, которую мы хотим отобразить, не существует в базе данных, мы выбросим ошибку 404, используя метод `error(?string $message = null, int $httpCode = 404)`, который представляет HTTP-ошибку 404: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ class ProductPresenter extends Nette\Application\UI\Presenter Вы также можете вызвать канонизацию вручную с помощью метода `canonicalize()`, который, как и метод `link()`, получает в качестве аргументов презентера, действия и параметры. Он создает ссылку и сравнивает её с текущим URL. Если они отличаются, то происходит перенаправление на сгенерированную ссылку. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // перенаправляет, если $slug отличается от $realSlug diff --git a/application/sl/ajax.texy b/application/sl/ajax.texy index bfbc97906b..320e94b27c 100644 --- a/application/sl/ajax.texy +++ b/application/sl/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Najprej morate knjižnico [inicializirati |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization]: + +```js +naja.initialize(); +``` + Če želite, da običajna povezava (signal) ali oddaja obrazca postane zahteva AJAX, preprosto označite ustrezno povezavo, obrazec ali gumb z razredom `ajax`: ```html diff --git a/application/sl/bootstrap.texy b/application/sl/bootstrap.texy index 81ef42aa3d..33f36e50e8 100644 --- a/application/sl/bootstrap.texy +++ b/application/sl/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Konfigurator je odgovoren za nastavitev okolja aplikacije in storitev. + $this->configurator = new Configurator; + // Nastavite imenik za začasne datoteke, ki jih ustvari Nette (npr. sestavljene predloge). + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Program Nette je pameten in razvojni način se vklopi samodejno, + // lahko pa ga za določen naslov IP omogočite tako, da odkomentirate naslednjo vrstico: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Omogoči Tracy: najboljše orodje za razhroščevanje "švicarskega noža". + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: samodejno naloži vse razrede v danem imeniku + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Nalaganje konfiguracijskih datotek + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -Pri spletnih aplikacijah je začetna datoteka `index.php`, ki se nahaja v javnem imeniku `www/`. Omogoča, da razred `Bootstrap` inicializira okolje in vrne `$configurator`, ki ustvari vsebnik DI. Nato pridobi storitev `Application`, ki izvaja spletno aplikacijo: +Začetna datoteka za spletne aplikacije je `index.php`, ki se nahaja v javnem imeniku `www/`. Uporablja razred `Bootstrap` za inicializacijo okolja in ustvarjanje vsebnika DI. Nato iz vsebnika pridobi storitev `Application`, ki zažene spletno aplikacijo: ```php -// inicializacija okolja + pridobitev predmeta Configurator -$configurator = App\Bootstrap::boot(); -// ustvarite vsebnik DI -$container = $configurator->createContainer(); +$bootstrap = new App\Bootstrap; +// Inicializacija okolja + ustvarjanje vsebnika DI +$container = $bootstrap->bootWebApplication(); // vsebnik DI ustvari objekt Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -// zaženite aplikacijo Nette +// Zagnati aplikacijo Nette in obdelati vhodno zahtevo $application->run(); ``` @@ -66,19 +91,19 @@ Izbira načina poteka s samodejnim zaznavanjem, zato običajno ni treba ničesar Če želite omogočiti razvojni način v drugih primerih, na primer za programerje, ki dostopajo z določenega naslova IP, lahko uporabite `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // enega ali več naslovov IP. +$this->configurator->setDebugMode('23.75.345.200'); // enega ali več naslovov IP. ``` Vsekakor priporočamo kombinacijo naslova IP s piškotkom. V piškotek `nette-debug` bomo shranili tajni žeton, npr. `secret1234`, razvojni način pa bo aktiviran za programerje s to kombinacijo IP in piškotka. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Razvojni način lahko tudi popolnoma izklopimo, tudi za lokalni gostitelj: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Vrednost `true` vklopi način za razvijalce, kar se na produkcijskem strežniku ne bi smelo zgoditi. @@ -90,7 +115,7 @@ Orodje za razhroščevanje Tracy .[#toc-debugging-tool-tracy] Za lažje razhroščevanje bomo vklopili odlično orodje [Tracy |tracy:]. V načinu za razvijalce vizualizira napake, v produkcijskem načinu pa napake beleži v določen imenik: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Začasne datoteke .[#toc-temporary-files] Nette uporablja predpomnilnik za vsebnik DI, RobotLoader, predloge itd. Zato je treba nastaviti pot do imenika, v katerem bo shranjen predpomnilnik: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` V operacijskem sistemu Linux ali macOS nastavite [dovoljenja za pisanje za |nette:troubleshooting#Setting directory permissions] imenike `log/` in `temp/`. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Običajno bomo želeli samodejno naložiti razrede z [RobotLoaderjem |robot-loader:], zato ga moramo zagnati in mu omogočiti, da naloži razrede iz imenika, kjer se nahaja `Bootstrap.php` (tj. `__DIR__`), in vseh njegovih podimenikov: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Druga možnost je, da uporabimo samo samodejno nalaganje [Composer |best-practic Configurator vam omogoča, da določite časovni pas za svojo aplikacijo. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ V razvojnem načinu se vsebnik samodejno posodobi vsakič, ko spremenite kodo al Konfiguracijske datoteke se naložijo z uporabo `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Metodo `addConfig()` lahko za dodajanje več datotek pokličete večkrat. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Statični parametri .[#toc-static-parameters] Parametre, ki se uporabljajo v konfiguracijskih datotekah, je mogoče opredeliti [v razdelku `parameters` |dependency-injection:configuration#parameters] in jih tudi posredovati (ali prepisati) z metodo `addStaticParameters()` (ima vzdevek `addParameters()`). Pomembno je, da različne vrednosti parametrov povzročijo generiranje dodatnih vsebnikov DI, tj. dodatnih razredov. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Dinamični parametri .[#toc-dynamic-parameters] Kontejnerju lahko dodamo tudi dinamične parametre, katerih različne vrednosti za razliko od statičnih parametrov ne bodo povzročile generiranja novih DI kontejnerjev. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Spremenljivke okolja bi lahko preprosto dali na voljo z dinamičnimi parametri. Do njih lahko dostopamo prek spletne strani `%env.variable%` v konfiguracijskih datotekah. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Ustvarite nov primerek in ga vstavite v bootstrap: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Različna okolja .[#toc-different-environments] ============================================== -Razred `Bootstrap` lahko prilagodite svojim potrebam. Metodi `boot()` lahko dodate parametre za razlikovanje med spletnimi projekti ali dodate druge metode, kot so `bootForTests()`, ki inicializira okolje za teste enote, `bootForCli()` za skripte, ki se kličejo iz ukazne vrstice, in tako naprej. +Ne oklevajte, če želite razred `Bootstrap` prilagoditi svojim potrebam. Metodi `bootWebApplication()` lahko dodate parametre za razlikovanje med spletnimi projekti. Lahko pa dodate tudi druge metode, na primer `bootTestEnvironment()` za inicializacijo okolja za teste enote, `bootConsoleApplication()` za skripte, ki se kličejo iz ukazne vrstice, in tako naprej. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container { - $configurator = self::boot(); Tester\Environment::setup(); // Inicializacija Nette Testerja - return $configurator; + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container +{ + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/sl/components.texy b/application/sl/components.texy index dd8ce1e37d..344d660993 100644 --- a/application/sl/components.texy +++ b/application/sl/components.texy @@ -230,6 +230,28 @@ V predlogi so ta sporočila na voljo v spremenljivki `$flashes` kot objekti `std ``` +Preusmeritev po signalu .[#toc-redirection-after-a-signal] +========================================================== + +Po obdelavi signala komponente pogosto sledi preusmeritev. Ta situacija je podobna obrazcem - po oddaji obrazca prav tako preusmerimo, da preprečimo ponovno oddajo podatkov ob osvežitvi strani v brskalniku. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Ker je komponenta element za večkratno uporabo in običajno ne sme biti neposredno odvisna od določenih predstavnikov, metodi `redirect()` in `link()` samodejno interpretirata parameter kot signal komponente: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Če želite preusmeriti na drug predstavnik ali dejanje, lahko to storite prek predstavnika: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Trajni parametri .[#toc-persistent-parameters] ============================================== diff --git a/application/sl/presenters.texy b/application/sl/presenters.texy index b5b538b2a2..1f1e6b993b 100644 --- a/application/sl/presenters.texy +++ b/application/sl/presenters.texy @@ -60,7 +60,7 @@ Podobno kot pri metodi `render()`. Medtem ko `render()` je namenjena Pomembno je, da `action()` se pokliče pred `render()`, tako da lahko znotraj njega morebiti spremenimo naslednji potek življenjskega cikla, tj. spremenimo predlogo, ki se bo izrisala, in tudi metodo `render()` ki bo poklicana, z uporabo `setView('otherView')`. -Parametri iz zahteve se posredujejo metodi. Za parametre je mogoče in priporočljivo določiti tipe, npr. `actionShow(int $id, string $slug = null)` - če parameter `id` manjka ali če ni celo število, predstavnik vrne [napako 404 |#Error 404 etc.] in zaključi operacijo. +Parametri iz zahteve se posredujejo metodi. Za parametre je mogoče in priporočljivo določiti tipe, npr. `actionShow(int $id, ?string $slug = null)` - če parameter `id` manjka ali če ni celo število, predstavnik vrne [napako 404 |#Error 404 etc.] in zaključi operacijo. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ V predlogi so ta sporočila na voljo v spremenljivki `$flashes` kot objekti `std Napaka 404 itd. .[#toc-error-404-etc] ===================================== -Kadar ne moremo izpolniti zahteve, ker na primer članek, ki ga želimo prikazati, ne obstaja v zbirki podatkov, bomo z metodo `error(string $message = null, int $httpCode = 404)`, ki predstavlja napako HTTP 404, vrgli napako 404: +Kadar ne moremo izpolniti zahteve, ker na primer članek, ki ga želimo prikazati, ne obstaja v zbirki podatkov, bomo z metodo `error(?string $message = null, int $httpCode = 404)`, ki predstavlja napako HTTP 404, vrgli napako 404: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ Preusmeritev se ne izvede pri zahtevi AJAX ali POST, ker bi povzročila izgubo p Kanonizacijo lahko sprožite tudi ročno z metodo `canonicalize()`, ki tako kot metoda `link()` kot argumente prejme predstavnika, dejanja in parametre. Ustvari povezavo in jo primerja s trenutnim naslovom URL. Če se razlikuje, preusmeri na ustvarjeno povezavo. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // preusmeri, če se $slug razlikuje od $realSlug diff --git a/application/tr/ajax.texy b/application/tr/ajax.texy index 05804fd81c..007283e44d 100644 --- a/application/tr/ajax.texy +++ b/application/tr/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Öncelikle kütüphaneyi [başlatmanız |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] gerekir: + +```js +naja.initialize(); +``` + Sıradan bir bağlantıyı (sinyal) veya form gönderimini AJAX isteği haline getirmek için ilgili bağlantıyı, formu veya düğmeyi `ajax` sınıfıyla işaretlemeniz yeterlidir: ```html diff --git a/application/tr/bootstrap.texy b/application/tr/bootstrap.texy index 89a829e55b..1513e7fe3a 100644 --- a/application/tr/bootstrap.texy +++ b/application/tr/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Yapılandırıcı, uygulama ortamını ve hizmetlerini ayarlamaktan sorumludur. + $this->configurator = new Configurator; + // Nette tarafından oluşturulan geçici dosyalar için dizini ayarlayın (örn. derlenmiş şablonlar) + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette akıllıdır ve geliştirme modu otomatik olarak açılır, + // ya da aşağıdaki satırın yorumunu kaldırarak belirli bir IP adresi için etkinleştirebilirsiniz: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Tracy'yi etkinleştirir: nihai "İsviçre çakısı" hata ayıklama aracı. + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: verilen dizindeki tüm sınıfları otomatik yükler + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Yapılandırma dosyalarını yükle + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -Web uygulamaları söz konusu olduğunda, başlangıç dosyası `index.php` olup `www/` genel dizininde bulunur. Ortamı başlatmak için `Bootstrap` sınıfına izin verir ve DI konteynerini oluşturan `$configurator` sınıfını döndürür. Daha sonra web uygulamasını çalıştıran `Application` hizmetini elde eder: +Web uygulamaları için başlangıç dosyası `index.php`, `www/` genel dizininde bulunur. Ortamı başlatmak ve bir DI konteyneri oluşturmak için `Bootstrap` sınıfını kullanır. Ardından, web uygulamasını başlatan kapsayıcıdan `Application` hizmetini alır: ```php -// ortamı başlat + Configurator nesnesini al -$configurator = App\Bootstrap::boot(); -// bir DI konteyneri oluşturun -$container = $configurator->createContainer(); -// DI container bir Nette\Application\Application nesnesi oluşturur +$bootstrap = new App\Bootstrap; +// Ortamı başlatma + bir DI konteyneri oluşturma +$container = $bootstrap->bootWebApplication(); +// DI konteyneri bir Nette\Application\Application nesnesi oluşturur $application = $container->getByType(Nette\Application\Application::class); -// Nette uygulamasını başlat +// Nette uygulamasını başlatın ve gelen isteği işleyin $application->run(); ``` @@ -66,19 +91,19 @@ Mod seçimi otomatik algılama ile yapılır, bu nedenle genellikle herhangi bir Geliştirme modunu diğer durumlarda, örneğin belirli bir IP adresinden erişen programcılar için etkinleştirmek istiyorsanız, `setDebugMode()` adresini kullanabilirsiniz: ```php -$configurator->setDebugMode('23.75.345.200'); // bir veya daha fazla IP adresi +$this->configurator->setDebugMode('23.75.345.200'); // bir veya daha fazla IP adresi ``` Bir IP adresini bir çerezle birleştirmenizi kesinlikle öneririz. `nette-debug` çerezine gizli bir belirteç depolayacağız, örneğin `secret1234` ve geliştirme modu, bu IP ve çerez kombinasyonuna sahip programcılar için etkinleştirilecektir. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Ayrıca localhost için bile geliştirici modunu tamamen kapatabiliriz: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` `true` değerinin, bir üretim sunucusunda asla gerçekleşmemesi gereken geliştirici modunu zorlayarak açtığını unutmayın. @@ -90,7 +115,7 @@ Hata Ayıklama Aracı Tracy .[#toc-debugging-tool-tracy] Kolay hata ayıklama için harika araç [Tracy'yi |tracy:] açacağız. Geliştirici modunda hataları görselleştirir ve üretim modunda hataları belirtilen dizine kaydeder: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ Geçici Dosyalar .[#toc-temporary-files] Nette, DI konteyneri, RobotLoader, şablonlar vb. için önbelleği kullanır. Bu nedenle, önbelleğin depolanacağı dizinin yolunu ayarlamak gerekir: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` Linux veya macOS üzerinde, `log/` ve `temp/` dizinleri için [yazma izinlerini |nette:troubleshooting#Setting directory permissions] ayarlayın. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Genellikle, [RobotLoader'ı |robot-loader:] kullanarak sınıfları otomatik olarak yüklemek isteyeceğiz, bu yüzden onu başlatmalı ve `Bootstrap.php` 'un bulunduğu dizinden (yani `__DIR__`) ve tüm alt dizinlerinden sınıfları yüklemesine izin vermeliyiz: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ Zaman Dilimi .[#toc-timezone] Yapılandırıcı, uygulamanız için bir saat dilimi belirlemenize olanak tanır. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ Geliştirme modunda, kodu veya yapılandırma dosyalarını her değiştirdiğin Yapılandırma dosyaları `addConfig()` kullanılarak yüklenir: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Birden fazla dosya eklemek için `addConfig()` yöntemi birden fazla kez çağrılabilir. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ Statik Parametreler .[#toc-static-parameters] Yapılandırma dosyalarında kullanılan parametreler [`parameters` bölümünde |dependency-injection:configuration#parameters] tanımlanabilir ve ayrıca `addStaticParameters()` yöntemi ( `addParameters()` takma adı vardır) tarafından geçirilebilir (veya üzerine yazılabilir). Farklı parametre değerlerinin ek DI konteynerlerinin, yani ek sınıfların oluşturulmasına neden olması önemlidir. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ Dinamik Parametreler .[#toc-dynamic-parameters] Konteynere dinamik parametreler de ekleyebiliriz, statik parametrelerin aksine farklı değerleri yeni DI konteynerlerinin oluşturulmasına neden olmaz. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Ortam değişkenleri dinamik parametreler kullanılarak kolayca kullanılabilir hale getirilebilir. Bunlara yapılandırma dosyalarındaki `%env.variable%` adresinden erişebiliriz. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Yeni bir örnek oluşturun ve bootstrap'e ekleyin: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Farklı Ortamlar .[#toc-different-environments] ============================================== -`Bootstrap` sınıfını ihtiyaçlarınıza göre özelleştirmekten çekinmeyin. Web projelerini farklılaştırmak için `boot()` yöntemine parametreler ekleyebilir veya birim testleri için ortamı başlatan `bootForTests()`, komut satırından çağrılan komut dosyaları için `bootForCli()` gibi başka yöntemler ekleyebilirsiniz. + `Bootstrap` sınıfını ihtiyaçlarınıza göre özelleştirmekten çekinmeyin. Web projeleri arasında ayrım yapmak için `bootWebApplication()` yöntemine parametreler ekleyebilirsiniz. Alternatif olarak, birim testleri için ortamı başlatmak üzere `bootTestEnvironment()`, komut satırından çağrılan betikler için `bootConsoleApplication()` gibi başka yöntemler de ekleyebilirsiniz. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container +{ + Tester\Environment::setup(); // Nette Tester başlatma + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container { - $configurator = self::boot(); - Tester\Environment::setup(); // Nette Tester initialization - return $configurator; + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/tr/components.texy b/application/tr/components.texy index 5e1c447262..cae382b8da 100644 --- a/application/tr/components.texy +++ b/application/tr/components.texy @@ -230,6 +230,28 @@ $this->redirect(/* ... */); // ve yeniden yönlendir ``` +Sinyalden Sonra Yeniden Yönlendirme .[#toc-redirection-after-a-signal] +====================================================================== + +Bir bileşen sinyali işlendikten sonra genellikle yeniden yönlendirme yapılır. Bu durum formlara benzer - bir form gönderildikten sonra, sayfa tarayıcıda yenilendiğinde verilerin yeniden gönderilmesini önlemek için de yönlendirme yaparız. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Bir bileşen yeniden kullanılabilir bir öğe olduğundan ve genellikle belirli sunuculara doğrudan bağımlı olmaması gerektiğinden, `redirect()` ve `link()` yöntemleri parametreyi otomatik olarak bir bileşen sinyali olarak yorumlar: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Farklı bir sunum yapan kişiye veya eyleme yönlendirmeniz gerekiyorsa, bunu sunum yapan kişi aracılığıyla yapabilirsiniz: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Kalıcı Parametreler .[#toc-persistent-parameters] ================================================= diff --git a/application/tr/presenters.texy b/application/tr/presenters.texy index 7c862b57b1..78a564da6d 100644 --- a/application/tr/presenters.texy +++ b/application/tr/presenters.texy @@ -60,7 +60,7 @@ Yönteme benzer şekilde `render()`. O sırada `render()` 'de daha s Bu önemlidir `action()` daha önce çağrılır `render()`Bu nedenle, içinde muhtemelen yaşam döngüsünün bir sonraki seyrini değiştirebiliriz, yani oluşturulacak şablonu ve ayrıca yöntemi değiştirebiliriz `render()` `setView('otherView')` kullanılarak çağrılacaktır. -İstekten gelen parametreler yönteme aktarılır. Parametreler için tür belirtmek mümkündür ve önerilir, örneğin `actionShow(int $id, string $slug = null)` - `id` parametresi eksikse veya tamsayı değilse, sunum yapan kişi [404 hatası |#Error 404 etc.] döndürür ve işlemi sonlandırır. +İstekten gelen parametreler yönteme aktarılır. Parametreler için tür belirtmek mümkündür ve önerilir, örneğin `actionShow(int $id, ?string $slug = null)` - `id` parametresi eksikse veya tamsayı değilse, sunum yapan kişi [404 hatası |#Error 404 etc.] döndürür ve işlemi sonlandırır. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ $this->redirect(/* ... */); Hata 404 vb. .[#toc-error-404-etc] ================================== -Örneğin görüntülemek istediğimiz makale veritabanında bulunmadığı için isteği yerine getiremediğimizde, HTTP hatası 404'ü temsil eden `error(string $message = null, int $httpCode = 404)` yöntemini kullanarak 404 hatasını atacağız: +Örneğin görüntülemek istediğimiz makale veritabanında bulunmadığı için isteği yerine getiremediğimizde, HTTP hatası 404'ü temsil eden `error(?string $message = null, int $httpCode = 404)` yöntemini kullanarak 404 hatasını atacağız: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ Yeniden yönlendirme bir AJAX veya POST isteği ile gerçekleşmez çünkü veri Ayrıca, `link()` yöntemi gibi sunum yapan kişiyi, eylemleri ve parametreleri bağımsız değişken olarak alan `canonicalize()` yöntemini kullanarak kanonlaştırmayı manuel olarak da çağırabilirsiniz. Bir bağlantı oluşturur ve bunu geçerli URL ile karşılaştırır. Farklıysa, oluşturulan bağlantıya yönlendirir. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // eğer $slug, $realSlug'dan farklıysa yönlendirir diff --git a/application/uk/ajax.texy b/application/uk/ajax.texy index b6d0aac241..9a6e49c71c 100644 --- a/application/uk/ajax.texy +++ b/application/uk/ajax.texy @@ -77,6 +77,12 @@ npm install naja ``` +Спочатку потрібно [ініціалізувати |https://naja.js.org/#/guide/01-install-setup-naja?id=initialization] бібліотеку: + +```js +naja.initialize(); +``` + Щоб зробити звичайне посилання (сигнал) або відправку форми AJAX-запитом, просто позначте відповідне посилання, форму або кнопку класом `ajax`: ```html diff --git a/application/uk/bootstrap.texy b/application/uk/bootstrap.texy index fa1a842ec0..aef63e390f 100644 --- a/application/uk/bootstrap.texy +++ b/application/uk/bootstrap.texy @@ -20,18 +20,44 @@ use Nette\Bootstrap\Configurator; class Bootstrap { - public static function boot(): Configurator + private Configurator $configurator; + private string $rootDir; + + public function __construct() + { + $this->rootDir = dirname(__DIR__); + // Конфігуратор відповідає за налаштування середовища та служб програми. + $this->configurator = new Configurator; + // Встановіть каталог для тимчасових файлів, що генеруються Nette (наприклад, скомпільовані шаблони) + $this->configurator->setTempDirectory($this->rootDir . '/temp'); + } + + public function bootWebApplication(): Nette\DI\Container { - $rootDir = dirname(__DIR__); - $configurator = new Configurator; - //$configurator->setDebugMode('secret@23.75.345.200'); - $configurator->enableTracy($rootDir . '/log'); - $configurator->setTempDirectory($rootDir . '/temp'); - $configurator->createRobotLoader() + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); + } + + private function initializeEnvironment(): void + { + // Nette розумний, і режим розробки вмикається автоматично, + // або ви можете увімкнути його для певної IP-адреси, не коментуючи наступний рядок: + // $this->configurator->setDebugMode('secret@23.75.345.200'); + + // Вмикає Tracy: найкращий інструмент налагодження "швейцарський армійський ніж". + $this->configurator->enableTracy($this->rootDir . '/log'); + + // RobotLoader: автозавантаження всіх класів у вказаному каталозі + $this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); - $configurator->addConfig($rootDir . '/config/common.neon'); - return $configurator; + } + + private function setupContainer(): void + { + // Завантажити конфігураційні файли + $this->configurator->addConfig($this->rootDir . '/config/common.neon'); } } ``` @@ -40,16 +66,15 @@ class Bootstrap index.php .[#toc-index-php] =========================== -У випадку веб-додатків початковим файлом є `index.php`, який знаходиться у загальнодоступному каталозі `www/`. Він дозволяє класу `Bootstrap` ініціалізувати середовище і повертає `$configurator`, який створює контейнер DI. Потім він отримує сервіс `Application`, який запускає веб-додаток: +Початковим файлом для веб-додатків є `index.php`, розташований у загальнодоступному каталозі `www/`. Він використовує клас `Bootstrap` для ініціалізації середовища і створення DI-контейнера. Потім він отримує сервіс `Application` з контейнера, який запускає веб-додаток: ```php -// ініціалізуємо середовище + отримуємо об'єкт Configurator -$configurator = App\Bootstrap::boot(); -// створюємо DI-контейнер -$container = $configurator->createContainer(); -// DI-контейнер створює об'єкт Nette\Application\Application +$bootstrap = new App\Bootstrap; +// Ініціалізація середовища + створення контейнера DI +$container = $bootstrap->bootWebApplication(); +// Контейнер DI створює об'єкт Nette\Application\Application $application = $container->getByType(Nette\Application\Application::class); -// запускаємо додаток Nette +// Запустіть додаток Nette та обробіть вхідний запит $application->run(); ``` @@ -66,19 +91,19 @@ Nette розрізняє два основні режими, в яких вик Якщо ви хочете ввімкнути режим розробки в інших випадках, наприклад, для програмістів, які отримують доступ з певної IP-адреси, ви можете використовувати `setDebugMode()`: ```php -$configurator->setDebugMode('23.75.345.200'); // одна або більше IP-адрес +$this->configurator->setDebugMode('23.75.345.200'); // одна або більше IP-адрес ``` Ми безумовно рекомендуємо поєднувати IP-адресу з файлом cookie. Ми зберігатимемо секретний токен у cookie `nette-debug', например, `secret1234`, і режим розробки буде активовано для програмістів із такою комбінацією IP і cookie. ```php -$configurator->setDebugMode('secret1234@23.75.345.200'); +$this->configurator->setDebugMode('secret1234@23.75.345.200'); ``` Можна повністю вимкнути режим розробника, навіть для localhost: ```php -$configurator->setDebugMode(false); +$this->configurator->setDebugMode(false); ``` Зверніть увагу, що значення `true` жорстко вмикає режим розробника, чого ніколи не повинно відбуватися на робочому сервері. @@ -90,7 +115,7 @@ $configurator->setDebugMode(false); Для полегшення налагодження ми увімкнемо чудовий інструмент [Tracy |tracy:]. У режимі розробника він візуалізує помилки, а в режимі виробництва - записує помилки в зазначений каталог: ```php -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->enableTracy($this->rootDir . '/log'); ``` @@ -100,7 +125,7 @@ $configurator->enableTracy($rootDir . '/log'); Nette використовує кеш для DI-контейнера, RobotLoader, шаблонів тощо. Тому необхідно задати шлях до директорії, де зберігатиметься кеш: ```php -$configurator->setTempDirectory($rootDir . '/temp'); +$this->configurator->setTempDirectory($this->rootDir . '/temp'); ``` У Linux або macOS встановіть [права на запис |nette:troubleshooting#Setting-Directory-Permissions] для каталогів `log/` і `temp/`. @@ -112,7 +137,7 @@ RobotLoader .[#toc-robotloader] Зазвичай ми хочемо автоматично завантажувати класи за допомогою [RobotLoader |robot-loader:], тому ми повинні запустити його і дозволити йому завантажити класи з каталогу, в якому знаходиться `Bootstrap.php` (тобто `__DIR__`) і всі його підкаталоги: ```php -$configurator->createRobotLoader() +$this->configurator->createRobotLoader() ->addDirectory(__DIR__) ->register(); ``` @@ -126,7 +151,7 @@ $configurator->createRobotLoader() Configurator дає змогу вказати часовий пояс для вашого застосунку. ```php -$configurator->setTimeZone('Europe/Prague'); +$this->configurator->setTimeZone('Europe/Prague'); ``` @@ -143,16 +168,17 @@ $configurator->setTimeZone('Europe/Prague'); Файли конфігурації завантажуються за допомогою `addConfig()`: ```php -$configurator->addConfig($rootDir . '/config/common.neon'); +$this->configurator->addConfig($this->rootDir . '/config/common.neon'); ``` Метод `addConfig()` може бути викликаний кілька разів для додавання декількох файлів. ```php -$configurator->addConfig($rootDir . '/config/common.neon'); -$configurator->addConfig($rootDir . '/config/services.neon'); +$configDir = $this->rootDir . '/config'; +$this->configurator->addConfig($configDir . '/common.neon'); +$this->configurator->addConfig($configDir . '/services.neon'); if (PHP_SAPI === 'cli') { - $configurator->addConfig($rootDir . '/config/cli.php'); + $this->configurator->addConfig($configDir . '/cli.php'); } ``` @@ -169,7 +195,7 @@ if (PHP_SAPI === 'cli') { Параметри, що використовуються у файлах конфігурації, можуть бути визначені [в секції `parameters` |dependency-injection:configuration#parameters] і підхоплені (або перезаписані) методом `addStaticParameters()` (у нього є аліас `addParameters()`). Важливо, що різні значення параметрів викликають генерацію додаткових DI-контейнерів, тобто додаткових класів. ```php -$configurator->addStaticParameters([ +$this->configurator->addStaticParameters([ 'projectId' => 23, ]); ``` @@ -183,7 +209,7 @@ $configurator->addStaticParameters([ Можна також додати динамічні параметри в контейнер. Їхні різні значення, на відміну від статичних параметрів, не призведуть до генерації нових DI-контейнерів. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'remoteIp' => $_SERVER['REMOTE_ADDR'], ]); ``` @@ -191,7 +217,7 @@ $configurator->addDynamicParameters([ Змінні середовища можуть бути легко доступні з використанням динамічних параметрів. Ми можемо отримати доступ до них через `%env.variable%` у файлах конфігурації. ```php -$configurator->addDynamicParameters([ +$this->configurator->addDynamicParameters([ 'env' => getenv(), ]); ``` @@ -226,7 +252,7 @@ services: Створюємо новий екземпляр і вставляємо його в Bootstrap: ```php -$configurator->addServices([ +$this->configurator->addServices([ 'myservice' => new App\Model\MyCustomService('foobar'), ]); ``` @@ -235,13 +261,21 @@ $configurator->addServices([ Різні середовища .[#toc-different-environments] =============================================== -Не соромтеся налаштувати клас `Bootstrap` відповідно до ваших потреб. Ви можете додавати параметри до методу `boot()` для розділення веб-проєктів, або додавати інші методи, як-от `bootForTests()`, які ініціалізують середовище для модульних тестів, `bootForCli()` для скриптів, що викликаються з командного рядка, і так далі. +Не соромтеся налаштовувати клас `Bootstrap` відповідно до ваших потреб. Ви можете додати параметри до методу `bootWebApplication()`, щоб розрізняти веб-проекти. Крім того, ви можете додати інші методи, такі як `bootTestEnvironment()` для ініціалізації середовища для модульних тестів, `bootConsoleApplication()` для скриптів, що викликаються з командного рядка, і так далі. ```php -public static function bootForTests(): Configurator +public function bootTestEnvironment(): Nette\DI\Container +{ + Tester\Environment::setup(); // Ініціалізація Nette Tester + $this->setupContainer(); + return $this->configurator->createContainer(); +} + +public function bootConsoleApplication(): Nette\DI\Container { - $configurator = self::boot(); - Tester\Environment::setup(); // Инициализация Nette Tester - return $configurator; + $this->configurator->setDebugMode(false); + $this->initializeEnvironment(); + $this->setupContainer(); + return $this->configurator->createContainer(); } ``` diff --git a/application/uk/components.texy b/application/uk/components.texy index 37b1d65983..b8b4c592e4 100644 --- a/application/uk/components.texy +++ b/application/uk/components.texy @@ -230,6 +230,28 @@ $this->redirect(/* ... */); // робимо редирект ``` +Перенаправлення за сигналом .[#toc-redirection-after-a-signal] +============================================================== + +Після обробки сигналу компонента часто відбувається перенаправлення. Ця ситуація схожа на форми - після відправлення форми ми також виконуємо перенаправлення, щоб запобігти повторному відправленню даних при оновленні сторінки в браузері. + +```php +$this->redirect('this') // redirects to the current presenter and action +``` + +Оскільки компонент є елементом багаторазового використання і зазвичай не повинен мати прямої залежності від конкретних доповідачів, методи `redirect()` і `link()` автоматично інтерпретують параметр як сигнал компонента: + +```php +$this->redirect('click') // redirects to the 'click' signal of the same component +``` + +Якщо вам потрібно перенаправити на іншого доповідача або дію, ви можете зробити це через доповідача: + +```php +$this->getPresenter()->redirect('Product:show'); // redirects to a different presenter/action +``` + + Постійні параметри .[#toc-persistent-parameters] ================================================ diff --git a/application/uk/presenters.texy b/application/uk/presenters.texy index e16481509e..47e3d7b0c0 100644 --- a/application/uk/presenters.texy +++ b/application/uk/presenters.texy @@ -60,7 +60,7 @@ class ArticlePresenter extends Nette\Application\UI\Presenter Важливо, що `action()` викликається перед `render()`, тому всередині нього ми можемо, можливо, змінити наступний хід життєвого циклу, тобто змінити шаблон, який буде відображатися, а також метод `render()`, який буде викликатися, використовуючи `setView('otherView')`. -У метод передаються параметри із запиту. Можна і рекомендується вказувати типи для параметрів, наприклад `actionShow(int $id, string $slug = null)` - якщо параметр `id` відсутній або якщо він не є цілим числом, презентер повертає [помилку 404 |#Error-404-etc] і завершує операцію. +У метод передаються параметри із запиту. Можна і рекомендується вказувати типи для параметрів, наприклад `actionShow(int $id, ?string $slug = null)` - якщо параметр `id` відсутній або якщо він не є цілим числом, презентер повертає [помилку 404 |#Error-404-etc] і завершує операцію. `handle(args...)` .{toc: handle()} @@ -205,7 +205,7 @@ $this->redirect(/* ... */); Помилка 404 тощо. .[#toc-error-404-etc] ======================================= -Коли ми не можемо виконати запит, тому що, наприклад, стаття, яку ми хочемо відобразити, не існує в базі даних, ми викинемо помилку 404, використовуючи метод `error(string $message = null, int $httpCode = 404)`, який представляє HTTP-помилку 404: +Коли ми не можемо виконати запит, тому що, наприклад, стаття, яку ми хочемо відобразити, не існує в базі даних, ми викинемо помилку 404, використовуючи метод `error(?string $message = null, int $httpCode = 404)`, який представляє HTTP-помилку 404: ```php public function renderShow(int $id): void @@ -384,7 +384,7 @@ class ProductPresenter extends Nette\Application\UI\Presenter Ви також можете викликати канонізацію вручну за допомогою методу `canonicalize()`, який, як і метод `link()`, отримує як аргументи презентера, дії та параметри. Він створює посилання і порівнює його з поточним URL. Якщо вони відрізняються, то відбувається перенаправлення на згенероване посилання. ```php -public function actionShow(int $id, string $slug = null): void +public function actionShow(int $id, ?string $slug = null): void { $realSlug = $this->facade->getSlugForId($id); // перенаправляє, якщо $slug відрізняється від $realSlug diff --git a/best-practices/cs/composer.texy b/best-practices/cs/composer.texy index 8ea7581472..137b09c745 100644 --- a/best-practices/cs/composer.texy +++ b/best-practices/cs/composer.texy @@ -58,7 +58,7 @@ composer update Composer stáhne Nette Database do složky `vendor/`. Dále vytvoří soubor `composer.lock`, který obsahuje informace o tom, které verze knihoven přesně nainstaloval. -Composer vygeneruje soubor `vendor/autoload.php`, který můžeme jednoduše zainkludovat a začít používat knihovny bez jakékoli další práce: +Composer vygeneruje soubor `vendor/autoload.php`, který můžeme jednoduše inkludovat a začít používat knihovny bez jakékoli další práce: ```php require __DIR__ . '/vendor/autoload.php'; diff --git a/best-practices/cs/inject-method-attribute.texy b/best-practices/cs/inject-method-attribute.texy index 9bd667a09f..b3e80f1266 100644 --- a/best-practices/cs/inject-method-attribute.texy +++ b/best-practices/cs/inject-method-attribute.texy @@ -61,7 +61,7 @@ class MyPresenter extends Nette\Application\UI\Presenter Výhodou tohoto způsobu předávání závislostí byla velice úsporná podoba zápisu. Nicméně s příchodem [constructor property promotion |https://blog.nette.org/cs/php-8-0-kompletni-prehled-novinek#toc-constructor-property-promotion] se jeví snazší použít konstruktor. -Naopak tento způsob trpí stejnými nedostatky, jako předávání závislosti do properites obecně: nemáme kontrolu nad změnami v proměnné a zároveň se proměnná stává součástí veřejného rozhraní třídy, což je nežádnoucí. +Naopak tento způsob trpí stejnými nedostatky, jako předávání závislosti do properties obecně: nemáme kontrolu nad změnami v proměnné a zároveň se proměnná stává součástí veřejného rozhraní třídy, což je nežádnoucí. {{sitename: Best Practices}} diff --git a/best-practices/cs/lets-create-contact-form.texy b/best-practices/cs/lets-create-contact-form.texy index 80503acf55..aa24fb819f 100644 --- a/best-practices/cs/lets-create-contact-form.texy +++ b/best-practices/cs/lets-create-contact-form.texy @@ -131,7 +131,7 @@ Zatím se odesílá prostý textový email obsahující pouze zprávu odeslanou ``` -Zbývá upravit `ContactFacade`, aby tuto šablonu používal. V konstruktoru si vyžádáme třídu `LatteFactory`, která umí vyrobit objekt `Latte\Engine`, tedy [vykreslovač Latte šablon |latte:develop#jak-vykreslit-sablonu]. Pomocí metody `renderToString()` šablonu vykreslíme do souboru, prvním parametrem je cesta k šabloně a druhým jsou proměnné. +Zbývá upravit `ContactFacade`, aby tuto šablonu používal. V konstruktoru si vyžádáme třídu `LatteFactory`, která umí vyrobit objekt `Latte\Engine`, tedy [vykreslovač Latte šablon |latte:develop#vykresleni-sablony]. Pomocí metody `renderToString()` šablonu vykreslíme do souboru, prvním parametrem je cesta k šabloně a druhým jsou proměnné. ```php namespace App\Model; diff --git a/database/cs/upgrading.texy b/database/cs/upgrading.texy index 0a89ef3585..20bb26d94d 100644 --- a/database/cs/upgrading.texy +++ b/database/cs/upgrading.texy @@ -7,7 +7,7 @@ Přechod z verze 3.1 na 3.2 Minimální požadovaná verze PHP je 8.1. -Kód byl pečlivě vyladěn pro PHP 8.1. Byly doplněny všechny nové typehinty u metod a properites. Změny jsou jen drobné: +Kód byl pečlivě vyladěn pro PHP 8.1. Byly doplněny všechny nové typehinty u metod a properties. Změny jsou jen drobné: - MySQL: nulové datum `0000-00-00` vrací jako `null` - MySQL: decimal bez desetinných míst vrací jako int místo float diff --git a/dependency-injection/de/container.texy b/dependency-injection/de/container.texy index 6befd33d9c..610d1f62e5 100644 --- a/dependency-injection/de/container.texy +++ b/dependency-injection/de/container.texy @@ -44,7 +44,7 @@ Wir fragen den Container einfach nach dem Objekt und müssen nicht mehr wissen, Bis jetzt hat der Container alles hart kodiert. Wir gehen also den nächsten Schritt und fügen Parameter hinzu, um den Container wirklich nützlich zu machen: ```php -Klasse Container +class Container { public function __construct( private array $parameters, @@ -75,7 +75,7 @@ Aufmerksame Leser haben vielleicht ein Problem bemerkt. Jedes Mal, wenn ich ein Also fügen wir eine Methode `getService()` hinzu, die immer wieder die gleichen Instanzen zurückgibt: ```php -Klasse Container +class container { private array $services = []; @@ -103,7 +103,7 @@ Beim ersten Aufruf von z.B. `$container->getService('Database')` wird `createDat Wir ändern auch den Rest des Containers, um `getService()` zu verwenden: ```php -Klasse Container +class Container { // ... @@ -134,6 +134,6 @@ $controller = $container->getService('UserController'); $database = $container->getService('Database'); ``` -Wie Sie sehen können, ist es nicht schwer, ein DIC zu schreiben. Bemerkenswert ist, dass die Objekte selbst nicht wissen, dass sie von einem Container erstellt werden. Es ist also möglich, jedes beliebige Objekt in PHP auf diese Weise zu erstellen, ohne den Quellcode zu verändern. +Wie Sie sehen können, ist es nicht schwer, einen DIC zu schreiben. Bemerkenswert ist, dass die Objekte selbst nicht wissen, dass sie von einem Container erstellt werden. Es ist also möglich, jedes beliebige Objekt in PHP auf diese Weise zu erstellen, ohne den Quellcode zu verändern. Die manuelle Erstellung und Pflege einer Containerklasse kann schnell zu einem Alptraum werden. Deshalb werden wir im nächsten Kapitel über [Nette DI Container |nette-container] sprechen, die sich fast automatisch erzeugen und aktualisieren können. diff --git a/forms/bg/controls.texy b/forms/bg/controls.texy index 85ff195d46..97246f2c9e 100644 --- a/forms/bg/controls.texy +++ b/forms/bg/controls.texy @@ -5,8 +5,8 @@ Преглед на вградените контроли на формуляра. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Добавя текстово поле с един ред (клас [TextInput |api:Nette\Forms\Controls\TextInput]). Ако потребителят не попълни полето, се връща празен низ `''`, или използвайте `setNullable()`, за да върнете `null`. @@ -78,8 +78,8 @@ $form->addFloat('level', 'Level:') Nette и браузърът Chrome приемат както запетая, така и точка като десетични разделители. За да направите тази функционалност достъпна във Firefox, се препоръчва да зададете атрибута `lang` или за конкретния елемент, или за цялата страница, например, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Добавя валидирано поле за имейл адрес (клас [TextInput |api:Nette\Forms\Controls\TextInput]). Ако потребителят не е попълнил полето, се връща празен низ `''` или използвайте `setNullable()`, за да върнете `null`. @@ -92,8 +92,8 @@ $form->addEmail('email', 'Имейл:'); Максималната дължина може да бъде ограничена с помощта на `setMaxLength()`. Функцията [addFilter() |validation#Modifying-Input-Values] ви позволява да промените стойността, въведена от потребителя. Можете да зададете така наречената "празна стойност", като използвате `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Добавя поле за парола (клас [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'Я согласен с условиями') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Добавя списък с квадратчета за избор на няколко елемента (клас [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Връща масив от ключове на избрани елементи. Методът `getSelectedItems()` връща стойности вместо ключове. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Добавя радио бутони (клас [RadioList |api:Nette\Forms\Controls\RadioList]). Връща ключа на избрания елемент или `null`, ако потребителят не е избрал нищо. Методът `getSelectedItem()` връща стойност вместо ключ. @@ -168,8 +168,8 @@ $form->addRadioList('gender', 'Пол:', $sex); При настройката по подразбиране се проверява дали това е един от предлаганите елементи, в противен случай се подава изключение. Тази проверка може да бъде деактивирана с помощта на `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Добавя поле за избор (клас [SelectBox |api:Nette\Forms\Controls\SelectBox]). Връща ключа на избрания елемент или `null`, ако потребителят не е избрал нищо. Методът `getSelectedItem()` връща стойност вместо ключ. @@ -213,8 +213,8 @@ $form->addSelect('country', 'Страна:', $countries) При настройката по подразбиране се проверява дали това е един от предлаганите елементи, в противен случай се подава изключение. Тази проверка може да бъде деактивирана с помощта на `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Добавя поле за множествен избор (клас [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Връща масив от ключове на избрани елементи. Методът `getSelectedItems()` връща стойности вместо ключове. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Добавя поле, което позволява на потребителя лесно да въвежда време, състоящо се от часове, минути и по избор секунди (клас [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Добавя поле, което позволява на потребителя лесно да въвежда както дата, така и час, състоящи се от година, месец, ден, часове, минути и по желание секунди (клас [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Добавя скрито поле (клас [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Поднять зарплату') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Добавя бутон за изпращане като изображение (клас [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ $form->addComponent(new DateInput('Дата:'), 'date'); ```php use Nette\Forms\Container; -// метод addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// метод addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'Не менее 5 номеров', '[0-9]{5}'); }); diff --git a/forms/bg/validation.texy b/forms/bg/validation.texy index ba3c97bdce..2f5a38cc3b 100644 --- a/forms/bg/validation.texy +++ b/forms/bg/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) В Nette е много лесно да се реагира на изпълнението или неизпълнението на дадено условие от страна на JavaScript, като се използва методът `toggle()`, вж. раздел [Динамичен JavaScript |#Динамический JavaScript]. -Връзки между контролите .[#toc-references-between-controls] -=========================================================== +Препратка към друг елемент .[#toc-reference-to-another-element] +=============================================================== -Аргумент на правило или условие може да бъде препратка към друг елемент. Например можете динамично да потвърдите, че `text` има толкова знаци, колкото са посочени в полето `length`: +Като аргумент за правило или условие можете да предадете и друг елемент от формуляра. Тогава правилото ще използва стойността, въведена по-късно от потребителя в браузъра. Това може да се използва например за динамично потвърждаване, че елементът `password` съдържа същия низ като елемента `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/cs/controls.texy b/forms/cs/controls.texy index 3acdd4399b..adb1a405bf 100644 --- a/forms/cs/controls.texy +++ b/forms/cs/controls.texy @@ -5,8 +5,8 @@ Formulářové prvky Přehled standardních formulářových prvků. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Přidá jednořádkové textové políčko (třída [TextInput |api:Nette\Forms\Controls\TextInput]). Pokud uživatel pole nevyplní, vrací prázdný řetězec `''`, nebo pomocí `setNullable()` lze určit, aby vracel `null`. @@ -78,8 +78,8 @@ Prvek se vykresluje jako ``. Použitím metody `setHtmlTyp Nette a prohlížeč Chrome akceptují jako oddělovač desetinných míst jak čárku, tak tečku. Aby byla tato funkcionalita dostupná i ve Firefoxu, je doporučeno nastavit atribut `lang` buď pro daný prvek nebo pro celou stránku, například ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Přidá políčko pro zadání e-mailové adresy (třída [TextInput |api:Nette\Forms\Controls\TextInput]). Pokud uživatel pole nevyplní, vrací prázdný řetězec `''`, nebo pomocí `setNullable()` lze určit, aby vracel `null`. @@ -92,8 +92,8 @@ Ověří, zda je hodnota platná e-mailová adresa. Neověřuje se, zda doména Maximální délku lze omezit pomocí `setMaxLength()`. Pozměnit uživatelem vloženou hodnotu umožňuje [addFilter()|validation#Úprava vstupu]. Lze nastavit tzv. empty-value pomocí `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Přidá políčko pro zadání hesla (třída [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'Souhlasím s podmínkami') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Přidá zaškrtávací políčka pro výběr více položek (třída [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Vrací pole klíčů vybraných položek. Metoda `getSelectedItems()` vrací hodnoty místo klíčů. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Přidá přepínací tlačítka (třída [RadioList |api:Nette\Forms\Controls\RadioList]). Vrací klíč vybrané položky, nebo `null`, pokud uživatel nic nevybral. Metoda `getSelectedItem()` vrací hodnotu místo klíče. @@ -168,8 +168,8 @@ Prvek automaticky kontroluje, že nedošlo k podvržení a že vybraná položka Při nastavení výchozí vybrané položky také kontroluje, že jde o jednou z nabízených, jinak vyhodí výjimku. Tuto kontrolu lze vypnout pomocí `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Přidá select box (třída [SelectBox |api:Nette\Forms\Controls\SelectBox]). Vrací klíč vybrané položky, nebo `null`, pokud uživatel nic nevybral. Metoda `getSelectedItem()` vrací hodnotu místo klíče. @@ -213,8 +213,8 @@ Prvek automaticky kontroluje, že nedošlo k podvržení a že vybraná položka Při nastavení výchozí vybrané položky také kontroluje, že jde o jednou z nabízených, jinak vyhodí výjimku. Tuto kontrolu lze vypnout pomocí `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Přidá select box pro výběr více položek (třída [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Vrací pole klíčů vybraných položek. Metoda `getSelectedItems()` vrací hodnoty místo klíčů. @@ -287,8 +287,8 @@ $form->addDate('date', 'Datum:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Přidá políčko, které umožní uživateli snadno zadat čas skládající se z hodin, minut a volitelně i sekund (třída [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Čas:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Přidá políčko, které umožní uživateli snadno zadat datum a čas skládající se z roku, měsíce, dne, hodin, minut a volitelně i sekund (třída [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Barva:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Přidá skryté pole (třída [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Zvýšit plat') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Přidá odesílací tlačítko v podobě obrázku (třída [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ Existuje způsob, jak definovat nové metody formuláře sloužící k přidáv ```php use Nette\Forms\Container; -// přidáme metodu addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// přidáme metodu addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'Alespoň 5 čísel', '[0-9]{5}'); }); diff --git a/forms/cs/validation.texy b/forms/cs/validation.texy index ae88cf7ce2..b8ef19407e 100644 --- a/forms/cs/validation.texy +++ b/forms/cs/validation.texy @@ -152,18 +152,18 @@ $form->addText(/* ... */) ->addRule(/* ... */); ``` -V Nette lze velmi snadno reagovat na splnění či nesplnění podmíny i na straně JavaScriptu pomocí metody `toggle()`, viz [#dynamický JavaScript]. +V Nette lze velmi snadno reagovat na splnění či nesplnění podmínky i na straně JavaScriptu pomocí metody `toggle()`, viz [#dynamický JavaScript]. -Reference mezi prvky -==================== +Reference na jiný prvek +======================= -Jako argument pravidla či podmínky lze uvádět referenci na jiný prvek. Takto lze např. dynamicky validovat, že prvek `text` má tolik znaků, jako je hodnota prvku `length`: +Jako argument pravidla či podmínky lze předat i jiný prvek formuláře. Pravidlo potom použije hodnotu vloženou později uživatelem v prohlížeči. Takto lze např. dynamicky validovat, že prvek `password` obsahuje stejný řetězec jako prvek `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Heslo'); +$form->addPassword('password_confirm', 'Potvrďte heslo') + ->addRule($form::Equal, 'Zadaná hesla se neshodují', $form['password']); ``` @@ -172,7 +172,7 @@ Vlastní pravidla a podmínky Občas se dostaneme do situace, kdy nám vestavěná validační pravidla v Nette nestačí a potřebujeme data od uživatele validovat po svém. V Nette je to velmi jednoduché! -Metodám `addRule()` či `addCondition()` lze první parametr předat libovolný callback. Ten přijímá jako první parametr samotný prvek a vrací boolean hodnotu určující, zda validace proběhla v pořádku. Při přidávání pravidla pomocí `addRule()` je možné zadat i další argumenty, ty jsou pak předány jako druhý parametr. +Metodám `addRule()` či `addCondition()` lze jako první parametr předat libovolný callback. Ten přijímá jako první parametr samotný prvek a vrací boolean hodnotu určující, zda validace proběhla v pořádku. Při přidávání pravidla pomocí `addRule()` je možné zadat i další argumenty, ty jsou pak předány jako druhý parametr. Vlastní sadu validátorů tak můžeme vytvořit jako třídu se statickými metodami: diff --git a/forms/de/controls.texy b/forms/de/controls.texy index 8d5dbe565c..f39891b8eb 100644 --- a/forms/de/controls.texy +++ b/forms/de/controls.texy @@ -5,8 +5,8 @@ Formular-Steuerelemente Übersicht über die eingebauten Formularsteuerelemente. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Fügt ein einzeiliges Textfeld hinzu (Klasse [TextInput |api:Nette\Forms\Controls\TextInput]). Wenn der Benutzer das Feld nicht ausfüllt, wird eine leere Zeichenkette `''` zurückgegeben, oder verwenden Sie `setNullable()`, um dies zu ändern und `null` zurückzugeben. @@ -78,8 +78,8 @@ Das Element wird wiedergegeben als ``. Mit der Methode `se Nette und der Chrome-Browser akzeptieren sowohl ein Komma als auch einen Punkt als Dezimaltrennzeichen. Um diese Funktionalität in Firefox verfügbar zu machen, empfiehlt es sich, das Attribut `lang` entweder für das spezifische Element oder für die gesamte Seite zu setzen, zum Beispiel, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Fügt ein E-Mail-Adressfeld mit Gültigkeitsprüfung hinzu (Klasse [TextInput |api:Nette\Forms\Controls\TextInput]). Wenn der Benutzer das Feld nicht ausfüllt, wird eine leere Zeichenkette `''` zurückgegeben, oder verwenden Sie `setNullable()`, um dies zu ändern und `null` zurückzugeben. @@ -92,8 +92,8 @@ $form->addEmail('email', 'Email:'); Die maximale Länge kann mit `setMaxLength()` begrenzt werden. Mit [addFilter() |validation#Modifying Input Values] können Sie den vom Benutzer eingegebenen Wert ändern. Mit `setEmptyValue()` können Sie den sogenannten Leerwert setzen. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Fügt Passwortfeld hinzu (Klasse [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'I agree with terms') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Fügt eine Liste von Kontrollkästchen zur Auswahl mehrerer Elemente hinzu (Klasse [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Gibt das Array der Schlüssel der ausgewählten Elemente zurück. Die Methode `getSelectedItems()` gibt Werte anstelle von Schlüsseln zurück. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Fügt Optionsfelder hinzu (Klasse [RadioList |api:Nette\Forms\Controls\RadioList]). Gibt den Schlüssel des ausgewählten Elements zurück, oder `null`, wenn der Benutzer nichts ausgewählt hat. Die Methode `getSelectedItem()` gibt einen Wert statt eines Schlüssels zurück. @@ -168,8 +168,8 @@ Das Element überprüft automatisch, dass keine Fälschung vorliegt und dass das Wenn der Standardwert eingestellt ist, wird auch geprüft, ob es sich um einen der angebotenen Einträge handelt, andernfalls wird eine Ausnahme ausgelöst. Diese Prüfung kann mit `checkDefaultValue(false)` ausgeschaltet werden. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Fügt ein Auswahlfeld hinzu (Klasse [SelectBox |api:Nette\Forms\Controls\SelectBox]). Gibt den Schlüssel des ausgewählten Elements zurück, oder `null`, wenn der Benutzer nichts ausgewählt hat. Die Methode `getSelectedItem()` gibt einen Wert statt eines Schlüssels zurück. @@ -213,8 +213,8 @@ Das Element prüft automatisch, dass keine Fälschung vorliegt und dass das ausg Wenn der Standardwert eingestellt ist, wird auch geprüft, ob es sich um einen der angebotenen Einträge handelt, andernfalls wird eine Ausnahme ausgelöst. Diese Prüfung kann mit `checkDefaultValue(false)` ausgeschaltet werden. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Fügt ein Auswahlfeld mit mehreren Auswahlmöglichkeiten hinzu (Klasse [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Gibt das Array der Schlüssel der ausgewählten Elemente zurück. Die Methode `getSelectedItems()` gibt Werte anstelle von Schlüsseln zurück. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Fügt ein Feld hinzu, das dem Benutzer die einfache Eingabe der Zeit in Stunden, Minuten und optional Sekunden ermöglicht (Klasse [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Fügt ein Feld hinzu, das es dem Benutzer ermöglicht, auf einfache Weise sowohl Datum als auch Uhrzeit einzugeben, bestehend aus Jahr, Monat, Tag, Stunden, Minuten und optional Sekunden (Klasse [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Fügt ein verstecktes Feld (Klasse [HiddenField |api:Nette\Forms\Controls\HiddenField]) hinzu. @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Fügt einen Submit-Button in Form eines Bildes hinzu (Klasse [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ Es gibt eine Möglichkeit, neue Formularmethoden zu definieren, um benutzerdefin ```php use Nette\Forms\Container; -// fügt Methode addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// fügt Methode addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'Mindestens 5 Zahlen', '[0-9]{5}'); }); diff --git a/forms/de/validation.texy b/forms/de/validation.texy index d1a923d128..0abbb2c140 100644 --- a/forms/de/validation.texy +++ b/forms/de/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) In Nette ist es sehr einfach, auf die Erfüllung oder Nichterfüllung einer Bedingung auf der JavaScript-Seite mit der Methode `toggle()` zu reagieren, siehe [Dynamisches JavaScript |#Dynamic JavaScript]. -Referenzen zwischen Controls .[#toc-references-between-controls] -================================================================ +Verweis auf ein anderes Element .[#toc-reference-to-another-element] +==================================================================== -Das Regel- oder Bedingungsargument kann ein Verweis auf ein anderes Element sein. Sie können zum Beispiel dynamisch überprüfen, ob `text` so viele Zeichen hat wie der Wert des Feldes `length` beträgt: +Als Argument für eine Regel oder Bedingung können Sie auch ein anderes Formularelement übergeben. Die Regel wird dann den Wert verwenden, den der Benutzer später im Browser eingibt. Auf diese Weise kann z. B. dynamisch überprüft werden, ob das Element `password` dieselbe Zeichenfolge enthält wie das Element `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/el/controls.texy b/forms/el/controls.texy index a1891c4eaf..a211f8acfc 100644 --- a/forms/el/controls.texy +++ b/forms/el/controls.texy @@ -5,8 +5,8 @@ Επισκόπηση των ενσωματωμένων στοιχείων ελέγχου φόρμας. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Προσθέτει πεδίο κειμένου μονής γραμμής (κλάση [TextInput |api:Nette\Forms\Controls\TextInput]). Αν ο χρήστης δεν συμπληρώσει το πεδίο, επιστρέφει ένα κενό αλφαριθμητικό `''`, ή χρησιμοποιεί το `setNullable()` για να το αλλάξει και να επιστρέφει `null`. @@ -78,8 +78,8 @@ $form->addFloat('level', 'Level:') Η Nette και το πρόγραμμα περιήγησης Chrome δέχονται τόσο ένα κόμμα όσο και μια τελεία ως δεκαδικά διαχωριστικά. Για να είναι διαθέσιμη αυτή η λειτουργικότητα στον Firefox, συνιστάται να ορίσετε το χαρακτηριστικό `lang` είτε για το συγκεκριμένο στοιχείο είτε για ολόκληρη τη σελίδα, για παράδειγμα, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Προσθέτει πεδίο διεύθυνσης ηλεκτρονικού ταχυδρομείου με έλεγχο εγκυρότητας (κλάση [TextInput |api:Nette\Forms\Controls\TextInput]). Αν ο χρήστης δεν συμπληρώσει το πεδίο, επιστρέφει ένα κενό αλφαριθμητικό `''`, ή χρησιμοποιεί το `setNullable()` για να το αλλάξει και να επιστρέφει `null`. @@ -92,8 +92,8 @@ $form->addEmail('email', 'Email:'); Το μέγιστο μήκος μπορεί να περιοριστεί με τη χρήση του `setMaxLength()`. Η [addFilter() |validation#Modifying Input Values] σας επιτρέπει να αλλάξετε την τιμή που εισάγει ο χρήστης. Μπορείτε να ορίσετε τη λεγόμενη κενή τιμή χρησιμοποιώντας το `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Προσθέτει πεδίο κωδικού πρόσβασης (κλάση [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'I agree with terms') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Προσθέτει λίστα με πλαίσια ελέγχου για την επιλογή πολλαπλών στοιχείων (κλάση [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Επιστρέφει τον πίνακα με τα κλειδιά των επιλεγμένων στοιχείων. Η μέθοδος `getSelectedItems()` επιστρέφει τιμές αντί για κλειδιά. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Προσθέτει κουμπιά επιλογής (κλάση [RadioList |api:Nette\Forms\Controls\RadioList]). Επιστρέφει το κλειδί του επιλεγμένου στοιχείου ή `null` αν ο χρήστης δεν επέλεξε τίποτα. Η μέθοδος `getSelectedItem()` επιστρέφει μια τιμή αντί για ένα κλειδί. @@ -168,8 +168,8 @@ $form->addRadioList('gender', 'Gender:', $sex); Όταν έχει οριστεί η προεπιλεγμένη τιμή, ελέγχει επίσης ότι είναι ένα από τα προσφερόμενα στοιχεία, διαφορετικά πετάει μια εξαίρεση. Αυτός ο έλεγχος μπορεί να απενεργοποιηθεί με τη μέθοδο `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Προσθέτει πλαίσιο επιλογής (κλάση [SelectBox |api:Nette\Forms\Controls\SelectBox]). Επιστρέφει το κλειδί του επιλεγμένου στοιχείου ή `null` αν ο χρήστης δεν επέλεξε τίποτα. Η μέθοδος `getSelectedItem()` επιστρέφει μια τιμή αντί για ένα κλειδί. @@ -213,8 +213,8 @@ $form->addSelect('country', 'Country:', $countries) Όταν έχει οριστεί η προεπιλεγμένη τιμή, ελέγχει επίσης ότι είναι ένα από τα προσφερόμενα στοιχεία, διαφορετικά πετάει μια εξαίρεση. Αυτός ο έλεγχος μπορεί να απενεργοποιηθεί με τη μέθοδο `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Προσθέτει πλαίσιο επιλογής πολλαπλών επιλογών (κλάση [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Επιστρέφει τον πίνακα των κλειδιών των επιλεγμένων στοιχείων. Η μέθοδος `getSelectedItems()` επιστρέφει τιμές αντί για κλειδιά. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Προσθέτει ένα πεδίο που επιτρέπει στο χρήστη να εισάγει εύκολα την ώρα που αποτελείται από ώρες, λεπτά και προαιρετικά δευτερόλεπτα (κλάση [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Προσθέτει ένα πεδίο που επιτρέπει στο χρήστη να εισάγει εύκολα τόσο ημερομηνία όσο και ώρα που αποτελείται από έτος, μήνα, ημέρα, ώρες, λεπτά και προαιρετικά δευτερόλεπτα (κλάση [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Προσθέτει κρυφό πεδίο (κλάση [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Προσθέτει κουμπί υποβολής με τη μορφή εικόνας (κλάση [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ $form->addComponent(new DateInput('Date:'), 'date'); ```php use Nette\Forms\Container; -// προσθέτει τη μέθοδο addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// προσθέτει τη μέθοδο addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'At least 5 numbers', '[0-9]{5}'); }); diff --git a/forms/el/validation.texy b/forms/el/validation.texy index 68422555e5..7a205ccf3a 100644 --- a/forms/el/validation.texy +++ b/forms/el/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) Στη Nette, είναι πολύ εύκολο να αντιδράσετε στην εκπλήρωση ή όχι μιας συνθήκης από την πλευρά της JavaScript χρησιμοποιώντας τη μέθοδο `toggle()`, βλέπε [Δυναμική JavaScript |#Dynamic JavaScript]. -Αναφορές μεταξύ στοιχείων ελέγχου .[#toc-references-between-controls] -===================================================================== +Αναφορά σε άλλο στοιχείο .[#toc-reference-to-another-element] +============================================================= -Το όρισμα του κανόνα ή της συνθήκης μπορεί να είναι μια αναφορά σε ένα άλλο στοιχείο. Για παράδειγμα, μπορείτε να επικυρώσετε δυναμικά ότι το `text` έχει τόσους χαρακτήρες όσοι είναι οι τιμές του πεδίου `length`: +Ως όρισμα για έναν κανόνα ή συνθήκη, μπορείτε επίσης να περάσετε ένα άλλο στοιχείο της φόρμας. Ο κανόνας θα χρησιμοποιήσει τότε την τιμή που θα εισαχθεί αργότερα από τον χρήστη στο πρόγραμμα περιήγησης. Αυτό μπορεί να χρησιμοποιηθεί, για παράδειγμα, για τη δυναμική επικύρωση ότι το στοιχείο `password` περιέχει την ίδια συμβολοσειρά με το στοιχείο `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/en/controls.texy b/forms/en/controls.texy index 1556a36c1c..c3d28d0d01 100644 --- a/forms/en/controls.texy +++ b/forms/en/controls.texy @@ -5,8 +5,8 @@ Form Controls Overview of built-in form controls. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Adds single line text field (class [TextInput |api:Nette\Forms\Controls\TextInput]). If the user does not fill in the field, it returns an empty string `''`, or use `setNullable()` to change it to return `null`. @@ -78,8 +78,8 @@ The element is rendered as ``. By using the `setHtmlType() Nette and the Chrome browser accept both a comma and a dot as decimal separators. To make this functionality available in Firefox, it is recommended to set the `lang` attribute either for the specific element or for the entire page, for example, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Adds email address field with validity check (class [TextInput |api:Nette\Forms\Controls\TextInput]). If the user does not fill in the field, it returns an empty string `''`, or use `setNullable()` to change it to return `null`. @@ -92,8 +92,8 @@ Verifies that the value is a valid email address. It does not verify that the do The maximum length can be limited using `setMaxLength()`. The [addFilter()|validation#Modifying Input Values] allows you to change the user-entered value. You can set the so-called empty-value using `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Adds password field (class [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'I agree with terms') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Adds list of checkboxes for selecting multiple items (class [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Returns the array of keys of the selected items. The `getSelectedItems()` method returns values instead of keys. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Adds radio buttons (class [RadioList |api:Nette\Forms\Controls\RadioList]). Returns the key of the selected item, or `null` if the user did not select anything. The `getSelectedItem()` method returns a value instead of a key. @@ -168,8 +168,8 @@ The element automatically checks that there has been no forgery and that the sel When default value is set, it also checks that it is one of the offered items, otherwise it throws an exception. This check can be turned off with `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Adds select box (class [SelectBox |api:Nette\Forms\Controls\SelectBox]). Returns the key of the selected item, or `null` if the user did not select anything. The `getSelectedItem()` method returns a value instead of a key. @@ -213,8 +213,8 @@ The element automatically checks that there has been no forgery and that the sel When default value is set, it also checks that it is one of the offered items, otherwise it throws an exception. This check can be turned off with `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Adds multichoice select box (class [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Returns the array of keys of the selected items. The `getSelectedItems()` method returns values instead of keys. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Adds a field that allows the user to easily input time consisting of hours, minutes, and optionally seconds (class [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Adds a field that allows the user to easily input both date and time consisting of year, month, day, hours, minutes, and optionally seconds (class [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Adds hidden field (class [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Adds submit button in form of an image (class [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ There is a way to define new form methods for adding custom elements (eg `$form- ```php use Nette\Forms\Container; -// adds method addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// adds method addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'At least 5 numbers', '[0-9]{5}'); }); diff --git a/forms/en/validation.texy b/forms/en/validation.texy index a0e1809593..215f7c21e8 100644 --- a/forms/en/validation.texy +++ b/forms/en/validation.texy @@ -59,7 +59,7 @@ For elements `addText()`, `addPassword()`, `addTextArea()`, `addEmail()`, `addIn | `Range` | value in the range | pair `[int\|float, int\|float]` The `Integer`, `Numeric` a `Float` rules automatically convert the value to integer (or float respectively). Furthermore, the `URL` rule also accepts an address without a schema (eg `nette.org`) and completes the schema (`https://nette.org`). -The expressions in `Pattern` and `PatternInsensitive` must be valid for the whole value, ie as if it were wrapped in the characters `^` and `$`. +The expressions in `Pattern` and `PatternInsensitive` must be valid for the whole value, i.e. as if it were wrapped in the characters `^` and `$`. Number of Items @@ -89,7 +89,7 @@ The `MimeType` and `Image` require PHP extension `fileinfo`. Whether a file or i Error Messages ============== -All predefined rules except `Pattern` and `PatternInsensitive` have a default error message, so they it be omitted. However, by passing and formulating all customized messages, you will make the form more user-friendly. +All predefined rules except `Pattern` and `PatternInsensitive` have a default error message, so they can be omitted. However, by passing and formulating all customized messages, you will make the form more user-friendly. You can change the default messages in [forms:configuration], by modifying the texts in the `Nette\Forms\Validator::$messages` array or by using [translator|rendering#translating]. @@ -155,15 +155,15 @@ $form->addText(/* ... */) In Nette, it is very easy to react to the fulfillment or not of a condition on the JavaScript side using the `toggle()` method, see [#Dynamic JavaScript]. -References Between Controls -=========================== +Reference to Another Element +============================ -The rule or condition argument can be a reference to another element. For example, you can dynamically validate that the `text` has as many characters as the value of the `length` field is: +As an argument for a rule or condition, you can also pass another form element. The rule will then use the value entered later by the user in the browser. This can be used, for example, to dynamically validate that the `password` element contains the same string as the `password_confirm` element: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` @@ -279,7 +279,7 @@ $form->addText('zip', 'Postcode:') ->addRule($form::Pattern, 'The postal code is not five digits', '\d{5}'); ``` -The filter is included between the validation rules and conditions and therefore depends on the order of the methods, ie the filter and the rule are called in the same order as is the order of the `addFilter()` and `addRule()` methods. +The filter is included between the validation rules and conditions and therefore depends on the order of the methods, i.e. the filter and the rule are called in the same order as is the order of the `addFilter()` and `addRule()` methods. JavaScript Validation diff --git a/forms/es/controls.texy b/forms/es/controls.texy index 32f8f1bec2..5095332863 100644 --- a/forms/es/controls.texy +++ b/forms/es/controls.texy @@ -5,8 +5,8 @@ Controles de formularios Visión general de los controles de formulario incorporados. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Añade un campo de texto de una sola línea (clase [TextInput |api:Nette\Forms\Controls\TextInput]). Si el usuario no rellena el campo, devuelve una cadena vacía `''`, o utiliza `setNullable()` para cambiarlo y que devuelva `null`. @@ -78,8 +78,8 @@ El elemento se representa como ``. Utilizando el método ` Nette y el navegador Chrome aceptan tanto una coma como un punto como separadores decimales. Para que esta funcionalidad esté disponible en Firefox, se recomienda establecer el atributo `lang` para el elemento específico o para toda la página, por ejemplo, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Añade un campo de dirección de correo electrónico con comprobación de validez (clase [TextInput |api:Nette\Forms\Controls\TextInput]). Si el usuario no rellena el campo, devuelve una cadena vacía `''`, o utiliza `setNullable()` para cambiarlo y que devuelva `null`. @@ -92,8 +92,8 @@ Verifica que el valor es una dirección de correo electrónico válida. No verif La longitud máxima puede limitarse utilizando `setMaxLength()`. La [función addFilter() |validation#Modifying Input Values] permite cambiar el valor introducido por el usuario. Puede establecer el llamado valor vacío utilizando `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Añade campo de contraseña (clase [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'Estoy de acuerdo con las condiciones') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Añade una lista de casillas de verificación para seleccionar varios elementos (clase [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Devuelve el array de claves de los elementos seleccionados. El método `getSelectedItems()` devuelve valores en lugar de claves. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Añade botones de radio (clase [RadioList |api:Nette\Forms\Controls\RadioList]). Devuelve la clave del elemento seleccionado, o `null` si el usuario no seleccionó nada. El método `getSelectedItem()` devuelve un valor en lugar de una clave. @@ -168,8 +168,8 @@ El elemento comprueba automáticamente que no ha habido falsificación y que el Cuando se establece el valor por defecto, también comprueba que es uno de los elementos ofrecidos, de lo contrario lanza una excepción. Esta comprobación puede desactivarse con `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Añade una caja de selección (clase [SelectBox |api:Nette\Forms\Controls\SelectBox]). Devuelve la clave del elemento seleccionado, o `null` si el usuario no seleccionó nada. El método `getSelectedItem()` devuelve un valor en lugar de una clave. @@ -213,8 +213,8 @@ El elemento comprueba automáticamente que no ha habido falsificación y que el Cuando se establece el valor por defecto, también comprueba que es uno de los elementos ofrecidos, de lo contrario lanza una excepción. Esta comprobación puede desactivarse con `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Añade una caja de selección multielección (clase [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Devuelve el array de claves de los elementos seleccionados. El método `getSelectedItems()` devuelve valores en lugar de claves. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Añade un campo que permite al usuario introducir fácilmente la hora consistente en horas, minutos y, opcionalmente, segundos (clase [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Añade un campo que permite al usuario introducir fácilmente tanto la fecha como la hora consistente en año, mes, día, horas, minutos y opcionalmente segundos (clase [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Añade un campo oculto (clase [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Añade un botón de envío en forma de imagen (clase [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ Existe una forma de definir nuevos métodos de formulario para añadir elementos ```php use Nette\Forms\Container; -// adds method addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// adds method addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'At least 5 numbers', '[0-9]{5}'); }); diff --git a/forms/es/validation.texy b/forms/es/validation.texy index 3a07b00586..8b49641b8d 100644 --- a/forms/es/validation.texy +++ b/forms/es/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) En Nette, es muy fácil reaccionar al cumplimiento o no de una condición en la parte JavaScript utilizando el método `toggle()`, véase [JavaScript dinámico |#Dynamic JavaScript]. -Referencias entre Controles .[#toc-references-between-controls] +Referencia a otro elemento .[#toc-reference-to-another-element] =============================================================== -El argumento de la regla o condición puede ser una referencia a otro elemento. Por ejemplo, puede validar dinámicamente que `text` tenga tantos caracteres como el valor del campo `length`: +Como argumento para una regla o condición, también puede pasar otro elemento del formulario. La regla utilizará entonces el valor introducido posteriormente por el usuario en el navegador. Esto se puede utilizar, por ejemplo, para validar dinámicamente que el elemento `password` contiene la misma cadena que el elemento `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/fr/controls.texy b/forms/fr/controls.texy index d4fac88d6e..bd6c7d9675 100644 --- a/forms/fr/controls.texy +++ b/forms/fr/controls.texy @@ -5,8 +5,8 @@ Contrôles de formulaires Aperçu des contrôles de formulaires intégrés. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Ajoute un champ de texte à une ligne (classe [TextInput |api:Nette\Forms\Controls\TextInput]). Si l'utilisateur ne remplit pas le champ, il renvoie une chaîne vide `''`, ou utilise `setNullable()` pour le modifier et renvoyer `null`. @@ -78,8 +78,8 @@ L'élément est rendu sous la forme ``. En utilisant la m Nette et le navigateur Chrome acceptent à la fois une virgule et un point comme séparateurs décimaux. Pour que cette fonctionnalité soit disponible dans Firefox, il est recommandé de définir l'attribut `lang` soit pour l'élément spécifique, soit pour la page entière, par exemple, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Ajoute un champ d'adresse électronique avec contrôle de validité (classe [TextInput |api:Nette\Forms\Controls\TextInput]). Si l'utilisateur ne remplit pas le champ, il renvoie une chaîne vide `''`, ou utilise `setNullable()` pour le modifier et renvoyer `null`. @@ -92,8 +92,8 @@ Vérifie que la valeur est une adresse électronique valide. Il ne vérifie pas La longueur maximale peut être limitée en utilisant `setMaxLength()`. La [fonction addFilter() |validation#Modifying Input Values] vous permet de modifier la valeur saisie par l'utilisateur. Vous pouvez définir la valeur dite vide à l'aide de `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Ajoute un champ de mot de passe (classe [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'I agree with terms') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Ajoute une liste de cases à cocher pour sélectionner plusieurs éléments (classe [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Renvoie le tableau des clés des éléments sélectionnés. La méthode `getSelectedItems()` renvoie des valeurs au lieu des clés. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Ajoute des boutons radio (classe [RadioList |api:Nette\Forms\Controls\RadioList]). Renvoie la clé de l'élément sélectionné, ou `null` si l'utilisateur n'a rien sélectionné. La méthode `getSelectedItem()` renvoie une valeur au lieu d'une clé. @@ -168,8 +168,8 @@ L'élément vérifie automatiquement qu'il n'y a pas eu de falsification et que Lorsque la valeur par défaut est définie, elle vérifie également qu'il s'agit de l'un des éléments proposés, sinon elle lève une exception. Cette vérification peut être désactivée avec `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Ajoute une boîte de sélection (classe [SelectBox |api:Nette\Forms\Controls\SelectBox]). Renvoie la clé de l'élément sélectionné, ou `null` si l'utilisateur n'a rien sélectionné. La méthode `getSelectedItem()` renvoie une valeur au lieu d'une clé. @@ -213,8 +213,8 @@ L'élément vérifie automatiquement qu'il n'y a pas eu de falsification et que Lorsque la valeur par défaut est définie, elle vérifie également qu'il s'agit de l'un des éléments proposés, sinon elle lève une exception. Cette vérification peut être désactivée avec `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Ajoute une boîte de sélection multichoix (classe [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Renvoie le tableau des clés des éléments sélectionnés. La méthode `getSelectedItems()` renvoie des valeurs au lieu des clés. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Ajoute un champ qui permet à l'utilisateur de saisir facilement l'heure sous forme d'heures, de minutes et éventuellement de secondes (classe [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Ajoute un champ qui permet à l'utilisateur de saisir facilement la date et l'heure en indiquant l'année, le mois, le jour, les heures, les minutes et, éventuellement, les secondes (classe [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Ajoute un champ caché (classe [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Ajoute un bouton d'envoi sous la forme d'une image (classe [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ Il est possible de définir de nouvelles méthodes de formulaire pour ajouter de ```php use Nette\Forms\Container; -// ajoute la méthode addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// ajoute la méthode addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'At least 5 numbers', '[0-9]{5}'); }); diff --git a/forms/fr/validation.texy b/forms/fr/validation.texy index 4d750f7048..479ffcdd3e 100644 --- a/forms/fr/validation.texy +++ b/forms/fr/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) Dans Nette, il est très facile de réagir à la réalisation ou non d'une condition du côté JavaScript en utilisant la méthode `toggle()`, voir [Dynamic JavaScript |#Dynamic JavaScript]. -Références entre les contrôles .[#toc-references-between-controls] -================================================================== +Référence à un autre élément .[#toc-reference-to-another-element] +================================================================= -L'argument de la règle ou de la condition peut être une référence à un autre élément. Par exemple, vous pouvez valider dynamiquement que le champ `text` comporte autant de caractères que la valeur du champ `length`: +En tant qu'argument d'une règle ou d'une condition, vous pouvez également transmettre un autre élément de formulaire. La règle utilisera alors la valeur introduite ultérieurement par l'utilisateur dans le navigateur. Cela peut être utilisé, par exemple, pour valider dynamiquement que l'élément `password` contient la même chaîne de caractères que l'élément `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/hu/controls.texy b/forms/hu/controls.texy index 3af18ed7d5..f8d87e005c 100644 --- a/forms/hu/controls.texy +++ b/forms/hu/controls.texy @@ -5,8 +5,8 @@ Nyomtatvány vezérlők A beépített űrlapvezérlők áttekintése. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Egysoros szövegmező hozzáadása ( [TextInput |api:Nette\Forms\Controls\TextInput] osztály). Ha a felhasználó nem tölti ki a mezőt, akkor egy üres karakterláncot ad vissza `''`, vagy a `setNullable()` segítségével megváltoztatja, hogy `null` adjon vissza. @@ -78,8 +78,8 @@ Az elemet a következő módon jeleníti meg ``. A `setHtm A Nette és a Chrome böngésző a vesszőt és a pontot is elfogadja tizedesválasztóként. Ahhoz, hogy ez a funkció a Firefoxban is elérhető legyen, ajánlott a `lang` attribútumot beállítani például az adott elemre vagy az egész oldalra, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ E-mail cím mező hozzáadása érvényességi ellenőrzéssel ( [TextInput |api:Nette\Forms\Controls\TextInput] osztály). Ha a felhasználó nem tölti ki a mezőt, akkor egy üres karakterláncot ad vissza `''`, vagy a `setNullable()` segítségével megváltoztatja, hogy `null` adjon vissza. @@ -92,8 +92,8 @@ Ellenőrzi, hogy az érték érvényes e-mail cím-e. Nem ellenőrzi, hogy a dom A maximális hossz a `setMaxLength()` segítségével korlátozható. Az [addFilter() |validation#Modifying Input Values] lehetővé teszi a felhasználó által megadott érték megváltoztatását. Az úgynevezett üres értéket a `setEmptyValue()` segítségével állíthatja be. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Jelszó mező hozzáadása ( [TextInput |api:Nette\Forms\Controls\TextInput] osztály). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'I agree with terms') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Több elem kiválasztására szolgáló jelölőnégyzetek listájának hozzáadása ( [CheckboxList |api:Nette\Forms\Controls\CheckboxList] osztály). Visszaadja a kiválasztott elemek kulcsainak tömbjét. A `getSelectedItems()` módszer kulcsok helyett értékeket ad vissza. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Rádiógombok hozzáadása ( [RadioList |api:Nette\Forms\Controls\RadioList] osztály). Visszaadja a kiválasztott elem kulcsát, vagy `null`, ha a felhasználó nem választott ki semmit. A `getSelectedItem()` metódus kulcs helyett értéket ad vissza. @@ -168,8 +168,8 @@ Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a k Alapértelmezett érték beállítása esetén azt is ellenőrzi, hogy a felajánlott elemek egyike-e, ellenkező esetben kivételt dob. Ez az ellenőrzés kikapcsolható a `checkDefaultValue(false)` segítségével. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Kijelölő doboz hozzáadása ( [SelectBox |api:Nette\Forms\Controls\SelectBox] osztály). Visszaadja a kiválasztott elem kulcsát, vagy `null`, ha a felhasználó nem választott ki semmit. A `getSelectedItem()` metódus kulcs helyett értéket ad vissza. @@ -213,8 +213,8 @@ Az elem automatikusan ellenőrzi, hogy nem történt-e hamisítás, és hogy a k Alapértelmezett érték beállítása esetén azt is ellenőrzi, hogy a felajánlott elemek egyike-e, ellenkező esetben kivételt dob. Ez az ellenőrzés kikapcsolható a `checkDefaultValue(false)` segítségével. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Hozzáadja a többválasztós kiválasztó dobozt ( [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox] osztály). Visszaadja a kiválasztott elemek kulcsainak tömbjét. A `getSelectedItems()` módszer kulcsok helyett értékeket ad vissza. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Hozzáad egy mezőt, amely lehetővé teszi a felhasználó számára, hogy egyszerűen beírja az órákból, percekből és opcionálisan másodpercekből álló időt ( [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl] osztály). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Hozzáad egy olyan mezőt, amely lehetővé teszi a felhasználó számára, hogy egyszerűen beírja a dátumot és az időt, amely évből, hónapból, napból, órából, percből és opcionálisan másodpercekből áll ( [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl] osztály). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Rejtett mező hozzáadása ( [HiddenField |api:Nette\Forms\Controls\HiddenField] osztály). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Hozzáadja a submit gombot kép formájában ( [ImageButton |api:Nette\Forms\Controls\ImageButton] osztály). @@ -525,8 +525,8 @@ Van lehetőség új űrlapmódszerek definiálására az egyéni elemek hozzáad ```php use Nette\Forms\Container; -// adds method addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// adds method addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'Legalább 5 szám', '[0-9]{5}'); }); diff --git a/forms/hu/validation.texy b/forms/hu/validation.texy index 3e70858bf0..757fc82906 100644 --- a/forms/hu/validation.texy +++ b/forms/hu/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) A Nette-ben nagyon egyszerűen reagálhatunk egy feltétel teljesülésére vagy nem teljesülésére a JavaScript oldalán a `toggle()` metódus segítségével, lásd [Dynamic JavaScript |#Dynamic JavaScript]. -Hivatkozások a vezérlők között .[#toc-references-between-controls] -================================================================== +Hivatkozás egy másik elemre .[#toc-reference-to-another-element] +================================================================ -A szabály vagy feltétel argumentum lehet hivatkozás egy másik elemre. Például dinamikusan érvényesítheti, hogy a `text` annyi karaktert tartalmazzon, ahány karakter a `length` mező értéke: +Egy szabály vagy feltétel argumentumaként egy másik űrlapelemet is átadhat. A szabály ekkor a felhasználó által a böngészőben később megadott értéket fogja használni. Ez például arra használható, hogy dinamikusan ellenőrizze, hogy a `password` elem ugyanazt a karakterláncot tartalmazza-e, mint a `password_confirm` elem: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/it/controls.texy b/forms/it/controls.texy index a13b936131..f139b25cb8 100644 --- a/forms/it/controls.texy +++ b/forms/it/controls.texy @@ -5,8 +5,8 @@ Controlli del modulo Panoramica dei controlli di modulo incorporati. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Aggiunge un campo di testo a riga singola (classe [TextInput |api:Nette\Forms\Controls\TextInput]). Se l'utente non compila il campo, restituisce una stringa vuota `''`, oppure si può usare `setNullable()` per modificarlo e restituire `null`. @@ -78,8 +78,8 @@ L'elemento viene reso come ``. Utilizzando il metodo `setH Nette e il browser Chrome accettano sia una virgola che un punto come separatori decimali. Per rendere disponibile questa funzionalità in Firefox, si consiglia di impostare l'attributo `lang` per un elemento specifico o per l'intera pagina, ad esempio, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Aggiunge un campo per l'indirizzo e-mail con controllo di validità (classe [TextInput |api:Nette\Forms\Controls\TextInput]). Se l'utente non compila il campo, restituisce una stringa vuota `''`, oppure si può usare `setNullable()` per modificarlo e restituire `null`. @@ -92,8 +92,8 @@ Verifica che il valore sia un indirizzo e-mail valido. Non verifica l'effettiva La lunghezza massima può essere limitata utilizzando `setMaxLength()`. Il metodo [addFilter() |validation#Modifying Input Values] consente di modificare il valore inserito dall'utente. È possibile impostare il cosiddetto valore vuoto utilizzando `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Aggiunge il campo password (classe [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'I agree with terms') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Aggiunge un elenco di caselle di controllo per la selezione di più elementi (classe [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Restituisce l'array di chiavi degli elementi selezionati. Il metodo `getSelectedItems()` restituisce i valori invece delle chiavi. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Aggiunge pulsanti di opzione (classe [RadioList |api:Nette\Forms\Controls\RadioList]). Restituisce la chiave dell'elemento selezionato o `null` se l'utente non ha selezionato nulla. Il metodo `getSelectedItem()` restituisce un valore invece di una chiave. @@ -168,8 +168,8 @@ L'elemento controlla automaticamente che non ci siano state contraffazioni e che Quando il valore predefinito è impostato, controlla anche che sia uno degli elementi offerti, altrimenti lancia un'eccezione. Questo controllo può essere disattivato con `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Aggiunge una casella di selezione (classe [SelectBox |api:Nette\Forms\Controls\SelectBox]). Restituisce la chiave dell'elemento selezionato o `null` se l'utente non ha selezionato nulla. Il metodo `getSelectedItem()` restituisce un valore invece di una chiave. @@ -213,8 +213,8 @@ L'elemento controlla automaticamente che non ci siano state contraffazioni e che Quando il valore predefinito è impostato, controlla anche che sia uno degli elementi offerti, altrimenti lancia un'eccezione. Questo controllo può essere disattivato con `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Aggiunge una casella di selezione a scelta multipla (classe [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Restituisce l'array di chiavi degli elementi selezionati. Il metodo `getSelectedItems()` restituisce i valori invece delle chiavi. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Aggiunge un campo che consente all'utente di inserire facilmente il tempo composto da ore, minuti e, facoltativamente, secondi (classe [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Aggiunge un campo che consente all'utente di inserire facilmente sia la data che l'ora, composta da anno, mese, giorno, ore, minuti e, facoltativamente, secondi (classe [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Aggiunge un campo nascosto (classe [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Aggiunge un pulsante di invio sotto forma di immagine (classe [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ Esiste un modo per definire nuovi metodi del modulo per aggiungere elementi pers ```php use Nette\Forms\Container; -// aggiunge il metodo addZip(string $nome, string $etichetta = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// aggiunge il metodo addZip(string $nome, ?string $etichetta = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'Almeno 5 numeri', '[0-9]{5}'); }); diff --git a/forms/it/validation.texy b/forms/it/validation.texy index b4f71f97c5..d608296e92 100644 --- a/forms/it/validation.texy +++ b/forms/it/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) In Nette, è molto facile reagire all'adempimento o meno di una condizione sul lato JavaScript, usando il metodo `toggle()`, vedere [JavaScript dinamico |#Dynamic JavaScript]. -Riferimenti tra controlli .[#toc-references-between-controls] -============================================================= +Riferimento a un altro elemento .[#toc-reference-to-another-element] +==================================================================== -L'argomento della regola o della condizione può essere un riferimento a un altro elemento. Ad esempio, è possibile convalidare dinamicamente che il campo `text` abbia un numero di caratteri pari al valore del campo `length`: +Come argomento per una regola o una condizione, si può passare anche un altro elemento del modulo. La regola utilizzerà il valore inserito successivamente dall'utente nel browser. Questo può essere utilizzato, ad esempio, per convalidare dinamicamente che l'elemento `password` contenga la stessa stringa dell'elemento `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/pl/controls.texy b/forms/pl/controls.texy index 8212606a9f..1eaf58a2a1 100644 --- a/forms/pl/controls.texy +++ b/forms/pl/controls.texy @@ -5,8 +5,8 @@ Elementy formularza Przegląd standardowych elementów formularza. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Dodaje jednolinijkowe pole tekstowe (klasa [TextInput |api:Nette\Forms\Controls\TextInput]). Jeśli użytkownik nie wypełni pola, zwraca pusty ciąg `''`, lub `setNullable()` może być użyty do określenia, że zwraca `null`. @@ -78,8 +78,8 @@ Element jest renderowany jako ``. Za pomocą metody `setHt Nette i przeglądarka Chrome akceptują zarówno przecinek, jak i kropkę jako separatory dziesiętne. Aby udostępnić tę funkcjonalność w przeglądarce Firefox, zaleca się ustawienie atrybutu `lang` albo dla określonego elementu, albo dla całej strony, na przykład, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Dodaje pole do wpisania adresu e-mail (klasa [TextInput |api:Nette\Forms\Controls\TextInput]). Jeśli użytkownik nie wypełni pola, zwraca pusty ciąg `''`, lub można określić `setNullable()`, aby zwrócić `null`. @@ -92,8 +92,8 @@ Sprawdza, czy podana wartość jest prawidłowym adresem e-mail. Nie sprawdza, c Maksymalna długość może być ograniczona przy użyciu `setMaxLength()`. [AddFilter() |validation#Modifying-Input-Values] może być użyty do modyfikacji wartości wprowadzonej przez użytkownika. Pusta wartość może być ustawiona przy użyciu `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Dodaje pole do wpisania hasła (klasa [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'Souhlasím s podmínkami') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Dodaje pola wyboru do zaznaczania wielu elementów (klasa [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Zwraca tablicę kluczy dla wybranych elementów. Metoda `getSelectedItems()` zwraca wartości zamiast kluczy. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Dodaje przyciski radiowe (klasa [RadioList |api:Nette\Forms\Controls\RadioList]). Zwraca klucz wybranego elementu lub `null`, jeśli użytkownik nic nie wybrał. Metoda `getSelectedItem()` zwraca wartość zamiast klucza. @@ -168,8 +168,8 @@ Element automatycznie sprawdza, czy nie doszło do podebrania oraz czy wybrana p Po ustawieniu domyślnego wybranego elementu sprawdza również, czy jest to jeden z oferowanych elementów, w przeciwnym razie rzuca wyjątek. To sprawdzanie można wyłączyć za pomocą `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Dodaje pole wyboru (klasa [SelectBox |api:Nette\Forms\Controls\SelectBox]). Zwraca klucz wybranego elementu lub `null`, jeśli użytkownik nic nie wybrał. Metoda `getSelectedItem()` zwraca wartość zamiast klucza. @@ -213,8 +213,8 @@ Pozycja automatycznie sprawdza, czy nie doszło do oszustwa oraz czy wybrany prz Gdy ustawiony jest domyślny wybrany element, sprawdza również, czy jest to jeden z oferowanych elementów, w przeciwnym razie rzuca wyjątek. To sprawdzanie można wyłączyć za pomocą `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Dodaje select box do wyboru wielu elementów (klasa [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Zwraca tablicę kluczy dla wybranych elementów. Metoda `getSelectedItems()` zwraca wartości zamiast kluczy. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Dodaje pole, które umożliwia użytkownikowi łatwe wprowadzanie czasu składającego się z godzin, minut i opcjonalnie sekund (klasa [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Dodaje pole, które umożliwia użytkownikowi łatwe wprowadzanie zarówno daty, jak i czasu składającego się z roku, miesiąca, dnia, godzin, minut i opcjonalnie sekund (klasa [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Dodaje ukryte pole (klasa [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Zvýšit plat') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Dodaje przycisk submit w postaci obrazka (klasa [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ Istnieje sposób definiowania nowych metod formularza do dodawania niestandardow ```php use Nette\Forms\Container; -// přidáme metodu addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// přidáme metodu addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'Alespoň 5 čísel', '[0-9]{5}'); }); diff --git a/forms/pl/validation.texy b/forms/pl/validation.texy index 743ac60ead..c8c6a1b9c6 100644 --- a/forms/pl/validation.texy +++ b/forms/pl/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) W Nett bardzo łatwo jest również reagować na spełnienie lub niespełnienie warunku po stronie JavaScript za pomocą metody `toggle()`, patrz [dynamiczny JavaScript |#Dynamic-JavaScript]. -Odniesienia między elementami .[#toc-references-between-controls] -================================================================= +Odniesienie do innego elementu .[#toc-reference-to-another-element] +=================================================================== -Odwołanie do innego elementu może być podane jako argument do reguły lub warunku. Tak więc, na przykład, możliwe jest dynamiczne sprawdzenie, czy element `text` ma tyle znaków, ile wynosi wartość elementu `length`: +Jako argument reguły lub warunku można również przekazać inny element formularza. Reguła użyje wtedy wartości wprowadzonej później przez użytkownika w przeglądarce. Można to wykorzystać na przykład do dynamicznego sprawdzenia, czy element `password` zawiera ten sam ciąg znaków, co element `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/pt/controls.texy b/forms/pt/controls.texy index c75f19cbf5..ef747f054a 100644 --- a/forms/pt/controls.texy +++ b/forms/pt/controls.texy @@ -5,8 +5,8 @@ Controles de formulário Visão geral dos controles de formulário incorporados. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Adiciona campo de texto de linha única (classe [TextInput |api:Nette\Forms\Controls\TextInput]). Se o usuário não preencher o campo, retorna uma string vazia `''`, ou usa `setNullable()` para alterá-lo para retornar `null`. @@ -78,8 +78,8 @@ O elemento é renderizado como ``. Ao usar o método `setH O Nette e o navegador Chrome aceitam tanto uma vírgula quanto um ponto como separadores decimais. Para disponibilizar essa funcionalidade no Firefox, é recomendável definir o atributo `lang` para o elemento específico ou para a página inteira, por exemplo, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Adiciona campo de endereço de e-mail com verificação de validade (classe [TextInput |api:Nette\Forms\Controls\TextInput]). Se o usuário não preencher o campo, devolve uma string vazia `''`, ou usa `setNullable()` para alterá-lo para retornar `null`. @@ -92,8 +92,8 @@ Verifica que o valor é um endereço de e-mail válido. Não verifica que o dom O comprimento máximo pode ser limitado usando `setMaxLength()`. O [addFilter() |validation#Modifying Input Values] permite alterar o valor inserido pelo usuário. Você pode definir o chamado valor vazio usando `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Adiciona o campo de senha (classe [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'I agree with terms') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Adiciona lista de caixas de seleção para selecionar vários itens (classe [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Retorna a matriz de chaves dos itens selecionados. O método `getSelectedItems()` retorna valores em vez de chaves. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Acrescenta botões de rádio (classe [RadioList |api:Nette\Forms\Controls\RadioList]). Devolve a chave do item selecionado, ou `null` caso o usuário não tenha selecionado nada. O método `getSelectedItem()` retorna um valor em vez de uma chave. @@ -168,8 +168,8 @@ O elemento verifica automaticamente que não houve falsificação e que o item s Quando o valor padrão é definido, ele também verifica se ele é um dos itens oferecidos, caso contrário, ele lança uma exceção. Esta verificação pode ser desativada com `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Adiciona caixa de seleção (classe [SelectBox |api:Nette\Forms\Controls\SelectBox]). Devolve a chave do item selecionado, ou `null` caso o usuário não tenha selecionado nada. O método `getSelectedItem()` retorna um valor em vez de uma chave. @@ -213,8 +213,8 @@ O elemento verifica automaticamente que não houve falsificação e que o item s Quando o valor padrão é definido, ele também verifica se ele é um dos itens oferecidos, caso contrário, ele lança uma exceção. Esta verificação pode ser desativada com `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Adiciona caixa de seleção de múltipla escolha (classe [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Devolve a matriz de chaves dos itens selecionados. O método `getSelectedItems()` retorna valores em vez de chaves. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Adiciona um campo que permite que o usuário insira facilmente o tempo composto por horas, minutos e, opcionalmente, segundos (classe [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Adiciona um campo que permite que o usuário insira facilmente data e hora, consistindo em ano, mês, dia, horas, minutos e, opcionalmente, segundos (classe [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Adiciona campo oculto (classe [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Adiciona botão submeter em forma de uma imagem (classe [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ Há uma maneira de definir novos métodos de formulário para adicionar elemento ```php use Nette\Forms\Container; -// adiciona método addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// adiciona método addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'At least 5 numbers', '[0-9]{5}'); }); diff --git a/forms/pt/validation.texy b/forms/pt/validation.texy index 803e9b2a38..25e1c29291 100644 --- a/forms/pt/validation.texy +++ b/forms/pt/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) Em Nette, é muito fácil reagir ao cumprimento ou não de uma condição no lado JavaScript usando o método `toggle()`, veja [Dynamic JavaScript |#Dynamic JavaScript]. -Referências entre controles .[#toc-references-between-controls] -=============================================================== +Referência a outro elemento .[#toc-reference-to-another-element] +================================================================ -A regra ou argumento de condição pode ser uma referência a outro elemento. Por exemplo, você pode validar dinamicamente que o `text` tem tantos caracteres quanto o valor do campo `length`: +Como argumento para uma regra ou condição, você também pode passar outro elemento de formulário. A regra usará então o valor inserido posteriormente pelo usuário no navegador. Isso pode ser usado, por exemplo, para validar dinamicamente se o elemento `password` contém a mesma cadeia de caracteres que o elemento `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/ro/controls.texy b/forms/ro/controls.texy index c59a23cb77..ad7d6c3228 100644 --- a/forms/ro/controls.texy +++ b/forms/ro/controls.texy @@ -5,8 +5,8 @@ Controale de formular Prezentare generală a controalelor de formular încorporate. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Adaugă un câmp de text cu o singură linie (clasa [TextInput |api:Nette\Forms\Controls\TextInput]). Dacă utilizatorul nu completează câmpul, acesta returnează un șir de caractere gol `''`, sau se poate folosi `setNullable()` pentru a schimba acest câmp și a returna `null`. @@ -78,8 +78,8 @@ Elementul este redat ca ``. Prin utilizarea metodei `setHt Nette și browserul Chrome acceptă atât o virgulă, cât și un punct ca separatori de zecimale. Pentru ca această funcționalitate să fie disponibilă în Firefox, se recomandă să setați atributul `lang` fie pentru elementul specific, fie pentru întreaga pagină, de exemplu, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Adaugă un câmp de adresă de e-mail cu verificare a validității (clasa [TextInput |api:Nette\Forms\Controls\TextInput]). Dacă utilizatorul nu completează câmpul, acesta returnează un șir de caractere gol `''`, sau se poate folosi `setNullable()` pentru a schimba acest câmp și a returna `null`. @@ -92,8 +92,8 @@ Verifică dacă valoarea este o adresă de e-mail validă. Nu se verifică dacă Lungimea maximă poate fi limitată folosind `setMaxLength()`. [AddFilter() |validation#Modifying Input Values] vă permite să modificați valoarea introdusă de utilizator. Puteți seta așa-numita "valoare goală" folosind `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Adaugă câmpul de parolă (clasa [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'I agree with terms') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Adaugă o listă de căsuțe de bifat pentru selectarea mai multor elemente (clasa [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Returnează matricea de chei a elementelor selectate. Metoda `getSelectedItems()` returnează valori în loc de chei. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Adaugă butoane radio (clasa [RadioList |api:Nette\Forms\Controls\RadioList]). Returnează cheia elementului selectat sau `null` dacă utilizatorul nu a selectat nimic. Metoda `getSelectedItem()` returnează o valoare în loc de o cheie. @@ -168,8 +168,8 @@ Elementul verifică automat dacă nu a existat nicio falsificare și dacă eleme În cazul în care este stabilită o valoare implicită, se verifică, de asemenea, dacă este unul dintre elementele oferite, în caz contrar se aruncă o excepție. Această verificare poate fi dezactivată cu `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Adaugă caseta de selectare (clasa [SelectBox |api:Nette\Forms\Controls\SelectBox]). Returnează cheia elementului selectat sau `null` dacă utilizatorul nu a selectat nimic. Metoda `getSelectedItem()` returnează o valoare în loc de o cheie. @@ -213,8 +213,8 @@ Elementul verifică în mod automat dacă nu a existat nicio falsificare și dac În cazul în care este stabilită o valoare implicită, se verifică, de asemenea, dacă este unul dintre elementele oferite, în caz contrar se aruncă o excepție. Această verificare poate fi dezactivată cu `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Adaugă caseta de selectare a mai multor opțiuni (clasa [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Returnează matricea de chei a elementelor selectate. Metoda `getSelectedItems()` returnează valori în loc de chei. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Adaugă un câmp care permite utilizatorului să introducă cu ușurință ora constând în ore, minute și, opțional, secunde (clasa [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Adaugă un câmp care permite utilizatorului să introducă cu ușurință atât data, cât și ora, constând în an, lună, zi, ore, minute și, opțional, secunde (clasa [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Adaugă un câmp ascuns (clasa [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Adaugă un buton de trimitere sub forma unei imagini (clasa [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ Există o modalitate de a defini noi metode de formular pentru adăugarea de ele ```php use Nette\Forms\Container; -// adaugă metoda addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// adaugă metoda addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'At least 5 numbers', '[0-9]{5}'); }); diff --git a/forms/ro/validation.texy b/forms/ro/validation.texy index 4ea0350077..2ad6144a72 100644 --- a/forms/ro/validation.texy +++ b/forms/ro/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) În Nette, este foarte ușor să reacționați la îndeplinirea sau nu a unei condiții pe partea de JavaScript folosind metoda `toggle()`, consultați [Dynamic JavaScript |#Dynamic JavaScript]. -Referințe între controale .[#toc-references-between-controls] -============================================================= +Trimitere la un alt element .[#toc-reference-to-another-element] +================================================================ -Argumentul regulii sau al condiției poate fi o referință la un alt element. De exemplu, puteți valida în mod dinamic faptul că `text` are atâtea caractere cât este valoarea câmpului `length`: +Ca argument pentru o regulă sau o condiție, puteți trece și un alt element de formular. Regula va utiliza apoi valoarea introdusă ulterior de utilizator în browser. Acest lucru poate fi utilizat, de exemplu, pentru a valida dinamic faptul că elementul `password` conține același șir de caractere ca elementul `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/ru/controls.texy b/forms/ru/controls.texy index 0fe006a83d..d4e26fffc1 100644 --- a/forms/ru/controls.texy +++ b/forms/ru/controls.texy @@ -5,8 +5,8 @@ Обзор встроенных элементов управления формой. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Добавляет однострочное текстовое поле (класс [TextInput |api:Nette\Forms\Controls\TextInput]). Если пользователь не заполнил поле, возвращается пустая строка `''`, или используйте `setNullable()` для возврата `null`. @@ -78,8 +78,8 @@ $form->addFloat('level', 'Level:') Nette и браузер Chrome принимают запятую и точку в качестве десятичных разделителей. Чтобы сделать эту функцию доступной в Firefox, рекомендуется установить атрибут `lang` либо для конкретного элемента, либо для всей страницы, например, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Добавляет поле адреса электронной почты с проверкой достоверности (класс [TextInput |api:Nette\Forms\Controls\TextInput]). Если пользователь не заполнил поле, возвращается пустая строка `''`, или используйте `setNullable()` для возврата `null`. @@ -92,8 +92,8 @@ $form->addEmail('email', 'Имейл:'); Максимальная длина может быть ограничена с помощью `setMaxLength()`. Функция [addFilter()|validation#Modifying-Input-Values] позволяет изменить введенное пользователем значение. Вы можете установить так называемое «пустое значение», используя `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Добавляет поле пароля (класс [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'Я согласен с условиями') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Добавляет список флажков для выбора нескольких элементов (класс [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Возвращает массив ключей выбранных элементов. Метод `getSelectedItems()` возвращает значения вместо ключей. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Добавляет радиокнопки (класс [RadioList |api:Nette\Forms\Controls\RadioList]). Возвращает ключ выбранного элемента или `null`, если пользователь ничего не выбрал. Метод `getSelectedItem()` возвращает значение вместо ключа. @@ -168,8 +168,8 @@ $form->addRadioList('gender', 'Пол:', $sex); При установке значения по умолчанию проверяется, что оно является одним из предлагаемых элементов, в противном случае возникает исключение. Эта проверка может быть отключена с помощью `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Добавляет поле выбора (класс [SelectBox |api:Nette\Forms\Controls\SelectBox]). Возвращает ключ выбранного элемента или `null`, если пользователь ничего не выбрал. Метод `getSelectedItem()` возвращает значение вместо ключа. @@ -213,8 +213,8 @@ $form->addSelect('country', 'Страна:', $countries) При установке значения по умолчанию проверяется, что оно является одним из предлагаемых элементов, в противном случае возникает исключение. Эта проверка может быть отключена с помощью `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Добавляет окно выбора нескольких вариантов (класс [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Возвращает массив ключей выбранных элементов. Метод `getSelectedItems()` возвращает значения вместо ключей. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Добавляет поле, позволяющее пользователю легко вводить время, состоящее из часов, минут и, по желанию, секунд (класс [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Добавляет поле, позволяющее пользователю легко вводить дату и время, состоящие из года, месяца, дня, часов, минут и, по желанию, секунд (класс [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Добавляет скрытое поле (класс [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Поднять зарплату') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Добавляет кнопку отправки в виде изображения (класс [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ $form->addComponent(new DateInput('Дата:'), 'date'); ```php use Nette\Forms\Container; -// добавляет метод addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// добавляет метод addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'Не менее 5 номеров', '[0-9]{5}'); }); diff --git a/forms/ru/validation.texy b/forms/ru/validation.texy index a48bb25189..26b6a03f38 100644 --- a/forms/ru/validation.texy +++ b/forms/ru/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) В Nette очень легко реагировать на выполнение или невыполнение условия на стороне JavaScript, используя метод `toggle()`, см. [#Динамический JavaScript]. -Ссылки между элементами управления .[#toc-references-between-controls] -====================================================================== +Ссылка на другой элемент .[#toc-reference-to-another-element] +============================================================= -Аргумент правила или условия может быть ссылкой на другой элемент. Например, вы можете динамически подтвердить, что `text` имеет столько символов, сколько указано в поле `length`: +В качестве аргумента для правила или условия можно также передать другой элемент формы. Тогда правило будет использовать значение, введенное позже пользователем в браузере. Это можно использовать, например, для динамической проверки того, что элемент `password` содержит ту же строку, что и элемент `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/sl/controls.texy b/forms/sl/controls.texy index ce04769991..7d27e68044 100644 --- a/forms/sl/controls.texy +++ b/forms/sl/controls.texy @@ -5,8 +5,8 @@ Krmilniki obrazca Pregled vgrajenih kontrolnih elementov obrazca. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Doda enovrstično besedilno polje (razred [TextInput |api:Nette\Forms\Controls\TextInput]). Če uporabnik ne izpolni polja, vrne prazen niz `''`, ali pa ga z uporabo `setNullable()` spremeni tako, da vrne `null`. @@ -78,8 +78,8 @@ Element se prikaže kot ``. Z uporabo metode `setHtmlType( Nette in brskalnik Chrome kot decimalno ločilo sprejemata tako vejico kot piko. Če želite, da je ta funkcionalnost na voljo v brskalniku Firefox, je priporočljivo nastaviti atribut `lang` bodisi za določen element bodisi za celotno stran, npr, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Doda polje e-poštnega naslova s preverjanjem veljavnosti (razred [TextInput |api:Nette\Forms\Controls\TextInput]). Če uporabnik ne izpolni polja, vrne prazen niz `''`, ali pa ga z uporabo `setNullable()` spremeni tako, da vrne `null`. @@ -92,8 +92,8 @@ Preveri, ali je vrednost veljavni e-poštni naslov. Ne preveri, ali domena dejan Največjo dolžino lahko omejite z uporabo `setMaxLength()`. S funkcijo [addFilter() |validation#Modifying Input Values] lahko spremenite uporabniško vneseno vrednost. Tako imenovano prazno vrednost lahko nastavite z uporabo `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Doda polje za geslo (razred [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'I agree with terms') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Doda seznam potrditvenih polj za izbiro več elementov (razred [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Vrne polje ključev izbranih elementov. Metoda `getSelectedItems()` namesto ključev vrne vrednosti. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Doda radijske gumbe (razred [RadioList |api:Nette\Forms\Controls\RadioList]). Vrne ključ izbranega elementa ali `null`, če uporabnik ni izbral ničesar. Metoda `getSelectedItem()` namesto ključa vrne vrednost. @@ -168,8 +168,8 @@ Element samodejno preveri, ali ni prišlo do ponarejanja in ali je izbrani eleme Če je nastavljena privzeta vrednost, preveri tudi, ali gre za enega od ponujenih elementov, sicer vrže izjemo. To preverjanje je mogoče izklopiti z metodo `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Doda izbirno polje (razred [SelectBox |api:Nette\Forms\Controls\SelectBox]). Vrne ključ izbranega elementa ali `null`, če uporabnik ni izbral ničesar. Metoda `getSelectedItem()` namesto ključa vrne vrednost. @@ -213,8 +213,8 @@ Element samodejno preveri, ali ni prišlo do ponarejanja in ali je izbrani eleme Če je nastavljena privzeta vrednost, preveri tudi, ali gre za enega od ponujenih elementov, sicer vrže izjemo. To preverjanje je mogoče izklopiti z metodo `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Doda izbirno polje za več možnosti (razred [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Vrne polje ključev izbranih elementov. Metoda `getSelectedItems()` namesto ključev vrne vrednosti. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Doda polje, ki uporabniku omogoča enostaven vnos časa, sestavljenega iz ur, minut in po želji sekund (razred [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Doda polje, ki uporabniku omogoča enostaven vnos datuma in časa, sestavljenega iz leta, meseca, dneva, ur, minut in po želji sekund (razred [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Doda skrito polje (razred [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Doda gumb za oddajo v obliki slike (razred [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ Za dodajanje elementov po meri (npr. `$form->addZip()`) lahko določite nove met ```php use Nette\Forms\Container; -// doda metodo addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// doda metodo addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'At least 5 numbers', '[0-9]{5}'); }); diff --git a/forms/sl/validation.texy b/forms/sl/validation.texy index ee2fdd7143..96ff85860a 100644 --- a/forms/sl/validation.texy +++ b/forms/sl/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) V Nette je zelo enostavno reagirati na izpolnitev ali neizpolnitev pogoja na strani JavaScript z uporabo metode `toggle()`, glejte [Dinamični JavaScript |#Dynamic JavaScript]. -Sklicevanja med kontrolniki .[#toc-references-between-controls] -=============================================================== +Sklicevanje na drug element .[#toc-reference-to-another-element] +================================================================ -Argument pravila ali pogoja je lahko sklic na drug element. Na primer, dinamično lahko preverite, da ima `text` toliko znakov, kolikor je vrednost polja `length`: +Kot argument za pravilo ali pogoj lahko posredujete tudi drug element obrazca. Pravilo bo nato uporabilo vrednost, ki jo bo uporabnik kasneje vnesel v brskalnik. To lahko na primer uporabite za dinamično preverjanje, ali element `password` vsebuje isti niz kot element `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/tr/controls.texy b/forms/tr/controls.texy index ce63ffe2ad..f430b95d5c 100644 --- a/forms/tr/controls.texy +++ b/forms/tr/controls.texy @@ -5,8 +5,8 @@ Form Kontrolleri Yerleşik form kontrollerine genel bakış. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Tek satırlık metin alanı ekler ( [TextInput |api:Nette\Forms\Controls\TextInput] sınıfı). Kullanıcı alanı doldurmazsa, boş bir dize döndürür `''` veya `null` döndürmek üzere değiştirmek için `setNullable()` kullanın. @@ -78,8 +78,8 @@ $form->addFloat('level', 'Level:') Nette ve Chrome tarayıcısı ondalık ayırıcı olarak hem virgül hem de nokta kabul eder. Bu işlevi Firefox'ta kullanılabilir hale getirmek için, örneğin belirli bir öğe veya tüm sayfa için `lang` özniteliğinin ayarlanması önerilir, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Geçerlilik kontrolü ile e-posta adresi alanı ekler (class [TextInput |api:Nette\Forms\Controls\TextInput]). Kullanıcı alanı doldurmazsa, boş bir dize döndürür `''` veya `null` döndürmek üzere değiştirmek için `setNullable()` kullanın. @@ -92,8 +92,8 @@ Değerin geçerli bir e-posta adresi olduğunu doğrular. Etki alanının gerçe Maksimum uzunluk `setMaxLength()` kullanılarak sınırlandırılabilir. [addFilter() |validation#Modifying Input Values] kullanıcı tarafından girilen değeri değiştirmenize olanak tanır. Boş değer olarak adlandırılan değeri `setEmptyValue()` adresini kullanarak ayarlayabilirsiniz. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Parola alanı ekler ( [TextInput |api:Nette\Forms\Controls\TextInput] sınıfı). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'I agree with terms') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Birden fazla öğe seçmek için onay kutuları listesi ekler (sınıf [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Seçilen öğelerin anahtar dizisini döndürür. `getSelectedItems()` yöntemi anahtarlar yerine değerler döndürür. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== [Radyo |api:Nette\Forms\Controls\RadioList] düğmeleri ekler ( [RadioList |api:Nette\Forms\Controls\RadioList] sınıfı). Seçilen öğenin anahtarını veya kullanıcı herhangi bir şey seçmediyse `null` adresini döndürür. `getSelectedItem()` yöntemi, anahtar yerine bir değer döndürür. @@ -168,8 +168,8 @@ Kullanabilirsiniz `setDisabled(['m'])` tek tek öğeleri devre dışı bırakmak Varsayılan değer ayarlandığında, bunun sunulan öğelerden biri olup olmadığını da kontrol eder, aksi takdirde bir istisna atar. Bu kontrol `checkDefaultValue(false)` ile kapatılabilir. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Seçme kutusu ekler ( [SelectBox |api:Nette\Forms\Controls\SelectBox] sınıfı). Seçilen öğenin anahtarını veya kullanıcı herhangi bir şey seçmediyse `null` adresini döndürür. `getSelectedItem()` yöntemi, anahtar yerine bir değer döndürür. @@ -213,8 +213,8 @@ Kullanabilirsiniz `setDisabled(['CZ', 'SK'])` tek tek öğeleri devre dışı b Varsayılan değer ayarlandığında, bunun sunulan öğelerden biri olup olmadığını da kontrol eder, aksi takdirde bir istisna atar. Bu kontrol `checkDefaultValue(false)` ile kapatılabilir. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Çok seçenekli seçim kutusu ekler ( [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox] sınıfı). Seçilen öğelerin anahtar dizisini döndürür. `getSelectedItems()` yöntemi anahtarlar yerine değerler döndürür. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Kullanıcının saat, dakika ve isteğe bağlı olarak saniyelerden oluşan zamanı kolayca girmesini sağlayan bir alan ekler ( [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl] sınıfı). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Kullanıcının yıl, ay, gün, saat, dakika ve isteğe bağlı olarak saniyeden oluşan tarih ve saati kolayca girmesini sağlayan bir alan ekler ( [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl] sınıfı). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Gizli alan ekler ( [HiddenField |api:Nette\Forms\Controls\HiddenField] sınıfı). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Raise salary') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Resim biçiminde gönder düğmesi ekler ( [ImageButton |api:Nette\Forms\Controls\ImageButton] sınıfı). @@ -525,8 +525,8 @@ Form, [Container | component-model:#Container] sınıfının bir torunudur ve el ```php use Nette\Forms\Container; -// addZip(string $name, string $label = null) yöntemini ekler -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// addZip(string $name, ?string $label = null) yöntemini ekler +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'At least 5 numbers', '[0-9]{5}'); }); diff --git a/forms/tr/validation.texy b/forms/tr/validation.texy index 5c1e590924..ee6bf35514 100644 --- a/forms/tr/validation.texy +++ b/forms/tr/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) Nette, `toggle()` yöntemini kullanarak [JavaScript |#Dynamic JavaScript] tarafında bir koşulun yerine getirilip getirilmemesine tepki vermek çok kolaydır, bkz. -Kontroller Arasındaki Referanslar .[#toc-references-between-controls] -===================================================================== +Başka Bir Öğeye Referans .[#toc-reference-to-another-element] +============================================================= -Kural veya koşul bağımsız değişkeni başka bir öğeye referans olabilir. Örneğin, `text` adresinin `length` alanının değeri kadar karaktere sahip olduğunu dinamik olarak doğrulayabilirsiniz: +Bir kural veya koşul için bağımsız değişken olarak başka bir form öğesi de iletebilirsiniz. Kural daha sonra kullanıcı tarafından tarayıcıda girilen değeri kullanacaktır. Bu, örneğin, `password` öğesinin `password_confirm` öğesiyle aynı dizeyi içerdiğini dinamik olarak doğrulamak için kullanılabilir: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/forms/uk/controls.texy b/forms/uk/controls.texy index a79b85c3d9..31182bceb0 100644 --- a/forms/uk/controls.texy +++ b/forms/uk/controls.texy @@ -5,8 +5,8 @@ Огляд вбудованих елементів керування формою. -addText(string|int $name, $label=null): TextInput .[method] -=========================================================== +addText(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +======================================================================================== Додає однорядкове текстове поле (клас [TextInput |api:Nette\Forms\Controls\TextInput]). Якщо користувач не заповнив поле, повертається порожній рядок `''`, або використовуйте `setNullable()` для повернення `null`. @@ -78,8 +78,8 @@ $form->addFloat('level', 'Level:') Nette і браузер Chrome приймають як кому, так і крапку в якості десяткових роздільників. Щоб зробити цю функціональність доступною у Firefox, рекомендується встановити атрибут `lang` або для конкретного елемента, або, наприклад, для всієї сторінки, ``. -addEmail(string|int $name, $label=null): TextInput .[method] -============================================================ +addEmail(string|int $name, $label=null, int $maxLength=255): TextInput .[method] +================================================================================ Додає поле адреси електронної пошти з перевіркою достовірності (клас [TextInput |api:Nette\Forms\Controls\TextInput]). Якщо користувач не заповнив поле, повертається порожній рядок `''`, або використовуйте `setNullable()` для повернення `null`. @@ -92,8 +92,8 @@ $form->addEmail('email', 'Имейл:'); Максимальна довжина може бути обмежена за допомогою `setMaxLength()`. Функція [addFilter() |validation#Modifying-Input-Values] дозволяє змінити введене користувачем значення. Ви можете встановити так зване "порожнє значення", використовуючи `setEmptyValue()`. -addPassword(string|int $name, $label=null): TextInput .[method] -=============================================================== +addPassword(string|int $name, $label=null, $cols, ?int $maxLength=null): TextInput .[method] +============================================================================================ Додає поле пароля (клас [TextInput |api:Nette\Forms\Controls\TextInput]). @@ -118,8 +118,8 @@ $form->addCheckbox('agree', 'Я согласен с условиями') ``` -addCheckboxList(string|int $name, $label=null, array $items=null): CheckboxList .[method] -========================================================================================= +addCheckboxList(string|int $name, $label=null, ?array $items=null): CheckboxList .[method] +========================================================================================== Додає список прапорців для вибору кількох елементів (клас [CheckboxList |api:Nette\Forms\Controls\CheckboxList]). Повертає масив ключів обраних елементів. Метод `getSelectedItems()` повертає значення замість ключів. @@ -146,8 +146,8 @@ $form->setHtmlAttribute('data-nette-compact'); ``` -addRadioList(string|int $name, $label=null, array $items=null): RadioList .[method] -=================================================================================== +addRadioList(string|int $name, $label=null, ?array $items=null): RadioList .[method] +==================================================================================== Додає радіокнопки (клас [RadioList |api:Nette\Forms\Controls\RadioList]). Повертає ключ обраного елемента або `null`, якщо користувач нічого не вибрав. Метод `getSelectedItem()` повертає значення замість ключа. @@ -168,8 +168,8 @@ $form->addRadioList('gender', 'Пол:', $sex); Під час встановлення значення за замовчуванням перевіряється, що воно є одним із запропонованих елементів, інакше виникає виняток. Цю перевірку можна вимкнути за допомогою `checkDefaultValue(false)`. -addSelect(string|int $name, $label=null, array $items=null): SelectBox .[method] -================================================================================ +addSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): SelectBox .[method] +================================================================================================== Додає поле вибору (клас [SelectBox |api:Nette\Forms\Controls\SelectBox]). Повертає ключ обраного елемента або `null`, якщо користувач нічого не вибрав. Метод `getSelectedItem()` повертає значення замість ключа. @@ -213,8 +213,8 @@ $form->addSelect('country', 'Страна:', $countries) Під час встановлення значення за замовчуванням перевіряється, що воно є одним із запропонованих елементів, інакше виникає виняток. Цю перевірку можна вимкнути за допомогою `checkDefaultValue(false)`. -addMultiSelect(string|int $name, $label=null, array $items=null): MultiSelectBox .[method] -========================================================================================== +addMultiSelect(string|int $name, $label=null, ?array $items=null, ?int $size=null): MultiSelectBox .[method] +============================================================================================================ Додає вікно вибору кількох варіантів (клас [MultiSelectBox |api:Nette\Forms\Controls\MultiSelectBox]). Повертає масив ключів обраних елементів. Метод `getSelectedItems()` повертає значення замість ключів. @@ -287,8 +287,8 @@ $form->addDate('date', 'Date:') ``` -addTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -================================================================================================================= +addTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=============================================================================================================== Додає поле, яке дозволяє користувачеві легко вводити час, що складається з годин, хвилин і необов'язково секунд (клас [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -307,8 +307,8 @@ $form->addTime('time', 'Time:') ``` -addDateTime(string|int $name, $label=null, bool $withSeconds = false): DateTimeControl .[method]{data-version:3.1.14} -===================================================================================================================== +addDateTime(string|int $name, $label=null, bool $withSeconds=false): DateTimeControl .[method]{data-version:3.1.14} +=================================================================================================================== Додає поле, яке дозволяє користувачеві легко вводити як дату, так і час, що складається з року, місяця, дня, годин, хвилин і необов'язково секунд (клас [DateTimeControl |api:Nette\Forms\Controls\DateTimeControl]). @@ -339,8 +339,8 @@ $form->addColor('color', 'Color:') ``` -addHidden(string|int $name, string $default=null): HiddenField .[method] -======================================================================== +addHidden(string|int $name, ?string $default=null): HiddenField .[method] +========================================================================= Додає приховане поле (клас [HiddenField |api:Nette\Forms\Controls\HiddenField]). @@ -391,8 +391,8 @@ $form->addButton('raise', 'Поднять зарплату') ``` -addImageButton(string|int $name, string $src=null, string $alt=null): ImageButton .[method] -=========================================================================================== +addImageButton(string|int $name, ?string $src=null, ?string $alt=null): ImageButton .[method] +============================================================================================= Додає кнопку відправлення у вигляді зображення (клас [ImageButton |api:Nette\Forms\Controls\ImageButton]). @@ -525,8 +525,8 @@ $form->addComponent(new DateInput('Дата:'), 'date'); ```php use Nette\Forms\Container; -// додає метод addZip(string $name, string $label = null) -Container::extensionMethod('addZip', function (Container $form, string $name, string $label = null) { +// додає метод addZip(string $name, ?string $label = null) +Container::extensionMethod('addZip', function (Container $form, string $name, ?string $label = null) { return $form->addText($name, $label) ->addRule($form::Pattern, 'Не менше 5 номерів', '[0-9]{5}'); }); diff --git a/forms/uk/validation.texy b/forms/uk/validation.texy index f86c24d604..493745cbfc 100644 --- a/forms/uk/validation.texy +++ b/forms/uk/validation.texy @@ -155,15 +155,15 @@ $form->addText(/* ... */) У Nette дуже легко реагувати на виконання або невиконання умови на стороні JavaScript, використовуючи метод `toggle()`, див. [Динамічний JavaScript |#Динамический JavaScript]. -Посилання між елементами керування .[#toc-references-between-controls] -====================================================================== +Посилання на інший елемент .[#toc-reference-to-another-element] +=============================================================== -Аргумент правила або умови може бути посиланням на інший елемент. Наприклад, ви можете динамічно підтвердити, що `text` має стільки символів, скільки вказано в полі `length`: +Як аргумент для правила або умови ви також можете передати інший елемент форми. Тоді правило буде використовувати значення, яке користувач введе пізніше в браузері. Це можна використовувати, наприклад, для динамічної перевірки того, що елемент `password` містить той самий рядок, що й елемент `password_confirm`: ```php -$form->addInteger('length'); -$form->addText('text') - ->addRule($form::Length, null, $form['length']); +$form->addPassword('password', 'Password'); +$form->addPassword('password_confirm', 'Confirm Password') + ->addRule($form::Equal, 'The passwords do not match', $form['password']); ``` diff --git a/http/bg/request.texy b/http/bg/request.texy index b3b07151a1..f3821edcd2 100644 --- a/http/bg/request.texy +++ b/http/bg/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Предупреждение: Браузърите не изпращат фрагмент към сървъра, така че `$url->getFragment()` ще върне празен низ. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Връща параметрите на заявката GET: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // връща GET параметър 'id' ( ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Връща параметрите на заявката POST: ```php diff --git a/http/bg/response.texy b/http/bg/response.texy index 53743a6bd4..3f9b042847 100644 --- a/http/bg/response.texy +++ b/http/bg/response.texy @@ -15,8 +15,8 @@ Nette капсулира HTTP отговора в обекти с ясен API, За разлика от [Nette\Http\Request |request], този обект е променлив, така че можете да използвате сетъри, за да промените състоянието, т.е. да изпратите заглавия. Не забравяйте, че всички задаващи устройства **трябва да бъдат извикани преди да бъде изпратен какъвто и да е действителен изход.** Методът `isSent()` показва дали изходът е изпратен. Ако той връща `true`, всеки опит за изпращане на заглавие хвърля изключение `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Променя [кода на отговора на |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] състоянието. За по-добра четливост на изходния код се препоръчва да се използват [предварително дефинирани константи |api:Nette\Http\IResponse] вместо реални числа. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Изпраща заглавието `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Изпраща бисквитка. Стойности на параметрите по подразбиране: | `$path` | `'/'` | с покритие на всички пътища в (под)домейна *(може да се конфигурира)*. @@ -138,8 +138,8 @@ $httpResponse->setCookie('lang', 'en', '100 days'); Константите `Response::SameSiteLax`, `SameSiteStrict` и `SameSiteNone` могат да се използват за стойността `$sameSite`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Изтрива "бисквитката". Настройките по подразбиране имат следните стойности: - `$path` с обхват върху всички директории (`'/'`) - `$domain` с обхват в текущия (под)домейн, но не и в неговите поддомейни. diff --git a/http/bg/sessions.texy b/http/bg/sessions.texy index 03fb06e43e..1a8af7dcf7 100644 --- a/http/bg/sessions.texy +++ b/http/bg/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Задава времето за неактивност, след което сесията се затваря. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Задава параметрите за бисквитките. Настройките по подразбиране могат да бъдат променени в раздела за [конфигурация |configuration#Session-Cookie]. diff --git a/http/cs/request.texy b/http/cs/request.texy index 16131a9283..b5f46a1902 100644 --- a/http/cs/request.texy +++ b/http/cs/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Upozornění: prohlížeče neodesílají na server fragment, takže `$url->getFragment()` bude vracet prázdný řetězec. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Vrací parametry GET požadavku. ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // vrací GET parametr 'id' (nebo null) ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Vrací parametry POST požadavku. ```php diff --git a/http/cs/response.texy b/http/cs/response.texy index ef4f008eca..6e243a9282 100644 --- a/http/cs/response.texy +++ b/http/cs/response.texy @@ -15,8 +15,8 @@ Nette\Http\Response Objekt je na rozdíl od [Nette\Http\Request|request] mutable, tedy pomocí setterů můžete měnit stav, tedy např. odesílat hlavičky. Nezapomeňte, že všechny settery musí být volány **před odesláním jakéhokoli výstupu.** Jestli už byl výstup odeslán prozradí metoda `isSent()`. Pokud vrací `true`, každý pokus o odeslání hlavičky vyvolá výjimku `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Změní stavový [kód odpovědi |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10]. Kvůli lepší srozumitelnosti zdrojového kódu doporučujeme pro kód používat místo čísel [předdefinované konstanty |api:Nette\Http\IResponse]. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Mění hlavičku `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('faktura.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Odešle cookie. Výchozí hodnoty parametrů: | `$path` | `'/'` | cookie má dosah na všechny cesty v (sub)doméně *(konfigurovatelné)* @@ -138,8 +138,8 @@ Parametr `$domain` určuje, které domény mohou cookie přijímat. Není-li uve Pro hodnotu `$sameSite` můžete použít konstanty `Response::SameSiteLax`, `SameSiteStrict` a `SameSiteNone`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Smaže cookie. Výchozí hodnoty parametrů jsou: - `$path` s dosahem na všechny adresáře (`'/'`) - `$domain` s dosahem na aktuální (sub)doménu, ale nikoliv její subdomény diff --git a/http/cs/sessions.texy b/http/cs/sessions.texy index 2580cca56e..695b163cc7 100644 --- a/http/cs/sessions.texy +++ b/http/cs/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Nastaví dobu neaktivity po které session vyexpiruje. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Nastavení parametrů pro cookie. Výchozí hodnoty parametrů můžete změnit v [konfiguraci|configuration#Session cookie]. diff --git a/http/de/request.texy b/http/de/request.texy index a566bd252f..593fb749ce 100644 --- a/http/de/request.texy +++ b/http/de/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Warnung: Browser senden keine Fragmente an den Server, so dass `$url->getFragment()` einen leeren String zurückgibt. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Gibt GET-Anfrageparameter zurück: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // liefert den GET-Parameter 'id' (oder null ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Gibt die Parameter der POST-Anforderung zurück: ```php diff --git a/http/de/response.texy b/http/de/response.texy index 4dff8b879d..5de925759e 100644 --- a/http/de/response.texy +++ b/http/de/response.texy @@ -15,8 +15,8 @@ Nette\Http\Response .[#toc-nette-http-response] Im Gegensatz zu [Nette\Http\Request |request] ist dieses Objekt veränderbar, so dass Sie Setter verwenden können, um den Status zu ändern, d.h. um Header zu senden. Denken Sie daran, dass alle Setter **aufgerufen werden müssen, bevor die eigentliche Ausgabe gesendet wird.** Die Methode `isSent()` zeigt an, ob die Ausgabe gesendet wurde. Wenn sie `true` zurückgibt, löst jeder Versuch, eine Kopfzeile zu senden, eine `Nette\InvalidStateException` Ausnahme aus. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Ändert einen [Status-Antwort-Code |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10]. Zur besseren Lesbarkeit des Quellcodes wird empfohlen, [vordefinierte Konstanten |api:Nette\Http\IResponse] anstelle von tatsächlichen Zahlen zu verwenden. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Sendet den Header `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Sendet ein Cookie. Standard-Parameterwerte: | `$path` | `'/'` | mit Geltungsbereich auf alle Pfade der (Sub-)Domain *(konfigurierbar)* @@ -138,8 +138,8 @@ Die Option `$domain` bestimmt, welche Domänen (Ursprünge) Cookies akzeptieren Sie können die Konstanten `Response::SameSiteLax`, `SameSiteStrict` und `SameSiteNone` für den Wert `$sameSite` verwenden. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Löscht ein Cookie. Die Standardwerte der Parameter sind: - `$path` mit Geltungsbereich für alle Verzeichnisse (`'/'`) - `$domain` mit Geltungsbereich der aktuellen (Sub-)Domain, aber nicht deren Subdomains diff --git a/http/de/sessions.texy b/http/de/sessions.texy index 30f15791ec..54903bff75 100644 --- a/http/de/sessions.texy +++ b/http/de/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Legt die Zeit der Inaktivität fest, nach der die Session abläuft. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Legt Parameter für Cookies fest. Sie können die Standardparameterwerte in [configuration |configuration#Session cookie] ändern. diff --git a/http/el/request.texy b/http/el/request.texy index c1fe624e5a..d1a7ee93fc 100644 --- a/http/el/request.texy +++ b/http/el/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Προειδοποίηση: Οι φυλλομετρητές δεν στέλνουν ένα τμήμα στον διακομιστή, οπότε το `$url->getFragment()` θα επιστρέψει μια κενή συμβολοσειρά. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Επιστρέφει τις παραμέτρους της αίτησης GET: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // επιστρέφει την παράμε ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Επιστρέφει παραμέτρους αίτησης POST: ```php diff --git a/http/el/response.texy b/http/el/response.texy index dfd85f5a6c..d7e7c946aa 100644 --- a/http/el/response.texy +++ b/http/el/response.texy @@ -15,8 +15,8 @@ Nette\Http\Response .[#toc-nette-http-response] Σε αντίθεση με το [Nette\Http\Request |request], αυτό το αντικείμενο είναι μεταβλητό, οπότε μπορείτε να χρησιμοποιήσετε ρυθμιστές για να αλλάξετε την κατάσταση, δηλαδή να στείλετε κεφαλίδες. Να θυμάστε ότι όλοι οι ρυθμιστές **πρέπει να κληθούν πριν από την αποστολή της πραγματικής εξόδου.** Η μέθοδος `isSent()` δηλώνει αν η έξοδος έχει σταλεί. Εάν επιστρέφει `true`, κάθε προσπάθεια αποστολής κεφαλίδας προκαλεί μια εξαίρεση `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Αλλάζει έναν [κωδικό απόκρισης |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] κατάστασης. Για καλύτερη αναγνωσιμότητα του πηγαίου κώδικα συνιστάται η χρήση [προκαθορισμένων σταθερών |api:Nette\Http\IResponse] αντί πραγματικών αριθμών. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Αποστέλλει την επικεφαλίδα `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Αποστέλλει ένα cookie. Προεπιλεγμένες τιμές παραμέτρων: | `$path` | `'/'` | με εμβέλεια σε όλες τις διαδρομές στον (υπο)τομέα *(διαμορφώσιμο)* @@ -138,8 +138,8 @@ $httpResponse->setCookie('lang', 'en', '100 days'); Μπορείτε να χρησιμοποιήσετε τις σταθερές `Response::SameSiteLax`, `SameSiteStrict` και `SameSiteNone` για την τιμή `$sameSite`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Διαγράφει ένα cookie. Οι προεπιλεγμένες τιμές των παραμέτρων είναι: - `$path` με εμβέλεια σε όλους τους καταλόγους (`'/'`) - `$domain` με πεδίο εφαρμογής τον τρέχοντα (υπο)τομέα, αλλά όχι τους υποτομείς του diff --git a/http/el/sessions.texy b/http/el/sessions.texy index c3d21ff3b6..338f3046cd 100644 --- a/http/el/sessions.texy +++ b/http/el/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Ορίζει το χρόνο αδράνειας μετά τον οποίο λήγει η σύνοδος. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Ορίζει παραμέτρους για τα cookies. Μπορείτε να αλλάξετε τις προεπιλεγμένες τιμές των παραμέτρων στο [configuration |configuration#Session cookie]. diff --git a/http/en/request.texy b/http/en/request.texy index 2b59fbd5ce..68b6ff95fc 100644 --- a/http/en/request.texy +++ b/http/en/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Warning: Browsers do not send a fragment to the server, so `$url->getFragment()` will return an empty string. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Returns GET request parameters: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // returns GET parameter 'id' (or null) ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Returns POST request parameters: ```php diff --git a/http/en/response.texy b/http/en/response.texy index 58d61af63e..88afd3812d 100644 --- a/http/en/response.texy +++ b/http/en/response.texy @@ -15,8 +15,8 @@ Nette\Http\Response Unlike [Nette\Http\Request|request], this object is mutable, so you can use setters to change the state, ie to send headers. Remember that all setters **must be called before any actual output is sent.** The `isSent()` method tells if output have been sent. If it returns `true`, each attempt to send a header throws an `Nette\InvalidStateException` exception. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Changes a status [response code |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10]. For better source code readability it is recommended to use [predefined constants |api:Nette\Http\IResponse] instead of actual numbers. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Sends the header `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Sends a cookie. Default parameter values: | `$path` | `'/'` | with scope to all paths on (sub)domain *(configurable)* @@ -138,8 +138,8 @@ The `$domain` option determines which domains (origins) can accept cookies. If n You can use the `Response::SameSiteLax`, `SameSiteStrict` and `SameSiteNone` constants for the `$sameSite` value. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Deletes a cookie. The default values ​​of the parameters are: - `$path` with scope to all directories (`'/'`) - `$domain` with scope of the current (sub)domain, but not its subdomains diff --git a/http/en/sessions.texy b/http/en/sessions.texy index 697105fc43..7d57c8599a 100644 --- a/http/en/sessions.texy +++ b/http/en/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Sets the time of inactivity after which the session expires. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Sets parameters for cookies. You can change the default parameter values in [configuration#Session cookie]. diff --git a/http/es/request.texy b/http/es/request.texy index aa48dc8a68..301b14b851 100644 --- a/http/es/request.texy +++ b/http/es/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Advertencia: Los navegadores no envían fragmentos al servidor, por lo que `$url->getFragment()` devolverá una cadena vacía. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Devuelve los parámetros de la petición GET: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // devuelve el parámetro GET 'id' (o null) ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Devuelve los parámetros de la solicitud POST: ```php diff --git a/http/es/response.texy b/http/es/response.texy index 8ae2418680..aa7869ce5e 100644 --- a/http/es/response.texy +++ b/http/es/response.texy @@ -15,8 +15,8 @@ Nette\Http\Response .[#toc-nette-http-response] A diferencia de [Nette\Http\Request |request], este objeto es mutable, por lo que puede utilizar setters para cambiar el estado, es decir, para enviar cabeceras. Recuerde que todos los setters **deben ser llamados antes de que cualquier salida real sea enviada.** El método `isSent()` dice si la salida ha sido enviada. Si devuelve `true`, cada intento de enviar una cabecera lanza una excepción `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Cambia un [código de |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] estado de [respuesta |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10]. Para una mejor legibilidad del código fuente se recomienda utilizar [constantes predefinidas |api:Nette\Http\IResponse] en lugar de números reales. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Envía la cabecera `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Envía una cookie. Valores por defecto de los parámetros: | `$path` | `'/'` | con alcance a todas las rutas del (sub)dominio *(configurable)* @@ -138,8 +138,8 @@ La opción `$domain` determina qué dominios (orígenes) pueden aceptar cookies. Puede utilizar las constantes `Response::SameSiteLax`, `SameSiteStrict` y `SameSiteNone` para el valor `$sameSite`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Elimina una cookie. Los valores por defecto de los parámetros son - `$path` con alcance a todos los directorios (`'/'`) - `$domain` con alcance al (sub)dominio actual, pero no a sus subdominios diff --git a/http/es/sessions.texy b/http/es/sessions.texy index 74e7998749..8a6976b0db 100644 --- a/http/es/sessions.texy +++ b/http/es/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Establece el tiempo de inactividad tras el cual expira la sesión. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Establece los parámetros para las cookies. Puede cambiar los valores predeterminados de los parámetros en [configuration |configuration#Session cookie]. diff --git a/http/fr/request.texy b/http/fr/request.texy index 7b6b805c90..8836be0815 100644 --- a/http/fr/request.texy +++ b/http/fr/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Attention : Les navigateurs n'envoient pas de fragment au serveur, de sorte que `$url->getFragment()` renvoie une chaîne vide. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Renvoie les paramètres de la requête GET : ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // renvoie le paramètre GET 'id' (ou null) ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Renvoie les paramètres de la demande POST : ```php diff --git a/http/fr/response.texy b/http/fr/response.texy index c42a4ac920..44bb6cda81 100644 --- a/http/fr/response.texy +++ b/http/fr/response.texy @@ -15,8 +15,8 @@ Nette\Http\Réponse .[#toc-nette-http-response] Contrairement à [Nette\Http\Request |request], cet objet est mutable, donc vous pouvez utiliser des setters pour changer l'état, c'est-à-dire pour envoyer des en-têtes. Rappelez-vous que tous les setters **doivent être appelés avant l'envoi de toute sortie réelle.** La méthode `isSent()` indique si la sortie a été envoyée. Si elle renvoie `true`, chaque tentative d'envoyer un en-tête lève une exception `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Modifie un [code de réponse |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] d'état. Pour une meilleure lisibilité du code source, il est recommandé d'utiliser des [constantes prédéfinies |api:Nette\Http\IResponse] plutôt que des nombres réels. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Envoie l'en-tête `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Envoie un cookie. Valeurs par défaut des paramètres : | `$path` | `'/'` | avec une portée à tous les chemins sur le (sous-)domaine *(configurable)* @@ -138,8 +138,8 @@ L'option `$domain` détermine quels domaines (origines) peuvent accepter les coo Vous pouvez utiliser les constantes `Response::SameSiteLax`, `SameSiteStrict` et `SameSiteNone` pour la valeur `$sameSite`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Supprime un cookie. Les valeurs par défaut des paramètres sont : - `$path` avec une portée à tous les répertoires (`'/'`) - `$domain` avec la portée du (sous-)domaine actuel, mais pas de ses sous-domaines diff --git a/http/fr/sessions.texy b/http/fr/sessions.texy index ab9a8c8144..225667b025 100644 --- a/http/fr/sessions.texy +++ b/http/fr/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Définit le temps d'inactivité après lequel la session expire. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Définit les paramètres des cookies. Vous pouvez modifier les valeurs par défaut des paramètres dans [configuration |configuration#Session cookie]. diff --git a/http/hu/request.texy b/http/hu/request.texy index 02cf2e157c..35cf2534f9 100644 --- a/http/hu/request.texy +++ b/http/hu/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Figyelmeztetés: A böngészők nem küldenek töredéket a kiszolgálónak, ezért a `$url->getFragment()` egy üres karakterláncot fog visszaadni. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Visszaadja a GET-kérelem paramétereit: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // visszaadja a GET paramétert 'id' (vagy n ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- POST kérés paramétereinek visszaadása: ```php diff --git a/http/hu/response.texy b/http/hu/response.texy index b01f95c733..23810055ed 100644 --- a/http/hu/response.texy +++ b/http/hu/response.texy @@ -15,8 +15,8 @@ Nette\Http\Response .[#toc-nette-http-response] A [Nette\Http\Request-tel |request] ellentétben ez az objektum változtatható, így az állapot megváltoztatásához, azaz a fejlécek elküldéséhez használhatsz állítót. Ne feledje, hogy minden beállítót **a tényleges kimenet elküldése előtt kell meghívni.** A `isSent()` metódus megmondja, hogy a kimenet elküldésre került-e. Ha a `true` visszatér, akkor minden egyes fejléc küldési kísérlet `Nette\InvalidStateException` kivételt dob. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Megváltoztatja a státusz [válaszkódot |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10]. A forráskód jobb olvashatósága érdekében ajánlott a tényleges számok helyett [előre definiált konstansokat |api:Nette\Http\IResponse] használni. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Elküldi a `Content-Type` fejlécet. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Cookie-t küld. Alapértelmezett paraméterértékek: | `$path` | `'/'` | az (al)tartomány összes elérési útvonalára kiterjedő hatállyal *(konfigurálható)*. @@ -138,8 +138,8 @@ A `$domain` opció határozza meg, hogy mely tartományok (származási helyek) A `$sameSite` értékhez használhatja a `Response::SameSiteLax`, `SameSiteStrict` és `SameSiteNone` konstansokat. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Töröl egy sütit. A paraméterek alapértelmezett értékei a következők: - `$path` minden könyvtárra kiterjedő hatállyal (`'/'`). - `$domain` az aktuális (al)tartomány hatókörével, de nem az aldomainek hatókörével. diff --git a/http/hu/sessions.texy b/http/hu/sessions.texy index 65dcc2393f..483ccf2008 100644 --- a/http/hu/sessions.texy +++ b/http/hu/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Beállítja az inaktivitás idejét, amely után a munkamenet lejár. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- A sütik paramétereinek beállítása. Az alapértelmezett paraméterértékeket a [configuration#Session cookie |configuration#Session cookie] menüpontban módosíthatja. diff --git a/http/it/request.texy b/http/it/request.texy index 09500d3072..33ed760871 100644 --- a/http/it/request.texy +++ b/http/it/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Attenzione: I browser non inviano un frammento al server, quindi `$url->getFragment()` restituirà una stringa vuota. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Restituisce i parametri della richiesta GET: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // restituisce il parametro GET 'id' (o null ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Restituisce i parametri della richiesta POST: ```php diff --git a/http/it/response.texy b/http/it/response.texy index 8b1f115827..ce4f7da461 100644 --- a/http/it/response.texy +++ b/http/it/response.texy @@ -15,8 +15,8 @@ Nettezza Http Risposta .[#toc-nette-http-response] A differenza di [Nette\Http\Request |request], questo oggetto è mutabile, quindi si possono usare i setter per cambiare lo stato, cioè per inviare le intestazioni. Ricordare che tutti i setter **devono essere chiamati prima dell'invio di qualsiasi output effettivo.** Il metodo `isSent()` dice se l'output è stato inviato. Se restituisce `true`, ogni tentativo di inviare un'intestazione lancia un'eccezione `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Cambia un [codice di risposta |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] di stato. Per una migliore leggibilità del codice sorgente, si consiglia di utilizzare [costanti predefinite |api:Nette\Http\IResponse] anziché numeri reali. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Invia l'intestazione `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Invia un cookie. Valori predefiniti dei parametri: | `$path` | `'/'` | con estensione a tutti i percorsi del (sotto)dominio *(configurabile)* @@ -138,8 +138,8 @@ L'opzione `$domain` determina quali domini (origini) possono accettare i cookie. È possibile utilizzare le costanti `Response::SameSiteLax`, `SameSiteStrict` e `SameSiteNone` per il valore `$sameSite`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Elimina un cookie. I valori predefiniti dei parametri sono: - `$path` con estensione a tutte le directory (`'/'`) - `$domain` con ambito del (sotto)dominio corrente, ma non dei suoi sottodomini diff --git a/http/it/sessions.texy b/http/it/sessions.texy index d3b8637bab..e0b5c490dd 100644 --- a/http/it/sessions.texy +++ b/http/it/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Imposta il tempo di inattività dopo il quale la sessione scade. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Imposta i parametri per i cookie. È possibile modificare i valori dei parametri predefiniti in [configuration#Session cookie |configuration#Session cookie]. diff --git a/http/pl/request.texy b/http/pl/request.texy index 7479107a77..581894a707 100644 --- a/http/pl/request.texy +++ b/http/pl/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Ostrzeżenie: Przeglądarki nie wysyłają fragmentu do serwera, więc `$url->getFragment()` zwróci pusty ciąg znaków. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Zwraca parametry żądania GET. ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // zwraca parametr GET 'id' (lub null) ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Zwraca parametry żądania POST. ```php diff --git a/http/pl/response.texy b/http/pl/response.texy index 363f21bd36..7d8bc72b7a 100644 --- a/http/pl/response.texy +++ b/http/pl/response.texy @@ -15,8 +15,8 @@ Odpowiedź sieci .[#toc-nette-http-response] W przeciwieństwie do Nette: [HttpRequest |request], ten obiekt jest zmienny, więc możesz użyć seterów do zmiany stanu, tj. do wysłania nagłówków. Pamiętaj, że wszystkie setery **muszą być wywołane przed wysłaniem jakichkolwiek danych wyjściowych.** Metoda `isSent()` mówi, czy dane wyjściowe zostały wysłane. Jeśli zwraca `true`, to każda próba wysłania nagłówka rzuca wyjątek `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Zmienia [kod |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] statusu [odpowiedzi |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10]. Dla lepszej czytelności kodu źródłowego zalecamy używanie [predefiniowanych stałych |api:Nette\Http\IResponse] zamiast liczb. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Zmienia nagłówek na `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('faktura.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Wysyła ciasteczko. Domyślne wartości parametrów: | `$path` | `'/'` | cookie dociera do wszystkich ścieżek w (pod)domenie *(konfigurowalne)* @@ -138,8 +138,8 @@ Parametr `$domain` określa, które domeny mogą akceptować pliki cookie. Jeśl Dla wartości `$sameSite`, można użyć stałych `Response::SameSiteLax`, `SameSiteStrict`, oraz `SameSiteNone`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Usuwa plik cookie. Domyślne wartości parametrów to: - `$path` z zasięgiem do wszystkich katalogów (`'/'`) - `$domain` z zasięgiem do bieżącej (sub)domeny, ale nie do jej subdomen diff --git a/http/pl/sessions.texy b/http/pl/sessions.texy index 79f3b2a4e6..e3b6d39edd 100644 --- a/http/pl/sessions.texy +++ b/http/pl/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Ustawia okres bezczynności, po którym sesja wygasa. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Ustawia parametry dla pliku cookie. Można zmienić domyślne wartości parametrów w [konfiguracji |configuration#Session-Cookie]. diff --git a/http/pt/request.texy b/http/pt/request.texy index 437fda07e6..3de79bb3a2 100644 --- a/http/pt/request.texy +++ b/http/pt/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Aviso: Os navegadores não enviam um fragmento ao servidor, portanto, o site `$url->getFragment()` retornará uma cadeia de caracteres vazia. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Retorna os parâmetros de solicitação GET: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // retorna o parâmetro GET 'id' (ou nulo) ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Retorna os parâmetros de solicitação de PÓS-PST: ```php diff --git a/http/pt/response.texy b/http/pt/response.texy index 828fe5722d..f223725b0a 100644 --- a/http/pt/response.texy +++ b/http/pt/response.texy @@ -15,8 +15,8 @@ Nette\Http\Resposta .[#toc-nette-http-response] Unlike [Nette\Http\Request |request], this object is mutable, so you can use setters to change the state, ie to send headers. Lembre-se que todos os setters **devem ser chamados antes que qualquer saída real seja enviada.** O método `isSent()` informa se a saída foi enviada. Se ele retornar `true`, cada tentativa de enviar um cabeçalho lançará uma exceção `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Altera um [código de resposta de |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] status. Para melhor legibilidade do código fonte, é recomendado o uso de [constantes pré-definidas |api:Nette\Http\IResponse] em vez de números reais. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Envia o cabeçalho `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Envia um cookie. Valores de parâmetros padrão: | `$path` | `'/'` | com escopo para todos os caminhos no (sub)domínio *(configurável)* @@ -138,8 +138,8 @@ A opção `$domain` determina quais domínios (origens) podem aceitar cookies. S Você pode usar as constantes `Response::SameSiteLax`, `SameSiteStrict` e `SameSiteNone` para o valor `$sameSite`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Elimina um cookie. Os valores padrão dos parâmetros são: - `$path` com escopo para todos os diretórios (`'/'`) - `$domain` com escopo do (sub)domínio atual, mas não de seus subdomínios diff --git a/http/pt/sessions.texy b/http/pt/sessions.texy index c073b1c7fe..d325ca10e5 100644 --- a/http/pt/sessions.texy +++ b/http/pt/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Define o tempo de inatividade após o qual a sessão expira. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Estabelece parâmetros para cookies. Você pode alterar os valores padrão dos parâmetros na [configuração#Bookie de sessão |configuration#Session cookie]. diff --git a/http/ro/request.texy b/http/ro/request.texy index 19417d47a8..1c9e43a669 100644 --- a/http/ro/request.texy +++ b/http/ro/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Avertisment: Browserele nu trimit un fragment către server, astfel încât `$url->getFragment()` va returna un șir gol. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Returnează parametrii cererii GET: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // returnează parametrul GET "id" (sau nul) ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Returnează parametrii cererii POST: ```php diff --git a/http/ro/response.texy b/http/ro/response.texy index 6f315787f7..70715bc041 100644 --- a/http/ro/response.texy +++ b/http/ro/response.texy @@ -15,8 +15,8 @@ Nette\Http\Răspuns .[#toc-nette-http-response] Spre deosebire de [Nette\Http\Request |request], acest obiect este mutabil, astfel încât puteți utiliza setori pentru a schimba starea, adică pentru a trimite antetele. Nu uitați că toți cei care setează **trebuie să fie apelați înainte de a trimite orice ieșire efectivă.** Metoda `isSent()` indică dacă au fost trimise ieșirile. Dacă returnează `true`, fiecare încercare de a trimite un antet aruncă o excepție `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Modifică un [cod de răspuns de |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] stare. Pentru o mai bună lizibilitate a codului sursă, se recomandă utilizarea unor [constante predefinite |api:Nette\Http\IResponse] în locul numerelor reale. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Trimite antetul `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Trimite un cookie. Valori implicite ale parametrilor: | `$path` | `'/'` | cu domeniul de aplicare pentru toate căile de acces pe (sub)domeniu *(configurabil)*. @@ -138,8 +138,8 @@ Opțiunea `$domain` determină domeniile (originile) care pot accepta cookie-uri Puteți utiliza constantele `Response::SameSiteLax`, `SameSiteStrict` și `SameSiteNone` pentru valoarea `$sameSite`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Șterge un modul cookie. Valorile implicite ale parametrilor sunt: - `$path` cu domeniul de aplicare la toate directoarele (`'/'`) - `$domain` cu domeniul de aplicare al (sub)domeniului curent, dar nu și al subdomeniilor sale diff --git a/http/ro/sessions.texy b/http/ro/sessions.texy index 60dbff9906..c712dff6aa 100644 --- a/http/ro/sessions.texy +++ b/http/ro/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Stabilește timpul de inactivitate după care expiră sesiunea. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Stabilește parametrii pentru cookie-uri. Puteți modifica valorile implicite ale parametrilor în [configuration |configuration#Session cookie]. diff --git a/http/ru/request.texy b/http/ru/request.texy index bba3ec0c01..8b38fd3257 100644 --- a/http/ru/request.texy +++ b/http/ru/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Внимание: Браузеры не отправляют фрагмент на сервер, поэтому `$url->getFragment()` вернет пустую строку. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Возвращает параметры GET-запроса: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // возвращает GET-параметр ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Возвращает параметры POST-запроса: ```php diff --git a/http/ru/response.texy b/http/ru/response.texy index 1a69ea4ab9..cf80cb6718 100644 --- a/http/ru/response.texy +++ b/http/ru/response.texy @@ -15,8 +15,8 @@ Nette\Http\Response .[#toc-nette-http-response] В отличие от [Nette\Http\Request |request], этот объект является изменяемым, поэтому вы можете использовать сеттеры для изменения состояния, т.е. для отправки заголовков. Помните, что все сеттеры **должны быть вызваны до отправки фактического вывода.** Метод `isSent()` показывает, был ли отправлен вывод. Если он возвращает `true`, то каждая попытка отправить заголовок вызывает исключение `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Изменяет [код ответа |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] статуса. Для лучшей читаемости исходного кода рекомендуется использовать [предопределенные константы |api:Nette\Http\IResponse] вместо реальных чисел. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Отправляет заголовок `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Отправляет cookie. Значения параметров по умолчанию: | `$path` | `'/'` | с охватом всех путей на (под)домене *(настраивается)*. @@ -138,8 +138,8 @@ $httpResponse->setCookie('lang', 'en', '100 days'); Для значения `$sameSite` можно использовать константы `Response::SameSiteLax`, `SameSiteStrict` и `SameSiteNone`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Удаляет файл cookie. По умолчанию параметры имеют следующие значения: - `$path` с областью действия на все каталоги (`'/'`) - `$domain` с областью действия на текущий (под)домен, но не на его поддомены. diff --git a/http/ru/sessions.texy b/http/ru/sessions.texy index 78719bdc8b..7f65265352 100644 --- a/http/ru/sessions.texy +++ b/http/ru/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Устанавливает время бездействия, после которого сессия завершается. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Устанавливает параметры для куки. Значения параметров по умолчанию можно изменить в разделе [configuration|configuration#Session-Cookie]. diff --git a/http/sl/request.texy b/http/sl/request.texy index ac94a32aa1..36fee1fc89 100644 --- a/http/sl/request.texy +++ b/http/sl/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Opozorilo: Brskalniki strežniku ne pošiljajo fragmentov, zato bo `$url->getFragment()` vrnil prazen niz. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Vrne parametre zahteve GET: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // vrne parameter GET 'id' (ali null) ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Vrne parametre zahteve POST: ```php diff --git a/http/sl/response.texy b/http/sl/response.texy index 53c9ba207e..5241b31657 100644 --- a/http/sl/response.texy +++ b/http/sl/response.texy @@ -15,8 +15,8 @@ Nette\Http\Response .[#toc-nette-http-response] Za razliko od [Nette\Http\Request |request] je ta objekt spremenljiv, zato lahko za spremembo stanja, tj. za pošiljanje glave, uporabite nastavitve. Ne pozabite, da je treba vse nastavljalnike **poklicati, preden se pošlje dejanski izhod.** Metoda `isSent()` pove, ali je bil izhod poslan. Če vrne `true`, vsak poskus pošiljanja glave vrže izjemo `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Spremeni [odzivno kodo |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] stanja. Za boljšo berljivost izvorne kode je priporočljivo uporabljati [vnaprej določene konstante |api:Nette\Http\IResponse] namesto dejanskih številk. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Pošlje glavo `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Pošlje piškotek. Privzete vrednosti parametrov: | `$path` | `'/'` | s področjem uporabe za vse poti v (pod)domeni *(nastavljivo)* @@ -138,8 +138,8 @@ Možnost `$domain` določa, katere domene (izvori) lahko sprejmejo piškotke. Č Za vrednost `$sameSite` lahko uporabite konstante `Response::SameSiteLax`, `SameSiteStrict` in `SameSiteNone`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Izbriše piškotek. Privzete vrednosti parametrov so: - `$path` s področjem uporabe za vse imenike (`'/'`) - `$domain` s področjem uporabe trenutne (pod)domene, vendar ne njenih poddomen diff --git a/http/sl/sessions.texy b/http/sl/sessions.texy index 5ed29e881a..8841a6c352 100644 --- a/http/sl/sessions.texy +++ b/http/sl/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Nastavi čas neaktivnosti, po katerem se seja izteče. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Nastavi parametre za piškotke. Privzete vrednosti parametrov lahko spremenite v [konfiguraciji |configuration#Session cookie]. diff --git a/http/tr/request.texy b/http/tr/request.texy index edfaafd224..2033fe4790 100644 --- a/http/tr/request.texy +++ b/http/tr/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Uyarı: Tarayıcılar sunucuya bir parça göndermez, bu nedenle `$url->getFragment()` boş bir dize döndürecektir. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- GET istek parametrelerini döndürür: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // GET parametresi 'id' (veya null) döndür ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- POST istek parametrelerini döndürür: ```php diff --git a/http/tr/response.texy b/http/tr/response.texy index e0811471fc..4859af5e87 100644 --- a/http/tr/response.texy +++ b/http/tr/response.texy @@ -15,8 +15,8 @@ Nette\Http\Yanıt .[#toc-nette-http-response] [Nette\Http\Request |request]'in aksine, bu nesne değişkendir, bu nedenle durumu değiştirmek, yani başlıkları göndermek için ayarlayıcıları kullanabilirsiniz. Tüm ayarlayıcıların **gerçek çıktı gönderilmeden önce çağrılması gerektiğini unutmayın.** `isSent()` yöntemi çıktının gönderilip gönderilmediğini söyler. Eğer `true` döndürürse, her başlık gönderme girişimi bir `Nette\InvalidStateException` istisnası fırlatır. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Bir durum [yanıt kodunu |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] değiştirir. Daha iyi kaynak kodu okunabilirliği için gerçek sayılar yerine [önceden tanımlanmış sabitlerin |api:Nette\Http\IResponse] kullanılması önerilir. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- `Content-Type` başlığını gönderir. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Bir çerez gönderir. Varsayılan parametre değerleri: | `$path` | `'/'` | (alt)etki alanı *(yapılandırılabilir)* üzerindeki tüm yolların kapsamı ile @@ -138,8 +138,8 @@ $httpResponse->setCookie('lang', 'en', '100 days'); `$sameSite` değeri için `Response::SameSiteLax`, `SameSiteStrict` ve `SameSiteNone` sabitlerini kullanabilirsiniz. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Bir çerezi siler. Parametrelerin varsayılan değerleri şunlardır: - `$path` tüm dizinleri kapsayacak şekilde (`'/'`) - `$domain` geçerli (alt) etki alanının kapsamı ile, ancak alt etki alanları ile değil diff --git a/http/tr/sessions.texy b/http/tr/sessions.texy index f7e7a1450c..959f4d842e 100644 --- a/http/tr/sessions.texy +++ b/http/tr/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Oturumun sona ereceği hareketsizlik süresini ayarlar. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Çerezler için parametreleri ayarlar. Varsayılan parametre değerlerini [configuration#Session cookie |configuration#Session cookie] bölümünden değiştirebilirsiniz. diff --git a/http/uk/request.texy b/http/uk/request.texy index 124de7af91..ccb3342e4b 100644 --- a/http/uk/request.texy +++ b/http/uk/request.texy @@ -35,8 +35,8 @@ echo $url->getHost(); // nette.org Попередження: Браузери не надсилають фрагмент на сервер, тому `$url->getFragment()` поверне порожній рядок. -getQuery(string $key=null): string|array|null .[method] -------------------------------------------------------- +getQuery(?string $key=null): string|array|null .[method] +-------------------------------------------------------- Повертає параметри GET-запиту: ```php @@ -45,8 +45,8 @@ $id = $httpRequest->getQuery('id'); // повертає GET-параметр 'id ``` -getPost(string $key=null): string|array|null .[method] ------------------------------------------------------- +getPost(?string $key=null): string|array|null .[method] +------------------------------------------------------- Повертає параметри POST-запиту: ```php diff --git a/http/uk/response.texy b/http/uk/response.texy index b0bbc815ff..d99aa00be1 100644 --- a/http/uk/response.texy +++ b/http/uk/response.texy @@ -15,8 +15,8 @@ Nette\Http\Response .[#toc-nette-http-response] На відміну від [Nette\Http\Request |request], цей об'єкт є змінюваним, тому ви можете використовувати сеттери для зміни стану, тобто для надсилання заголовків. Пам'ятайте, що всі сеттери **повинні бути викликані до того, як буде надіслано фактичні дані.** Метод `isSent()` визначає, чи було надіслано дані. Якщо він повертає `true`, кожна спроба надіслати заголовок спричиняє виключення `Nette\InvalidStateException`. -setCode(int $code, string $reason=null) .[method] -------------------------------------------------- +setCode(int $code, ?string $reason=null) .[method] +-------------------------------------------------- Змінює [код відповіді |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] статусу. Для кращої читабельності вихідного коду рекомендується використовувати [зумовлені константи |api:Nette\Http\IResponse] замість реальних чисел. ```php @@ -77,8 +77,8 @@ echo $headers['Pragma']; ``` -setContentType(string $type, string $charset=null) .[method] ------------------------------------------------------------- +setContentType(string $type, ?string $charset=null) .[method] +------------------------------------------------------------- Надсилає заголовок `Content-Type`. ```php @@ -115,8 +115,8 @@ $httpResponse->sendAsFile('invoice.pdf'); ``` -setCookie(string $name, string $value, $time, string $path=null, string $domain=null, bool $secure=null, bool $httpOnly=null, string $sameSite=null) .[method] --------------------------------------------------------------------------------------------------------------------------------------------------------------- +setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method] +------------------------------------------------------------------------------------------------------------------------------------------------------------------- Надсилає cookie. Значення параметрів за замовчуванням: | `$path` | `'/'` | з охопленням усіх шляхів на (під)домені *(налаштовується)*. @@ -138,8 +138,8 @@ $httpResponse->setCookie('lang', 'en', '100 days'); Для значення `$sameSite` можна використовувати константи `Response::SameSiteLax`, `SameSiteStrict` і `SameSiteNone`. -deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method] ------------------------------------------------------------------------------------------------------ +deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method] +-------------------------------------------------------------------------------------------------------- Видаляє файл cookie. За замовчуванням параметри мають такі значення: - `$path` з областю дії на всі каталоги (`'/'`) - `$domain` з областю дії на поточний (під)домен, але не на його піддомени. diff --git a/http/uk/sessions.texy b/http/uk/sessions.texy index e7419dbbec..9f789f951e 100644 --- a/http/uk/sessions.texy +++ b/http/uk/sessions.texy @@ -183,8 +183,8 @@ setExpiration(?string $time): static .[method] Встановлює час бездіяльності, після якого сесія завершується. -setCookieParameters(string $path, string $domain=null, bool $secure=null, string $samesite=null): static .[method] ------------------------------------------------------------------------------------------------------------------- +setCookieParameters(string $path, ?string $domain=null, ?bool $secure=null, ?string $samesite=null): static .[method] +--------------------------------------------------------------------------------------------------------------------- Встановлює параметри для кукі. Значення параметрів за замовчуванням можна змінити в розділі [configuration |configuration#Session-Cookie]. diff --git a/latte/bg/filters.texy b/latte/bg/filters.texy index 4e32ea4f92..4a5f91bdc4 100644 --- a/latte/bg/filters.texy +++ b/latte/bg/filters.texy @@ -120,8 +120,8 @@ $latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $ ====================== -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Филтър, който опростява изписването на линейни данни под формата на таблица. Връща масив от масиви със зададения брой елементи. Ако предоставите втори параметър, той се използва за попълване на липсващите елементи на последния ред. ```latte @@ -167,8 +167,8 @@ breakLines .[filter] ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Форматира размера в байтове в удобна за четене от човека форма. Ако е зададена [локална среда |develop#locale], се използват съответните десетични и хилядни разделители. ```latte @@ -177,8 +177,8 @@ bytes(int precision = 2) .[filter] ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Закръгляне на число до зададена точност. ```latte @@ -221,8 +221,8 @@ checkUrl .[filter] Вижте също [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Връща стойността, която е вкарана в обхват от min и max. ```latte @@ -232,8 +232,8 @@ clamp(int|float min, int|float max) .[filter] Съществува и като [clamp |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Конвертира съдържанието в схема URI за данни. Може да се използва за вмъкване на изображения в HTML или CSS, без да е необходимо да се свързват външни файлове. Нека имаме изображение в променлива `$img = Image::fromFile('obrazek.gif')`, тогава @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Изисква PHP разширение `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Форматира датата и часа в съответствие с маската, използвана от функцията на PHP [php:date]. Филтърът приема датата във формат UNIX timestamp, като низ или като обект `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ escapeUrl .[filter] Вижте също [query |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Разделя низ по зададения разделител и връща масив от низове. Псевдоним за `split`. ```latte @@ -311,8 +311,8 @@ first .[filter] Вижте също [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Закръгляне на число до зададена точност. ```latte @@ -335,8 +335,8 @@ firstUpper .[filter] Вижте също [capitalize |#capitalize], [lower |#lower], [upper |#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- Филтърът групира данните по различни критерии. В този пример редовете в таблицата са групирани по колоната `categoryId`. Изходът е масив от масиви, където ключът е стойността в колоната `categoryId`. Прочетете [подробните инструкции |cookbook/grouping]. @@ -354,8 +354,8 @@ group(string|int|\Closure by): array .[filter]{data-version:3.0.16} Вижте също [batch |#batch], функцията [group |functions#group] и маркера [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Връща низ, който е конкатенация на низовете в масива. Псевдоним за `join`. ```latte @@ -370,8 +370,8 @@ implode(string glue = '') .[filter] ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Отстъпва текста отляво с даден брой табулации или други символи, които посочваме във втория незадължителен аргумент. Празните редове не се отдръпват. ```latte @@ -420,7 +420,7 @@ length .[filter] ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Форматира датата и часа в зависимост от [локала, |develop#locale] като осигурява последователно и локализирано показване на данните за времето на различни езици и региони. Филтърът приема датата като времеви печат на UNIX, низ или обект `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello Злоупотребата с филтъра `noescape` може да доведе до уязвимост XSS! Никога не го използвайте, освен ако не сте **напълно сигурни** какво правите и че низът, който отпечатвате, идва от надежден източник. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Форматира число до определен брой знаци след десетичната запетая. Ако е зададена [локална среда |develop#locale], се използват съответните разделители за десетични знаци и хиляди. ```latte @@ -549,9 +549,9 @@ number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[fil ``` -number(string format) .[filter] -------------------------------- -Параметърът `format` ви позволява да определите външния вид на числата точно според вашите нужди. Той изисква зададена [локализация |develop#locale]. Форматът се състои от няколко специални знака, чието пълно описание можете да намерите в документацията на "DecimalFormat"::https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns +number(string $format) .[filter] +-------------------------------- +Параметърът `format` ви позволява да определите външния вид на числата точно според вашите нужди. Той изисква зададена [локализация |develop#locale]. Форматът се състои от няколко специални знака, чието пълно описание можете да намерите в документацията на "DecimalFormat"::https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns - задължителна цифра, която винаги се показва, дори ако е нула - `#` незадължителна цифра, показва се само ако числото има цифра на това място @@ -597,7 +597,7 @@ number(string format) .[filter] Не забравяйте, че действителният вид на числата може да се различава в зависимост от настройките на локала. Например в някои страни като десетичен разделител се използва запетая вместо точка. Този филтър автоматично отчита това, така че не е необходимо да се притеснявате за него. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Попълва низ с определена дължина с друг низ отляво. @@ -606,7 +606,7 @@ padLeft(int length, string pad = ' ') .[filter] ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Подвежда низ до определена дължина с друг низ отдясно. @@ -648,8 +648,8 @@ random .[filter] Вижте също [first |#first], [last |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Повтаря символния низ х пъти. ```latte @@ -657,7 +657,7 @@ repeat(int count) .[filter] ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Заменя всички срещания на търсения низ със заместващия низ. @@ -672,7 +672,7 @@ replace(string|array search, string replace = '') .[filter] ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Заменя всички срещания според регулярен израз. @@ -693,8 +693,8 @@ reverse .[filter] ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Закръгляне на число до зададена точност. ```latte @@ -707,7 +707,7 @@ round(int precision = 0) .[filter] Вижте също [таван, |#ceil] [етаж |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Извлича част от масив или низ. @@ -725,8 +725,8 @@ slice(int start, int length = null, bool preserveKeys = false) .[filter] По подразбиране Filter ще пренареди и нулира ключовете на целочислените масиви. Това поведение може да бъде променено чрез задаване на стойност preserveKeys на true. Ключовете на низове винаги се запазват, независимо от този параметър. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- Филтърът сортира елементите на масив или итератор, като запазва асоциативните им ключове. Когато е зададен [локал |develop#locale], сортирането следва неговите правила, освен ако не е зададена потребителска функция за сравнение. ```latte @@ -806,8 +806,8 @@ stripHtml .[filter] Полученият обикновен текст естествено може да съдържа символи, които представляват HTML тагове, например `'<p>'|stripHtml` се преобразува в `

`. Никога не извеждайте получения текст с `|noescape`, тъй като това може да доведе до уязвимост на сигурността. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Извлича част от низ. Този филтър е заменен с филтър за [парчета |#slice]. ```latte @@ -815,8 +815,8 @@ substr(int offset, int length = null) .[filter] ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Той превежда изрази на други езици. За да направите филтъра достъпен, трябва да настроите [преводач |develop#TranslatorExtension]. Можете също така да използвате [таговете за превод |tags#Translation]. ```latte @@ -825,8 +825,8 @@ translate(string message, ...args) .[filter] ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Премахване на водещи и завършващи символи, по подразбиране бяло пространство. ```latte @@ -835,7 +835,7 @@ trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Съкращава даден низ до максимално зададената дължина, но се опитва да запази цели думи. Ако низът е съкратен, той добавя елипса в края (това може да се промени с втория параметър). diff --git a/latte/bg/functions.texy b/latte/bg/functions.texy index 9454b0801f..7062cb2beb 100644 --- a/latte/bg/functions.texy +++ b/latte/bg/functions.texy @@ -138,8 +138,8 @@ odd(int $value): bool .[method] ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Извлича фрагмент от масив или низ. ```latte diff --git a/latte/bg/template-inheritance.texy b/latte/bg/template-inheritance.texy index f25013bc40..16c179b22a 100644 --- a/latte/bg/template-inheritance.texy +++ b/latte/bg/template-inheritance.texy @@ -423,7 +423,7 @@ Hi, I am Mary. Хоризонтална повторна употреба `{import}` .{toc: Horizontal Reuse} ================================================================== -Хоризонталната повторна употреба е третият механизъм за повторна употреба и наследяване в Latte. Той позволява зареждане на блокове от други шаблони. Това е подобно на създаването на PHP файл с помощни функции или черти. +Хоризонталната повторна употреба е третият механизъм за повторна употреба и наследяване в Latte. Той позволява зареждане на блокове от други шаблони. Подобно е на създаването на файл с помощни функции в PHP и последващото му зареждане с помощта на `require`. Въпреки че наследяването на оформлението на шаблона е една от най-мощните функции на Latte, то е ограничено до просто наследяване - един шаблон може да разшири само един друг шаблон. Хоризонталното повторно използване е начин за постигане на многократно наследяване. @@ -455,7 +455,7 @@ Hi, I am Mary. Можете да използвате толкова изрази `{import}`, колкото искате в даден шаблон. Ако два импортирани шаблона дефинират един и същ блок, печели първият. Най-голям приоритет обаче има основният шаблон, който може да презапише всеки импортиран блок. -Всички надписани блокове могат да бъдат включени постепенно, като се вмъкнат като [родителски блок |#Parent-Block]: +Съдържанието на презаписаните блокове може да бъде запазено чрез вмъкване на блока по същия начин, както при [родителския блок |#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/cs/cookbook/how-to-write-sql-queries-in-latte.texy b/latte/cs/cookbook/how-to-write-sql-queries-in-latte.texy index bdfc0feedc..07fb5dec84 100644 --- a/latte/cs/cookbook/how-to-write-sql-queries-in-latte.texy +++ b/latte/cs/cookbook/how-to-write-sql-queries-in-latte.texy @@ -2,9 +2,9 @@ Jak psát SQL queries v Latte? ***************************** .[perex] -Latte se může hodit i pro generování opravdu složitých SQL dotazů. +Latte může být užitečným nástrojem i pro generování komplexních SQL dotazů, což zvyšuje jejich čitelnost a udržovatelnost. -Pokud vytvoření SQL dotazu obsahuje řadu podmínek a proměnných, může být opravdu přehlednější ho napsat v Latte. Velmi jednoduchý příklad: +Když SQL dotaz obsahuje mnoho podmínek a proměnných, může být jeho zápis v Latte přehlednější a flexibilnější. Zde je jednoduchý příklad demonstrující tuto výhodu: ```latte SELECT users.* FROM users @@ -14,8 +14,13 @@ SELECT users.* FROM users WHERE groups.name = 'Admins' {ifset $country} AND country.name = {$country} {/ifset} ``` -Pomocí `$latte->setContentType()` řekneme Latte, aby k obsahu přistupovalo jako k prostému textu (nikoliv jako k HTML) a dále -připravíme escapovací funkci, která bude řetězce escapovat přímo databázovým driverem: +Pro správné fungování je třeba provést několik kroků: + +1. Nastavení typu obsahu: pomocí `$latte->setContentType()` informujeme Latte, že obsah má být zpracován jako prostý text, nikoliv jako HTML. + +2. Definice escapovací funkce: vytvoříme vlastní escapovací funkci, která bude řetězce escapovat přímo pomocí databázového driveru. Tím zajistíme bezpečnost proti SQL injection. + +Zde je ukázka implementace těchto kroků: ```php $db = new PDO(/* ... */); @@ -31,13 +36,28 @@ $latte->addFilter('escape', fn($val) => match (true) { }); ``` -Použití by vypadalo takto: +Tato escapovací funkce zajišťuje správné ošetření různých datových typů: +- Řetězce jsou escapovány pomocí metody `quote()` databázového driveru. +- Čísla (celá i s plovoucí desetinnou čárkou) jsou převedena na řetězce. +- Booleovské hodnoty jsou převedeny na '1' nebo '0'. +- Null hodnoty jsou převedeny na 'NULL'. +- Pro nepodporované typy je vyhozena výjimka. + +Použití v praxi by pak vypadalo takto: ```php $sql = $latte->renderToString('query.sql.latte', ['country' => $country]); $result = $db->query($sql); ``` -*Uvedený příklad vyžaduje Latte v3.0.5 nebo vyšší.* +Tento přístup umožňuje: +1. Dynamické sestavování SQL dotazů s využitím logiky Latte. +2. Bezpečné vkládání proměnných do dotazu díky vlastní escapovací funkci. +3. Lepší čitelnost a udržovatelnost komplexních SQL dotazů. + +.[note] +Tento příklad vyžaduje Latte ve verzi 3.0.5 nebo novější. + +Využití Latte pro generování SQL dotazů může výrazně zjednodušit práci s komplexními dotazy, zejména v situacích, kdy se dotaz dynamicky mění na základě různých podmínek. Zároveň tento přístup pomáhá udržet kód čistý a snadno upravitelný. {{leftbar: /@left-menu}} diff --git a/latte/cs/cookbook/migration-from-php.texy b/latte/cs/cookbook/migration-from-php.texy index f17181af91..2bec5df959 100644 --- a/latte/cs/cookbook/migration-from-php.texy +++ b/latte/cs/cookbook/migration-from-php.texy @@ -2,27 +2,30 @@ Migrace z PHP do Latte ********************** .[perex] -Převádíte starý projekt napsaný v čistém PHP do Latte? Máme pro vás nástroj, které vám migraci usnadní. [Vyzkoušejte jej online |https://php2latte.nette.org]. +Převádíte starší projekt napsaný v čistém PHP na Latte? Máme pro vás nástroj, který tento proces výrazně zjednoduší. [Vyzkoušejte jej online |https://php2latte.nette.org]. -Nástroj si můžete stáhnout z [GitHubu|https://github.com/nette/latte-tools] nebo nainstalovat pomocí Composeru: +Tento užitečný nástroj můžete získat dvěma způsoby: + +1. Stáhnout z [GitHubu|https://github.com/nette/latte-tools] +2. Nainstalovat pomocí Composeru: ```shell composer create-project latte/tools ``` -Převodník nepoužívá jednoduché záměny pomocí regulárních výrazů, naopak využívá přímo PHP parser, takže si poradí s jakkoliv složitou syntaxí. +Na rozdíl od jednoduchých nástrojů využívajících regulární výrazy, tento převodník používá sofistikovaný PHP parser. Díky tomu si poradí i s komplexní PHP syntaxí. -K převodu z PHP do Latte slouží skript `php-to-latte.php`: +Pro převod z PHP do Latte použijte skript `php-to-latte.php`: ```shell php-to-latte.php input.php [output.latte] ``` -Příklad -------- +Příklad použití +--------------- -Vstupní soubor může vypadat třeba takto (jde o část kódu fóra PunBB): +Podívejme se na konkrétní příklad. Níže je ukázka vstupního PHP souboru (část kódu fóra PunBB): ```php

@@ -48,7 +51,7 @@ foreach ($result as $cur_group) { ``` -Vygeneruje tuto šablonu: +Po zpracování nástrojem získáme následující Latte šablonu: ```latte

{$lang_common['User list']}

@@ -69,4 +72,13 @@ Vygeneruje tuto šablonu: ``` +Hlavní výhody tohoto převodu: + +1. **Čistší syntaxe**: Latte šablona je čitelnější a snáze udržovatelná. +2. **Automatické escapování**: Latte automaticky escapuje výstup, čímž zvyšuje bezpečnost (např. `htmlspecialchars()` již není potřeba). +3. **Lepší struktura**: Latte tagy (`{foreach}`, `{if}`) jasně oddělují logiku od prezentace. +4. **Zjednodušení**: Odstraňuje nutnost explicitního výpisu pomocí `echo`. + +Tento nástroj významně urychluje a zjednodušuje proces migrace z PHP na Latte, což vám umožní rychleji modernizovat vaše projekty a využít všech výhod, které Latte nabízí. + {{leftbar: /@left-menu}} diff --git a/latte/cs/cookbook/migration-from-twig.texy b/latte/cs/cookbook/migration-from-twig.texy index 4ded46f341..8a7fb5bd9c 100644 --- a/latte/cs/cookbook/migration-from-twig.texy +++ b/latte/cs/cookbook/migration-from-twig.texy @@ -2,37 +2,40 @@ Migrace z Twigu do Latte ************************ .[perex] -Převádíte projekt napsaný v Twigu do modernějšího Latte? Máme pro vás nástroj, které vám migraci usnadní. [Vyzkoušejte jej online |https://twig2latte.nette.org]. +Převádíte projekt z Twigu na modernější a mnohem bezpečnější Latte? Máme pro vás nástroj, který tento proces výrazně zjednoduší. [Vyzkoušejte jej online |https://twig2latte.nette.org]. -Nástroj si můžete stáhnout z [GitHubu|https://github.com/nette/latte-tools] nebo nainstalovat pomocí Composeru: +Tento užitečný nástroj je dostupný dvěma způsoby: + +1. Stažením z [GitHubu|https://github.com/nette/latte-tools] +2. Instalací pomocí Composeru: ```shell composer create-project latte/tools ``` -Převodník nepoužívá jednoduché záměny pomocí regulárních výrazů, naopak využívá přímo Twig parser, takže si poradí s jakkoliv složitou syntaxí. +Na rozdíl od jednoduchých nástrojů využívajících regulární výrazy, tento převodník používá sofistikovaný Twig parser. Díky tomu si poradí i s komplexní Twig syntaxí. -K převodu z Twigu do Latte slouží skript `twig-to-latte.php`: +Pro převod z Twigu do Latte použijte skript `twig-to-latte.php`: ```shell twig-to-latte.php input.twig.html [output.latte] ``` -Konverze --------- +Konverze a její specifika +------------------------- -Převod předpokládá ruční úpravu výsledku, protože konverzi nelze provést jednoznačně. Twig používá tečkovou syntax, kde `{{ a.b }}` může znamenat `$a->b`, `$a['b']` nebo `$a->getB()`, což nelze rozlišit při kompilaci. Převaděč proto vše převádí na `$a->b`. +Je důležité poznamenat, že převod může vyžadovat ruční úpravy výsledku. Důvodem je, že některé konstrukce v Twigu nelze jednoznačně převést do Latte. Například, Twig používá tečkovou syntax, kde `{{ a.b }}` může znamenat `$a->b`, `$a['b']` nebo `$a->getB()`. Tento rozdíl nelze rozlišit při kompilaci, proto převaděč vše převádí na `$a->b`. -Některé funkce, filtry nebo tagy nemají obdobu v Latte, nebo se mohou chovat mírně jinak. +Některé funkce, filtry nebo tagy v Twigu nemají přímou obdobu v Latte, nebo se mohou chovat mírně odlišně. To je další důvod, proč může být potřeba ruční úprava po automatickém převodu. -Příklad -------- +Příklad použití +--------------- -Vstupní soubor může vypadat třeba takto: +Podívejme se na konkrétní příklad. Níže je ukázka vstupního Twig souboru: -```latte +```twig {% use "blocks.twig" %} @@ -54,7 +57,7 @@ Vstupní soubor může vypadat třeba takto: ``` -Po konverzi do Latte získáme tuto šablonu: +Po konverzi do Latte získáme následující šablonu: ```latte {import 'blocks.latte'} @@ -78,4 +81,15 @@ Po konverzi do Latte získáme tuto šablonu: ``` +Hlavní rozdíly a výhody po převodu: + +1. **Změna syntaxe**: Twig používá `{% ... %}` pro logiku a `{{ ... }}` pro výpis, zatímco Latte používá jednotnou `{ ... }` syntaxi +2. **Bloky**: `{% block ... %}` se mění na `{block ...}` +3. **Cykly**: `{% for ... %}` se převádí na `{foreach ...}` +4. **Podmínky**: `{% if ... %}` zůstává podobné, ale používá se `{if ...}`. +5. **Přístup k proměnným**: Tečková notace `item.caption` se mění na objektovou notaci `$item->caption` +6. **Import**: `{% use ... %}` se mění na `{import ...}` + +Tento nástroj významně urychluje a zjednodušuje proces migrace z Twigu na Latte. Umožňuje vám rychle modernizovat vaše projekty a využít všech výhod, které Latte nabízí, včetně jeho výkonu a flexibilnity. Nezapomeňte však po automatickém převodu zkontrolovat a případně upravit výsledný kód, aby plně odpovídal vašim potřebám a specifikům vašeho projektu. + {{leftbar: /@left-menu}} diff --git a/latte/cs/cookbook/passing-variables.texy b/latte/cs/cookbook/passing-variables.texy index b4840427c2..7bb477af7a 100644 --- a/latte/cs/cookbook/passing-variables.texy +++ b/latte/cs/cookbook/passing-variables.texy @@ -1,14 +1,14 @@ Předávání proměnných napříč šablonami ************************************* -Tento průvodce vám vysvětlí, jak se proměnné předávají mezi šablonami v Latte pomocí různých tagů jako `{include}`, `{import}`, `{embed}`, `{layout}`, `{sandbox}` a dalších. Dozvíte se také, jak pracovat s proměnnými v tagu `{block}` a `{define}`, a k čemu slouží značka `{parameters}`. +Tento průvodce objasňuje, jak se v Latte předávají proměnné mezi šablonami pomocí různých tagů jako `{include}`, `{import}`, `{embed}`, `{layout}`, `{sandbox}` a dalších. Dozvíte se také, jak pracovat s proměnnými v tagu `{block}` a `{define}`, a k čemu slouží značka `{parameters}`. Typy proměnných --------------- -Proměnné v Latte můžeme rozdělit do tří kategorií podle toho, jak a kde jsou definovány: +V Latte rozlišujeme tři kategorie proměnných podle jejich definice a dostupnosti: -**Vstupní proměnné** jsou ty, které jsou do šablony předávány zvenčí, například z PHP skriptu nebo pomocí tagu jako `{include}`. +**Vstupní proměnné** jsou předávány do šablony zvenčí, typicky z PHP skriptu nebo pomocí tagů jako `{include}`. ```php $latte->render('template.latte', ['userName' => 'Jan', 'userAge' => 30]); @@ -45,7 +45,7 @@ Tag `{block}` se používá k definování opakovaně použitelných bloků kód `{define}` ---------- -Tag `{define}` slouží k vytváření bloků, které se renderují až po jejich zavolání pomocí `{include}`. Proměnné dostupné uvnitř těchto bloků závisí na tom, zda jsou v definici uvedeny parametry. Pokud ano, přístup mají jen k těmto parametrům. Pokud ne, přístup mají ke všem vstupním proměnným šablony, ve které jsou bloky definovány. +Tag `{define}` vytváří bloky, které se renderují až po jejich explicitním zavolání pomocí `{include}`. Dostupnost proměnných uvnitř těchto bloků závisí na přítomnosti parametrů v definici. S parametry mají bloky přístup pouze k těmto parametrům. Bez parametrů mají přístup ke všem vstupním proměnným šablony, ve které jsou definovány. ```latte {define hello} @@ -60,7 +60,7 @@ Tag `{define}` slouží k vytváření bloků, které se renderují až po jejic `{parameters}` -------------- -Tag `{parameters}` slouží k explicitní deklaraci očekávaných vstupních proměnných na začátku šablony. Tímto způsobem lze snadno dokumentovat očekávané proměnné a jejich datové typy. Také je možné definovat výchozí hodnoty. +Tag `{parameters}` slouží k explicitní deklaraci očekávaných vstupních proměnných na začátku šablony. Tímto způsobem lze efektivně dokumentovat očekávané proměnné a jejich datové typy. Umožňuje také definovat výchozí hodnoty. ```latte {parameters int $age, string $name = 'neznámé'} @@ -70,7 +70,7 @@ Tag `{parameters}` slouží k explicitní deklaraci očekávaných vstupních pr `{include file}` ---------------- -Tag `{include file}` slouží k vložení celé šablony. Této šabloně se předávají jak vstupní proměnné šablony, ve které je značka použita, tak proměnné v ní explicitně definované. Cílová šablona ale může rozsah omezit pomocí `{parameters}`. +Tag `{include file}` vkládá celou šablonu. Do vkládané šablony se předávají vstupní proměnné šablony, ve které je značka použita, spolu s explicitně definovanými proměnnými. Cílová šablona může omezit rozsah přijímaných proměnných pomocí `{parameters}`. ```latte {include 'profile.latte', userId: $user->id} @@ -79,7 +79,7 @@ Tag `{include file}` slouží k vložení celé šablony. Této šabloně se př `{include block}` ----------------- -Když vkládáte blok definovaný ve stejné šabloně, předávají se do něj všechny okolní a explicitně definované proměnné: +Při vkládání bloku definovaného ve stejné šabloně se do něj předávají všechny okolní a explicitně definované proměnné: ```latte {define blockName} @@ -90,9 +90,9 @@ Když vkládáte blok definovaný ve stejné šabloně, předávají se do něj {include blockName} ``` -V tomto příkladu se proměnné `$name` a `$age` předají do bloku `blockName`. Stejným způsobem se chová i `{include parent}`. +V tomto příkladu jsou proměnné `$name` a `$age` předány do bloku `blockName`. Stejně se chová i `{include parent}`. -Při vkládání bloku z jiné šablony jsou předávány pouze vstupní proměnné a explicitně definované. Okolní proměnné nejsou automaticky dostupné. +Při vkládání bloku z jiné šablony se předávají pouze vstupní proměnné a explicitně definované proměnné. Okolní proměnné nejsou automaticky dostupné. ```latte {include blockInOtherTemplate, name: $name, age: $age} @@ -101,7 +101,7 @@ Při vkládání bloku z jiné šablony jsou předávány pouze vstupní proměn `{layout}` nebo `{extends}` --------------------------- -Tyto tagy definují layout, do kterého se předávají vstupní proměnné podřízené šablony a dále proměnné vytvořené v kódu před bloky: +Tyto tagy definují layout, do kterého se předávají vstupní proměnné podřízené šablony a proměnné vytvořené v kódu před bloky: ```latte {layout 'layout.latte'} @@ -134,7 +134,7 @@ Naopak v blocích uvnitř `{embed}` je přístup ke všem okolním proměnným: {var $name = 'Jan'} {embed 'menu.latte', items: $menuItems} {block foo} - {$nam} + {$name} {/block} {/embed} ``` @@ -142,7 +142,7 @@ Naopak v blocích uvnitř `{embed}` je přístup ke všem okolním proměnným: `{import}` ---------- -Tag `{import}` se využívá pro načítání bloků z jiných šablon. Přenáší se jak vstupní, tak explicitně deklarované proměnné do importovaných bloků. +Tag `{import}` se používá pro načítání bloků z jiných šablon. Do importovaných bloků se předávají jak vstupní, tak explicitně deklarované proměnné. ```latte {import 'buttons.latte'} @@ -151,11 +151,13 @@ Tag `{import}` se využívá pro načítání bloků z jiných šablon. Přená `{sandbox}` ----------- -Tag `{sandbox}` izoluje šablonu pro bezpečné zpracování. Proměnné jsou předávány výhradně explicitně. +Tag `{sandbox}` izoluje šablonu pro bezpečné zpracování. Proměnné jsou předávány výhradně explicitně, což zvyšuje kontrolu nad daty vstupujícími do izolovaného prostředí. ```latte {sandbox 'secure.latte', data: $secureData} ``` +Tento mechanismus umožňuje přesnou kontrolu nad tím, jaká data jsou dostupná v izolované šabloně, což je užitečné pro zpracování potenciálně nebezpečného obsahu. + {{leftbar: /@left-menu}} diff --git a/latte/cs/creating-extension.texy b/latte/cs/creating-extension.texy index 24ff44bc2a..7608d85ebc 100644 --- a/latte/cs/creating-extension.texy +++ b/latte/cs/creating-extension.texy @@ -2,25 +2,24 @@ Vytváříme Extension ******************* .[perex] -Tzv. rozšíření je opakovatelně použitelná třída, která může definovat vlastní značky, filtry, funkce, providery, atd. +Rozšíření (extension) je znovupoužitelná třída, která může definovat vlastní značky, filtry, funkce, providery a další prvky pro Latte. Vytváříme je, když chceme své úpravy Latte použít v různých projektech nebo je sdílet s komunitou. -Rozšíření vytváříme tehdy, pokud chceme své úpravy Latte znovu použít v různých projektech nebo je sdílet s ostatními. -Je užitečné vytvářet rozšíření i pro každý webový projekt, které bude obsahovat všechny specifické značky a filtry, které chcete v šablonách projektu využívat. +Rozšíření je užitečné vytvořit i pro každý webový projekt. Může obsahovat všechny specifické značky a filtry, které chcete v šablonách projektu využívat. Třída rozšíření =============== -Rozšíření je třída dědící od [api:Latte\Extension]. Do Latte se registruje pomocí `addExtension()` (případně [konfiguračním souborem |application:configuration#Šablony Latte]): +Rozšíření je třída dědící od [api:Latte\Extension]. Do Latte se registruje pomocí `addExtension()` nebo [konfiguračním souborem |application:configuration#Šablony Latte]: ```php $latte = new Latte\Engine; $latte->addExtension(new MyLatteExtension); ``` -Pokud zaregistrujete vícero rozšíření a ty definují stejně pojmenované tagy, filtry nebo funkce, vyhrává poslední přidané rozšíření. Z toho také plyne, že vaše rozšíření mohou přepisovat nativní značky/filtry/funkce. +Pokud zaregistrujete více rozšíření definujících stejně pojmenované tagy, filtry nebo funkce, platí poslední přidané. To znamená, že vaše rozšíření může přepisovat nativní značky/filtry/funkce. -Kdykoliv v třídě provedete změnu a není vypnutý auto-refresh, Latte automaticky překompiluje vaše šablony. +Kdykoliv provedete změnu ve třídě rozšíření a není vypnutý auto-refresh, Latte automaticky překompiluje vaše šablony. Třída může implementovat kteroukoliv z následujících metod: @@ -76,11 +75,13 @@ abstract class Extension Pro představu, jak rozšíření vypadá, se podívejte na vestavěné "CoreExtension":https://github.com/nette/latte/blob/master/src/Latte/Essential/CoreExtension.php. +Nyní si podrobněji rozebereme jednotlivé metody: + beforeCompile(Latte\Engine $engine): void .[method] --------------------------------------------------- -Volá se před kompilací šablony. Metodu lze využít např. pro inicializace související s kompilací. +Tato metoda se volá před kompilací šablony. Můžete ji využít například pro inicializace související s kompilací. getTags(): array .[method] @@ -102,18 +103,18 @@ public function getTags(): array Značka `n:baz` představuje ryzí n:atribut, tj. jde o značku, kterou lze zapisovat pouze jako atribut. -V případě značek `foo` a `bar` Latte samo rozezná, zda jsou párové, a pokud ano, bude je možné automaticky zapisovat i pomocí n:atributů, včetně variant s prefixy `n:inner-foo` a `n:tag-foo`. +Latte automaticky rozpozná, zda jsou značky `foo` a `bar` párové. Pokud ano, bude je možné zapisovat i pomocí n:atributů, včetně variant s prefixy `n:inner-foo` a `n:tag-foo`. -Pořadí provádění takovýchto n:atributů je dáno jejich pořadím v poli vráceném `getTags()`. Tedy `n:foo` se provede vždy před `n:bar`, i kdyby byly atributy v HTML značce uvedeny v opačném pořadí jako `
`. +Pořadí provádění n:atributů je dáno jejich pořadím v poli vráceném `getTags()`. Tedy `n:foo` se provede vždy před `n:bar`, i kdyby byly atributy v HTML značce uvedeny v opačném pořadí. -Pokud potřebujete stanovit pořadí n:atributů napříč více rozšířeními, použijte pomocnou metodu `order()`, kde parametr `before` a nebo `after` určuje, před nebo za kterými značkami se daná značka zařadí. +Pro stanovení pořadí n:atributů napříč více rozšířeními použijte pomocnou metodu `order()`. Parametry `before` a `after` určují, před nebo za kterými značkami se daná značka zařadí: ```php public function getTags(): array { return [ - 'foo' => self::order([FooNode::class, 'create'], before: 'bar')] - 'bar' => self::order([BarNode::class, 'create'], after: ['block', 'snippet'])] + 'foo' => self::order([FooNode::class, 'create'], before: 'bar'), + 'bar' => self::order([BarNode::class, 'create'], after: ['block', 'snippet']), ]; } ``` @@ -122,7 +123,7 @@ public function getTags(): array getPasses(): array .[method] ---------------------------- -Volá se při kompilaci šablony. Vrací asociativní pole *název pass => callable*, což jsou funkce představující tzv. [#průchody kompilátoru], které procházejí a modifikujou AST. +Volá se při kompilaci šablony. Vrací asociativní pole *název pass => callable*, což jsou funkce představující tzv. [#průchody kompilátoru], které procházejí a modifikují AST. Opět je možné využít pomocnou metodu `order()`. Hodnotou parametrů `before` nebo `after` může být `'*'` s významem před/za všemi. @@ -141,7 +142,7 @@ public function getPasses(): array beforeRender(Latte\Engine $engine): void .[method] -------------------------------------------------- -Volá se před každým vykreslením šablony. Metodu lze využít např. pro inicializaci proměnných používaných při vykreslování. +Volá se před každým vykreslením šablony. Metodu lze využít například pro inicializaci proměnných používaných při vykreslování. getFilters(): array .[method] @@ -181,7 +182,7 @@ public function getFunctions(): array getProviders(): array .[method] ------------------------------- -Volá se před vykreslením šablony. Vrací pole tzv. providers, což jsou zpravidla objekty, které za běhu využívají tagy. Přistupují k nim přes `$this->global->...`. +Volá se před vykreslením šablony. Vrací pole tzv. providerů, což jsou zpravidla objekty, které za běhu využívají tagy. Přistupují k nim přes `$this->global->...`. ```php public function getProviders(): array @@ -198,7 +199,7 @@ public function getProviders(): array getCacheKey(Latte\Engine $engine): mixed .[method] -------------------------------------------------- -Volá se před vykreslením šablony. Vrácená hodnota se stane součástí klíče, jehož hash je obsažen v názvu souboru se zkompilovanou šablonou. Tedy pro různé vrácené hodnoty Latte vygeneruje různé soubory v cache. +Volá se před vykreslením šablony. Vrácená hodnota se stane součástí klíče, jehož hash je obsažen v názvu souboru se zkompilovanou šablonou. Pro různé vrácené hodnoty tedy Latte vygeneruje různé soubory v cache. Jak Latte funguje? @@ -208,20 +209,19 @@ Pro pochopení toho, jak definovat vlastní tagy nebo compiler passes, je nezbyt Kompilace šablon v Latte probíhá zjednodušeně takto: -- Nejprve **lexer** tokenizuje zdrojový kód šablony na malé části (tokeny) pro snadnější zpracování. -- Poté **parser** převede proud tokenů na smysluplný strom uzlů (abstraktní syntaktický strom, AST). -- Nakonec překladač **vygeneruje** z AST třídu PHP, která vykresluje šablonu, a uloží ji do cache. +1. **Lexer** tokenizuje zdrojový kód šablony na menší části (tokeny) pro snadnější zpracování. +2. **Parser** převede proud tokenů na smysluplný strom uzlů (abstraktní syntaktický strom, AST). +3. **Překladač** vygeneruje z AST třídu PHP, která vykresluje šablonu, a uloží ji do cache. Ve skutečnosti je kompilace o něco složitější. Latte **má dva** lexery a parsery: jeden pro HTML šablonu a druhý pro PHP-like kód uvnitř tagů. A také parsování neprobíhá až po tokenizaci, ale lexer i parser běží paralelně ve dvou "vláknech" a koordinují se. Je to raketová věda :-) -Dále své parsovací rutiny mají i všechny tagy. Když parser narazí na tag, zavolá jeho parsovací funkci (vrací je [Extension::getTags()|#getTags]). -Jejich úkolem je naparsovat argumenty značky a v případě párových značek i vnitřní obsah. Vrací *uzel*, který se stane součástí AST. Podrobně v části [#Parsovací funkce tagu]. +Každý tag má svou parsovací rutinu. Když parser narazí na tag, zavolá jeho parsovací funkci (vrací je [Extension::getTags()|#getTags]). Jejich úkolem je naparsovat argumenty značky a v případě párových značek i vnitřní obsah. Vrací *uzel*, který se stane součástí AST. Podrobně v části [#Parsovací funkce tagu]. -Když parser dokončí práci, máme kompletní AST reprezentující šablonu. Kořenovým uzlem je `Latte\Compiler\Nodes\TemplateNode`. Jednotlivé uzly uvnitř stromu pak reprezentují nejen tagy, ale i HTML elementy, jejich atributy, všechny výrazy použité uvnitř značek atd. +Po dokončení parsování máme kompletní AST reprezentující šablonu. Kořenovým uzlem je `Latte\Compiler\Nodes\TemplateNode`. Jednotlivé uzly uvnitř stromu reprezentují nejen tagy, ale i HTML elementy, jejich atributy, všechny výrazy použité uvnitř značek atd. Poté přicházejí na řadu tzv. [#Průchody kompilátoru], což jsou funkce (vrací je [Extension::getPasses()|#getPasses]), které modifikují AST. -Celý proces od načtení obsahu šablony přes parsování až po vygenerování výsledného souboru se dá sekvenčně vykonat tímto kódem, se kterým můžete experimentovat a dumpovat si jednotlivé mezikroky: +Celý proces od načtení obsahu šablony přes parsování až po vygenerování výsledného souboru můžete sekvenčně vykonat tímto kódem: ```php $latte = new Latte\Engine; @@ -285,19 +285,21 @@ Vlastní tagy K definování nové značky jsou zapotřebí tři kroky: -- definování [#parsovací funkce tagu] (zodpovědná za parsování tagu do uzlu) -- vytvoření třídy uzlu (zodpovědné za [#generování PHP kódu] a [#procházení AST]) -- registrace tagu pomocí [Extension::getTags()|#getTags] +1. Definování [#parsovací funkce tagu] (zodpovědná za parsování tagu do uzlu) +2. Vytvoření třídy uzlu (zodpovědné za [#generování PHP kódu] a [#procházení AST]) +3. Registrace tagu pomocí [Extension::getTags()|#getTags] Parsovací funkce tagu --------------------- -Parsování tagů ma na starosti jeho parsovací funkce (ta, kterou vrací [Extension::getTags()|#getTags]). Jejím úkolem je naparsovat a zkontrolovat případné argumenty uvnitř značky (k tomu využívá TagParser). -A dále, pokud je značka párová, požádá TemplateParser o naparsování a vrácení vnitřního obsahu. -Funkce vytvoří a vrátí uzel, který je zpravidla potomkem `Latte\Compiler\Nodes\StatementNode`, a ten se stane součástí AST. +Parsování tagů má na starosti jeho parsovací funkce (ta, kterou vrací [Extension::getTags()|#getTags]). Jejím úkolem je: + +1. Naparsovat a zkontrolovat případné argumenty uvnitř značky (k tomu využívá TagParser). +2. Pokud je značka párová, požádat TemplateParser o naparsování a vrácení vnitřního obsahu. +3. Vytvořit a vrátit uzel, který je zpravidla potomkem `Latte\Compiler\Nodes\StatementNode`, a který se stane součástí AST. -Pro každý uzel si vytváříme třídu, což uděláme teď hned a parsovací funkci do ní elegantně umístíme jako statickou továrnu. Jako příklad si zkusíme vytvořit známý tag `{foreach}`: +Pro každý uzel vytváříme třídu a parsovací funkci do ní umístíme jako statickou továrnu. Jako příklad si vytvoříme známý tag `{foreach}`: ```php use Latte\Compiler\Nodes\StatementNode; @@ -338,7 +340,7 @@ a dále nízkoúrovňový [api:Latte\Compiler\TokenStream] operující přímo s - `$tag->parser->stream->consume(...): Token` - `$tag->parser->stream->tryConsume(...): ?Token` -Latte drobnými způsoby rozšiřuje syntaxi PHP, například o modifikátory, zkrácené ternání operátory, nebo umožňuje jednoduché alfanumerické řetězce psát bez uvozovek. Proto používáme termím *PHP-like* místo PHP. Tudíž metoda `parseExpression()` naparsuje např. `foo` jako `'foo'`. +Latte mírně rozšiřuje syntaxi PHP, například o modifikátory, zkrácené ternání operátory, nebo umožňuje jednoduché alfanumerické řetězce psát bez uvozovek. Proto používáme termín *PHP-like* místo PHP. Metoda `parseExpression()` tedy naparsuje např. `foo` jako `'foo'`. Vedle toho *unquoted-řetězec* je speciálním případem řetězce, který také nemusí být v uvozovkách, ale zároveň nemusí být ani alfanumerický. Jde třeba o cestu k souboru ve značce `{include ../file.latte}`. K jeho naparsování slouží metoda `parseUnquotedStringOrExpression()`. .[note] @@ -416,7 +418,7 @@ Každý uzel musí implementovat metodu `print()`. Vrací PHP kód vykreslujíc Metoda `format(string $mask, ...$args)` akceptuje v masce tyto placeholdery: - `%node` vypisuje Node -- `%dump` vyexporuje hodnotu do PHP +- `%dump` vyexportuje hodnotu do PHP - `%raw` vloží přímo text bez jakékoliv transformace - `%args` vypíše ArrayNode jako argumenty volání funkce - `%line` vypíše komentář s číslem řádku @@ -474,7 +476,7 @@ Všimněte si, že `getIterator()` vrací reference. Právě díky tomu mohou *n .[warning] Pokud má uzel poduzly, je nezbytné tuto metodu implementovat a všechny poduzly zpřístupnit. Jinak by mohla vzniknout bezpečnostní díra. Například režim sandboxu by nebyl schopen kontrolovat poduzly a zajistit, aby v nich nebyly volány nepovolené konstrukce. -Protože klíčové slovo `yield` musí být přítomno v těle metody i pokud nemá žádné podřízené uzly, zapište ji takto: +Pokud uzel nemá žádné poduzly, implementujte metodu takto: ```php public function &getIterator(): \Generator @@ -498,7 +500,7 @@ Pokud vytváříte nový tag pro Latte, je žádoucí, abyste pro něj vytvořil $node = new AuxiliaryNode( // tělo metody print(): fn(PrintContext $context, $argNode) => $context->format('myFunc(%node)', $argNode), - // uzly zpřístupnění přes getIterator() a také předané do metody print(): + // uzly zpřístupněné přes getIterator() a také předané do metody print(): [$argNode], ); ``` @@ -544,9 +546,9 @@ $ast = (new NodeTraverser)->traverse( ); ``` -Modul AST může snadno obsahovat tisíce uzlů a procházení všech uzlů může být pomalé. V některých případech je možné se úplnému procházení vyhnout. +AST může snadno obsahovat tisíce uzlů a procházení všech uzlů může být časově náročné. V některých případech je možné se úplnému procházení vyhnout. -Pokud ve stromu hledáte všechny uzly `Html\ElementNode`, pak víte, že jakmile jednou uvidíte uzel `Php\ExpressionNode`, nemá smysl kontrolovat také všechny jeho podřízené uzly, protože HTML nemůže být uvnitř ve výrazech. V takovém případě můžete traverseru přikázat, aby do uzlu třídy neprováděl rekurzi: +Pokud ve stromu hledáte všechny uzly `Html\ElementNode`, pak víte, že jakmile jednou uvidíte uzel `Php\ExpressionNode`, nemá smysl kontrolovat také všechny jeho podřízené uzly, protože HTML nemůže být uvnitř výrazů. V takovém případě můžete traverseru přikázat, aby do uzlu třídy neprováděl rekurzi: ```php $ast = (new NodeTraverser)->traverse( @@ -578,7 +580,7 @@ $ast = (new NodeTraverser)->traverse( Pomocníci pro uzly ------------------ -Třída [api:Latte\Compiler\NodeHelpers] poskytuje některé metody, které mohou najít uzly AST, které buď splňují určitou podmínku atd. Několik příkladů: +Třída [api:Latte\Compiler\NodeHelpers] poskytuje některé metody, které mohou najít uzly AST, které splňují určitou podmínku atd. Několik příkladů: ```php use Latte\Compiler\NodeHelpers; @@ -595,3 +597,5 @@ $value = NodeHelpers::toValue($node); // převede statický textový uzel na řetězec $text = NodeHelpers::toText($node); ``` + +Tímto způsobem můžete efektivně procházet a manipulovat s AST stromem ve vašich rozšířeních pro Latte. diff --git a/latte/cs/develop.texy b/latte/cs/develop.texy index 19e8f2d33a..db494d990c 100644 --- a/latte/cs/develop.texy +++ b/latte/cs/develop.texy @@ -5,7 +5,7 @@ Vývojářské postupy Instalace ========= -Nejlepší způsob, jak nainstalovat Latte, je pomocí Composeru: +Nejlepší způsob instalace Latte je pomocí Composeru: ```shell composer require latte/latte @@ -18,22 +18,22 @@ Podporované verze PHP (platí pro poslední setinkové verze Latte): | Latte 3.0 | PHP 8.0 – 8.2 -Jak vykreslit šablonu -===================== +Vykreslení šablony +================== Jak vykreslit šablonu? Stačí k tomu tento jednoduchý kód: ```php $latte = new Latte\Engine; -// adresář pro cache +// nastavení adresáře pro cache $latte->setTempDirectory('/path/to/tempdir'); $params = [ /* proměnné šablony */ ]; -// or $params = new TemplateParameters(/* ... */); +// nebo $params = new TemplateParameters(/* ... */); -// kresli na výstup +// vykreslení na výstup $latte->render('template.latte', $params); -// kresli do proměnné +// vykreslení do proměnné $output = $latte->renderToString('template.latte', $params); ``` @@ -46,23 +46,21 @@ Ukázky použití najdete také v repozitáři [Latte examples |https://github.c Výkon a cache ============= -Šablony v Latte jsou nesmírně rychlé, Latte je totiž kompiluje přímo do PHP kódu a ukládá do cache na disk. Nemají tedy žádnou režii navíc oproti šablonám psaným v čistém PHP. +Šablony v Latte jsou extrémně rychlé, protože se kompilují přímo do PHP kódu a ukládají do cache na disk. Nemají tedy žádnou režii navíc oproti šablonám psaným v čistém PHP. -Cache se automaticky regeneruje pokaždé, když změníte zdrojový soubor. Během vývoje si tedy pohodlně editujete šablony v Latte a změny okamžitě vidíte v prohlížeči. Tuto funkci můžete v produkčním prostředí vypnout a ušetřit tím malinko výkonu: +Cache se automaticky regeneruje při změně zdrojového souboru. Během vývoje tedy pohodlně editujete šablony v Latte a změny okamžitě vidíte v prohlížeči. Pro mírné zvýšení výkonu v produkčním prostředí můžete automatickou regeneraci vypnout: ```php $latte->setAutoRefresh(false); ``` -Při nasazení na produkčním serveru může prvotní vygenerování cache, zejména u rozsáhlejších aplikací, pochopitelně chviličku trvat. Latte má vestavěnou prevenci před "cache stampede":https://en.wikipedia.org/wiki/Cache_stampede. -Jde o situaci, kdy se sejde větší počet souběžných požadavků, které spustí Latte, a protože cache ještě neexistuje, začaly by ji všechny generovat současně. Což by neúměrně zatížilo server. -Latte je chytré a při více souběžných požadavcích generuje cache pouze první vlákno, ostatní čekají a následně ji využíjí. +Při nasazení na produkční server může prvotní vygenerování cache, zejména u rozsáhlých aplikací, chvíli trvat. Latte má vestavěnou prevenci proti "cache stampede":https://en.wikipedia.org/wiki/Cache_stampede, což je situace, kdy velký počet souběžných požadavků spustí generování cache současně, což by mohlo přetížit server. Latte tento problém řeší chytře - při více souběžných požadavcích generuje cache pouze první vlákno, zatímco ostatní čekají a následně využijí vytvořenou cache. Parametry jako třída ==================== -Lepší než předávat proměnné do šablony jako pole je vytvořit si třídu. Získáte tak [typově bezpečný zápis|type-system], [příjemné napovídání v IDE|recipes#Editory a IDE] a cestu pro [registraci filtrů|extending-latte#Filtry pomocí třídy] a [funkcí|extending-latte#Funkce pomocí třídy]. +Místo předávání proměnných do šablony jako pole je lepší vytvořit si třídu. Získáte tak [typově bezpečný zápis|type-system], [příjemné napovídání v IDE|recipes#Editory a IDE] a možnost [registrace filtrů|extending-latte#Filtry pomocí třídy] a [funkcí|extending-latte#Funkce pomocí třídy]. ```php class MailTemplateParameters @@ -89,9 +87,9 @@ $latte->render('mail.latte', new MailTemplateParameters( Vypnutí auto-escapování proměnné ================================ -Pokud proměnná obsahuje řetězec v HTML, můžete ji označit tak, aby ji Latte automaticky (a tedy dvojitě) neescapovalo. Vyhnete se tak potřebě uvádět v šabloně `|noescape`. +Pokud proměnná obsahuje HTML řetězec, můžete ji označit tak, aby ji Latte automaticky (a tedy dvojitě) neescapovalo. Tím se vyhnete potřebě uvádět v šabloně `|noescape`. -Nejjednodušší cestou je řetězec zabalit do objektu `Latte\Runtime\Html`: +Nejjednodušší způsob je zabalit řetězec do objektu `Latte\Runtime\Html`: ```php $params = [ @@ -99,10 +97,10 @@ $params = [ ]; ``` -Latte dále neescapuje všechny objekty, které implementují rozhraní `Latte\HtmlStringable`. Můžete si tak vytvořit vlastní třídu, jejíž metoda `__toString()` bude vracet HTML kód, který se nebude automaticky escapovat: +Latte také neescapuje objekty implementující rozhraní `Latte\HtmlStringable`. Můžete si vytvořit vlastní třídu, jejíž metoda `__toString()` bude vracet HTML kód, který se nebude automaticky escapovat: ```php -class Emphasis extends Latte\HtmlStringable +class Emphasis implements Latte\HtmlStringable { public function __construct( private string $str, @@ -127,16 +125,14 @@ Metoda `__toString` musí vracet korektní HTML a zajistit escapování parametr Jak rozšířit Latte o filtry, značky atd. ======================================== -Jak do Latte přidat vlastní filtr, funkci, značku atd? O tom pojednává kapitola [rozšiřujeme Latte |extending-latte]. +Informace o přidávání vlastních filtrů, funkcí, značek atd. najdete v kapitole [rozšiřujeme Latte |extending-latte]. Pokud chcete své úpravy znovu použít v různých projektech nebo je sdílet s ostatními, měli byste [vytvořit rozšíření |creating-extension]. -Libovolný kód v šabloně `{php ...}` .{toc: RawPhpExtension} -=========================================================== +Libovolný PHP kód v šabloně `{php ...}` .{toc: RawPhpExtension} +=============================================================== -Uvnitř značky [`{do}`|tags#do] lze zapisovat pouze PHP výrazy, nemůžete tak třeba vložit konstrukce jako `if ... else` nebo statementy ukončené středníkem. - -Můžete si však zaregistrovat rozšíření `RawPhpExtension`, které přidává značku `{php ...}`. Pomocí té lze vkládat jakýkoliv PHP kód. Nevztahují se na něj žádná pravidla sandbox režimu, použití je tedy na zodpovědnost autora šablony. +Zatímco uvnitř značky [`{do}`|tags#do] lze zapisovat pouze PHP výrazy, rozšíření `RawPhpExtension` přidává značku `{php ...}`, která umožňuje vkládat jakýkoliv PHP kód. Použití je na zodpovědnost autora šablony, protože se na ni nevztahují pravidla sandbox režimu. ```php $latte->addExtension(new Latte\Essential\RawPhpExtension); @@ -146,12 +142,10 @@ $latte->addExtension(new Latte\Essential\RawPhpExtension); Kontrola vygenerovaného kódu .{data-version:3.0.7} ================================================== -Latte kompiluje šablony do PHP kódu. Samozřejmě dbá na to, aby vygenerovaný kód byl syntakticky validní. Nicméně při použítí rozšíření třetích stran nebo `RawPhpExtension` nemůže Latte zaručit správnost vygenerovaného souboru. -Také lze v PHP zapsat kód, který je sice syntakticky správný, ale je zakázaný (například přiřazení hodnoty do proměnné `$this`) a způsobí PHP Compile Error. +Latte kompiluje šablony do PHP kódu a dbá na jeho syntaktickou správnost. Nicméně při použití rozšíření třetích stran nebo `RawPhpExtension` nemůže Latte zaručit korektnost vygenerovaného souboru. V PHP lze také zapsat kód, který je syntakticky správný, ale zakázaný (například přiřazení hodnoty do `$this`) a způsobí PHP Compile Error. Pokud takovou operaci zapíšete v šabloně, dostane se i do vygenerovaného PHP kódu. Jelikož v PHP existují na dvě stovky různých zakázaných operací, nemá Latte ambici je odhalovat. Upozorní na ně až samotné PHP při vykreslení, což obvykle ničemu nevadí. -Jsou ale situace, kdy chcete vědět už v době kompilace šablony, že žádný PHP Compile Error neobsahuje. Zejména tehdy, pokud šablony mohou editovat uživatelé, nebo používáte [Sandbox]. V takovém případě si nechte šablony kontrolovat už v době kompilace. -Tuto funkčnost zapnete metodou `Engine::enablePhpLint()`. Jelikož ke kontrole potřebuje volat binárku PHP, cestu k ní předejte jako parametr: +Pokud chcete odhalit tyto problémy už v době kompilace šablony, zejména pokud šablony mohou editovat uživatelé nebo používáte [Sandbox], můžete zapnout kontrolu pomocí `Engine::enablePhpLint()`. Ke kontrole je potřeba volat binárku PHP, jejíž cestu předáte jako parametr: ```php $latte = new Latte\Engine; @@ -185,7 +179,7 @@ Vyžaduje PHP rozšíření `intl`. Nastavení v Latte neovlivňuje globální n Striktní režim .{data-version:3.0.8} ==================================== -Ve striktním režimu parsování Latte kontroluje, zda nechybí uzavírací HTML značky a také zakazuje používání proměnné `$this`. Zapnete jej takto: +Ve striktním režimu parsování Latte kontroluje, zda nechybí uzavírací HTML značky a zakazuje používání proměnné `$this`. Zapnete jej takto: ```php $latte = new Latte\Engine; @@ -203,7 +197,7 @@ $latte->setStrictTypes(); Překládání v šablonách .{toc: TranslatorExtension} ================================================== -Pomocí rozšíření `TranslatorExtension` přidáte do šablony značky [`{_...}`|tags#_], [`{translate}`|tags#translate] a filtr [`translate`|filters#translate]. Slouží k překládání hodnot nebo částí šablony do jiných jazyků. Jako parametr uvedeme metodu (PHP callable) provádějící překlad: +Rozšíření `TranslatorExtension` přidává do šablony značky [`{_...}`|tags#_], [`{translate}`|tags#translate] a filtr [`translate`|filters#translate] pro překládání hodnot nebo částí šablony do jiných jazyků. Jako parametr uvedeme metodu provádějící překlad: ```php class MyTranslator @@ -249,7 +243,7 @@ public function translate(string $original, ...$params): string Debuggování a Tracy =================== -Latte se vám snaží vývoj co nejvíce zpříjemnit. Přímo pro účely debugování existuje trojice značek [`{dump}`|tags#dump], [`{debugbreak}`|tags#debugbreak] a [`{trace}`|tags#trace]. +Latte se vám snaží vývoj co nejvíce zpříjemnit. Nabízí několik nástrojů pro debugování, včetně značek [`{dump}`|tags#dump], [`{debugbreak}`|tags#debugbreak] a [`{trace}`|tags#trace]. Největší komfort získáte, když ještě si nainstalujete skvělý [ladicí nástroj Tracy|tracy:] a aktivujete doplněk pro Latte: @@ -267,13 +261,13 @@ Zároveň v pravém dolním rohu v tzv. Tracy Baru se objeví záložka pro Latt [* latte-debugging.webp *] -Jelikož Latte kompiluje šablony do přehledného PHP kódu, můžete je pohodlně ve svém IDE krokovat. +Jelikož Latte kompiluje šablony do přehledného PHP kódu, můžete je pohodlně krokovat ve svém IDE. Linter: validace syntaxe šablon .{toc: Linter} ============================================== -Projít všechny šablony a zkontrolovat, zda neobsahují syntaktické chyby, vám pomůže nástroj Linter. Spouští se z konzole: +Pro kontrolu syntaxe všech šablon můžete použít nástroj Linter, který se spouští z konzole: ```shell vendor/bin/latte-lint @@ -281,31 +275,30 @@ vendor/bin/latte-lint Parametrem `--strict` aktivujete [striktní režim|#striktní režim]. -Pokud používáte vlastní značky, vytvořte si také vlastní verzi Linteru, např. `custom-latte-lint`: +Pokud používáte vlastní značky, vytvořte si vlastní verzi Linteru, např. `custom-latte-lint`: ```php #!/usr/bin/env php getEngine(); -// tady přidejte jednotlivá svá rozšíření +// zde přidejte svá rozšíření $latte->addExtension(/* ... */); $ok = $linter->scanDirectory($path); exit($ok ? 0 : 1); ``` -Alternativně můžete vlastní objekt `Latte\Engine` předat do Linteru: +Alternativně můžete předat vlastní objekt `Latte\Engine` do Linteru: ```php $latte = new Latte\Engine; -// tady nakonfigurujeme objekt $latte +// zde nakonfigurujeme objekt $latte $linter = new Latte\Tools\Linter(engine: $latte); ``` @@ -313,7 +306,7 @@ $linter = new Latte\Tools\Linter(engine: $latte); Načítání šablon z řetězce ========================= -Potřebujete načítat šablony z řetězců místo souborů, třeba pro účely testování? Pomůže vám [StringLoader|extending-latte#stringloader]: +Pro načítání šablon z řetězců, například pro účely testování, můžete použít [StringLoader|extending-latte#stringloader]: ```php $latte->setLoader(new Latte\Loaders\StringLoader([ @@ -359,4 +352,4 @@ $latte = new Latte\Engine; $latte->addProvider('coreParentFinder', $finder); ``` -Pokud šablona nemá mít layout, oznámí to značkou `{layout none}`. +Pokud šablona nemá mít layout, použije se značka `{layout none}`. diff --git a/latte/cs/extending-latte.texy b/latte/cs/extending-latte.texy index 15442df8e8..3a4089c0aa 100644 --- a/latte/cs/extending-latte.texy +++ b/latte/cs/extending-latte.texy @@ -2,74 +2,76 @@ Rozšiřujeme Latte ***************** .[perex] -Latte je velmi flexibilní a lze jej rozšířit mnoha způsoby: můžete přidat vlastní filtry, funkce, značky, loadery atd. Ukážeme si jak na to. +Latte je mimořádně flexibilní šablonovací systém, který můžete přizpůsobit svým potřebám mnoha způsoby. Ať už potřebujete přidat vlastní filtry, funkce, značky nebo změnit způsob načítání šablon, Latte vám to umožní. Pojďme se podívat, jak na to. -Tato kapitola popisuje jednotlivé cesty rozšiřování Latte. Pokud chcete své úpravy znovu použít v různých projektech nebo je sdílet s ostatními, měli byste [vytvořit tzv. rozšíření |creating-extension]. +Tato kapitola vás provede různými metodami rozšíření Latte. Pokud plánujete své rozšíření použít ve více projektech nebo ho sdílet s komunitou, doporučujeme vytvořit [samostatné rozšíření |creating-extension]. Kolik cest vede do Říma? ======================== -Protože některé způsoby rozšíření Latte mohou splývat, zkusíme si nejprve vysvětlit rozdíly mezi nimi. Jako příklad se pokusíme implementovat generátor *Lorem ipsum*, kterému předáme počet slov, jenž má vygenerovat. +Jelikož některé způsoby rozšíření Latte mohou být podobné, pojďme si nejprve objasnit rozdíly mezi nimi. Jako příklad implementujeme generátor textu *Lorem ipsum*, kterému předáme požadovaný počet slov. -Hlavní konstrukcí jazyka Latte je značka (tag). Generátor můžeme implementovat rozšířením jazyka Latte o nový tag: +Základním stavebním kamenem jazyka Latte je značka (tag). Generátor bychom mohli implementovat jako novou značku: ```latte {lipsum 40} ``` +Tato značka by fungovala dobře, ale nemusí být dostatečně flexibilní, protože ji nelze použít ve výrazech. Mimochodem, v praxi je potřeba vytvářet nové značky jen zřídka, což je dobrá zpráva, protože jde o složitější způsob rozšíření. -Tag bude skvěle fungovat. Nicméně generátor v podobě tagu nemusí být dostatečně flexibilní, protože jej nelze použít ve výrazu. Mimochodem v praxi potřebujete tagy vytvářet jen zřídka; a to je dobrá zpráva, protože tagy jsou složitějším způsobem rozšíření. - -Dobrá, zkusme místo tagu vytvořit filtr: +Zkusme místo značky vytvořit filtr: ```latte {=40|lipsum} ``` -Opět validní možnost. Ale filtr by měl předanou hodnotu transformovat na něco jiného. Zde hodnotu `40`, která udává počet vygenerovaných slov, používáme jako argument filtru, nikoli jako hodnotu, kterou chceme transformovat. +To je také platná možnost. Avšak filtr by měl typicky transformovat předanou hodnotu. V tomto případě hodnotu `40`, která určuje počet generovaných slov, používáme jako argument filtru, nikoli jako hodnotu k transformaci. -Tak zkusíme použít funkci: +Pojďme tedy zkusit funkci: ```latte {lipsum(40)} ``` -To je ono! Pro tento konkrétní příklad je vytvoření funkce ideálním způsobem rozšíření. Můžete ji volat kdekoli, kde je akceptován výraz, například: +To je ono! Pro tento konkrétní případ je vytvoření funkce ideálním způsobem rozšíření. Můžete ji volat kdekoli, kde je povolen výraz, například: ```latte {var $text = lipsum(40)} ``` +Tento příklad ukazuje, že výběr správného způsobu rozšíření závisí na konkrétním použití. Nyní se pojďme podívat na jednotlivé metody podrobněji. + Filtry ====== -Filtr vytvoříme zaregistrováním jeho názvu a libovolného PHP callable, třeba funkce: +Filtry jsou mocné nástroje pro transformaci dat přímo v šabloně. Vytvořit vlastní filtr je jednoduché: ```php $latte = new Latte\Engine; -$latte->addFilter('shortify', fn(string $s) => mb_substr($s, 0, 10)); // zkrátí text na 10 písmen +$latte->addFilter('shortify', fn(string $s) => mb_substr($s, 0, 10)); // zkrátí text na 10 znaků ``` -V tomto případě by bylo šikovnější, kdyby filtr přijímal další parametr: +V tomto případě by bylo užitečné, kdyby filtr přijímal další parametr: ```php $latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len)); ``` -V šabloně se potom volá takto: +V šabloně se pak volá takto: ```latte

{$text|shortify}

{$text|shortify:100}

``` -Jak vidíte, funkce obdrží levou stranu filtru před pipe `|` jako první argument a argumenty předané filtru za `:` jako další argumenty. +Všimněte si, že: +- První argument filtru je vždy hodnota nalevo od `|` +- Další argumenty se předávají za dvojtečkou +- Filtry mohou mít libovolný počet argumentů, včetně volitelných -Funkce představující filtr může samozřejmě přijímat libovolný počet parametrů, podporovány jsou i variadic parametry. - -Pokud filtr vrací řetězec v HTML, můžete jej označit tak, aby jej Latte automaticky (a tedy dvojitě) neescapovalo. Vyhnete se tak potřebě uvádět v šabloně `|noescape`. -Nejjednodušší cestou je řetězec zabalit do objektu `Latte\Runtime\Html`, druhou cestu představují [Kontextové filtry|#Kontextové filtry]. +Pokud filtr vrací řetězec v HTML, můžete jej označit tak, aby jej Latte automaticky (a tedy dvojitě) neescapovalo. Tím se vyhnete nutnosti používat v šabloně `|noescape`. +Nejjednodušší způsob je obalit řetězec do objektu `Latte\Runtime\Html`, alternativou jsou [Kontextové filtry|#Kontextové filtry]. ```php $latte->addFilter('money', fn(float $amount) => new Latte\Runtime\Html("$amount Kč")); @@ -82,19 +84,19 @@ Filtr musí v takovém případě zajistit správné escapování dat. Filtry pomocí třídy ------------------- -Druhým způsobem definice filtru je [využití třídy|develop#Parametry jako třída]. Vytvoříme metodu s atributem `TemplateFilter`: +Alternativním způsobem definice filtru je [využití třídy|develop#Parametry jako třída]. Vytvoříme metodu s atributem `TemplateFilter`: ```php class TemplateParameters { public function __construct( - // parameters + // parametry ) {} #[Latte\Attributes\TemplateFilter] public function shortify(string $s, int $len = 10): string { - return mb_substr($s, 0, $len); + return mb_substr($s, 0, $len) . (mb_strlen($s) > $len ? '...' : ''); } } @@ -102,11 +104,13 @@ $params = new TemplateParameters(/* ... */); $latte->render('template.latte', $params); ``` +Tento přístup je zvláště užitečný, když máte více filtrů nebo když filtry potřebují přístup ke sdíleným zdrojům. + Zavaděč filtrů -------------- -Místo registrace jednotlivých filtrů lze vytvořit tzv. zavaděč, což je funkce, které se zavolá s názvem filtru jako argumentem a vrátí jeho PHP callable, nebo null. +Místo registrace jednotlivých filtrů lze vytvořit tzv. zavaděč. Jde o funkci, která se volá s názvem filtru jako argumentem a vrací jeho PHP callable, nebo null. ```php $latte->addFilterLoader([new Filters, 'load']); @@ -131,11 +135,13 @@ class Filters } ``` +Tento přístup umožňuje dynamicky načítat filtry podle potřeby, což může být užitečné v rozsáhlých aplikacích. + Kontextové filtry ----------------- -Kontextový filtr je takový, který v prvním parametru přijímá objekt [api:Latte\Runtime\FilterInfo] a teprve po něm následují další parametry jako u klasických filtrů. Registruje se stejný způsobem, Latte samo rozpozná, že filtr je kontextový: +Kontextové filtry jsou speciální typ filtrů, které mají přístup k dodatečným informacím o kontextu, ve kterém jsou použity: ```php use Latte\Runtime\FilterInfo; @@ -147,13 +153,13 @@ $latte->addFilter('foo', function (FilterInfo $info, string $str): string { Kontextové filtry mohou zjišťovat a měnit content-type, který obdrží v proměnné `$info->contentType`. Pokud se filtr volá klasicky nad proměnnou (např. `{$var|foo}`), bude `$info->contentType` obsahovat null. -Filtr by měl nejprve ověřit, zda content-type vstupního řetězce podporuje. A může ho také změnit. Příklad filtru, který přijímá text (nebo null) a vrací HTML: +Filtr by měl nejprve ověřit, zda podporuje content-type vstupního řetězce. Může ho také změnit. Příklad filtru, který přijímá text (nebo null) a vrací HTML: ```php use Latte\Runtime\FilterInfo; $latte->addFilter('money', function (FilterInfo $info, float $amount): string { - // nejprve oveříme, zda je vstupem content-type text + // nejprve ověříme, zda je vstupem content-type text if (!in_array($info->contentType, [null, ContentType::Text])) { throw new Exception("Filter |money used in incompatible content type $info->contentType."); } @@ -173,9 +179,9 @@ Všechny filtry, které se používají nad [bloky|tags#block] (např. jako `{bl Funkce ====== -V Latte lze standardně používat všechny nativní funkce z PHP, pokud to nezakáže sandbox. Ale zároveň si můžete definovat funkce vlastní. Mohou přepsat funkce nativní. +V Latte lze standardně používat všechny nativní funkce PHP, pokud to nezakáže sandbox. Zároveň si můžete definovat vlastní funkce, které mohou přepsat i nativní funkce. -Funkci vytvoříme zaregistrováním jejího názvu a libovolného PHP callable: +Funkci vytvoříme registrací jejího názvu a libovolného PHP callable: ```php $latte = new Latte\Engine; @@ -184,7 +190,7 @@ $latte->addFunction('random', function (...$args) { }); ``` -Použití je pak stejné, jako když voláte PHP funkci: +Použití je pak stejné jako při volání PHP funkce: ```latte {random(jablko, pomeranč, citron)} // vypíše například: jablko @@ -194,13 +200,13 @@ Použití je pak stejné, jako když voláte PHP funkci: Funkce pomocí třídy ------------------- -Druhým způsobem definice funkce je [využití třídy|develop#Parametry jako třída]. Vytvoříme metodu s atributem `TemplateFunction`: +Alternativním způsobem definice funkce je [využití třídy|develop#Parametry jako třída]. Vytvoříme metodu s atributem `TemplateFunction`: ```php class TemplateParameters { public function __construct( - // parameters + // parametry ) {} #[Latte\Attributes\TemplateFunction] @@ -214,17 +220,19 @@ $params = new TemplateParameters(/* ... */); $latte->render('template.latte', $params); ``` +Tento přístup je užitečný pro organizaci souvisejících funkcí a sdílení zdrojů mezi nimi. + Loadery ======= -Loadery jsou zodpovědné za načítání šablon ze zdroje, například ze souborového systému. Nastaví se metodou `setLoader()`: +Loadery jsou zodpovědné za načítání šablon ze zdroje, například ze souborového systému. Nastavují se metodou `setLoader()`: ```php $latte->setLoader(new MyLoader); ``` -Vestavěné loadery jsou tyto: +Latte nabízí tyto vestavěné loadery: FileLoader @@ -232,7 +240,7 @@ FileLoader Výchozí loader. Načítá šablony ze souborového systému. -Přístup k souborům je možné omezit nastavením základního adresáře: +Přístup k souborům lze omezit nastavením základního adresáře: ```php $latte->setLoader(new Latte\Loaders\FileLoader($templateDir)); @@ -243,7 +251,7 @@ $latte->render('test.latte'); StringLoader ------------ -Načítá šablony z řetězců. Tento loader je velmi užitečný pro testování. Lze jej také použít pro malé projekty, kde může mít smysl ukládat všechny šablony do jediného souboru PHP. +Načítá šablony z řetězců. Tento loader je velmi užitečný pro testování. Lze jej také použít pro menší projekty, kde může být výhodné ukládat všechny šablony do jediného PHP souboru. ```php $latte->setLoader(new Latte\Loaders\StringLoader([ @@ -272,20 +280,20 @@ Loader je třída, která implementuje rozhraní [api:Latte\Loader]. Tagy (makra) ============ -Jednou z nejzajímavějších funkcí šablonovacího jádra je možnost definovat nové jazykové konstrukce pomocí značek. Je to také složitější funkčnost a je třeba pochopit, jak Latte interně funguje. +Jednou z nejzajímavějších funkcí šablonovacího jádra je možnost definovat nové jazykové konstrukce pomocí značek. Je to také složitější funkcionalita a vyžaduje pochopení vnitřního fungování Latte. -Většinou však značka není potřeba: -- pokud by měla generovat nějaký výstup, použijte místo ní [funkci|#funkce] -- pokud měla upravovat nějaký vstup a vracet ho, použijte místo toho [filtr|#filtry] -- pokud měla upravovat oblast textu, obalte jej značkou [`{block}`|tags#block] a použijte [filtr|#Kontextové filtry] -- pokud neměla nic vypisovat, ale pouze volat funkci, zavolejte ji pomocí [`{do}`|tags#do] +Ve většině případů však značka není potřeba: +- pokud má generovat nějaký výstup, použijte místo ní [funkci|#funkce] +- pokud má upravovat nějaký vstup a vracet ho, použijte [filtr|#filtry] +- pokud má upravovat oblast textu, obalte jej značkou [`{block}`|tags#block] a použijte [filtr|#Kontextové filtry] +- pokud nemá nic vypisovat, ale pouze volat funkci, použijte [`{do}`|tags#do] -Pokud přesto chcete vytvořit tag, skvěle! Vše podstatné najdete v kapitole [Vytváříme Extension|creating-extension]. +Pokud se přesto rozhodnete vytvořit tag, skvělé! Vše potřebné najdete v kapitole [Vytváříme Extension|creating-extension]. Průchody kompilátoru ==================== -Průchody kompilátoru jsou funkce, které modifikují AST nebo sbírají v nich informace. V Latte je takto implementován například sandbox: projde všechny uzly AST, najde volání funkcí a metod a nahradí je za jím kontrolované volání. +Průchody kompilátoru jsou funkce, které modifikují AST (abstraktní syntaktický strom) nebo z něj sbírají informace. V Latte je takto implementován například sandbox: projde všechny uzly AST, najde volání funkcí a metod a nahradí je za kontrolovaná volání. -Stejně jako v případě značek se jedná o složitější funkcionalitu a je potřeba pochopit, jak funguje Latte pod kapotou. Vše podstatné najdete v kapitole [Vytváříme Extension|creating-extension]. +Stejně jako v případě značek se jedná o složitější funkcionalitu, která vyžaduje pochopení vnitřního fungování Latte. Vše potřebné najdete v kapitole [Vytváříme Extension|creating-extension]. diff --git a/latte/cs/filters.texy b/latte/cs/filters.texy index 0fa1e5a14e..108da2e117 100644 --- a/latte/cs/filters.texy +++ b/latte/cs/filters.texy @@ -2,113 +2,111 @@ Latte filtry ************ .[perex] -V šablonách můžeme používat funkce, které pomáhají upravit nebo přeformátovat data do výsledné podoby. Říkáme jim *filtry*. +Filtry v šablonách Latte pomáhají upravit nebo přeformátovat data do požadované podoby .[table-latte-filters] |## Transformace -| `batch` | [výpis lineárních dat do tabulky |#batch] -| `breakLines` | [Před konce řádku přidá HTML odřádkování |#breakLines] +| `batch` | [rozdělí lineární data do bloků |#batch] +| `breakLines` | [přidá HTML odřádkování za konce řádků |#breakLines] | `bytes` | [formátuje velikost v bajtech |#bytes] -| `clamp` | [ohraničí hodnotu do daného rozsahu |#clamp] -| `dataStream` | [konverze pro Data URI protokol |#datastream] -| `date` | [formátuje datum a čas|#date] +| `clamp` | [omezí hodnotu do daného rozsahu |#clamp] +| `dataStream` | [převede data do formátu Data URI |#datastream] +| `date` | [formátuje datum a čas |#date] | `explode` | [rozdělí řetězec na pole podle oddělovače |#explode] -| `first` | [vrací první prvek pole nebo znak řetězce |#first] -| `group` | [seskupí data podle různých kritérií |#group] +| `first` | [vrátí první prvek pole nebo znak řetězce |#first] +| `group` | [seskupí data podle zadaných kritérií |#group] | `implode` | [spojí pole do řetězce |#implode] -| `indent` | [odsadí text zleva o daný počet tabulátorů |#indent] +| `indent` | [odsadí text zleva |#indent] | `join` | [spojí pole do řetězce |#implode] -| `last` | [vrací poslední prvek pole nebo znak řetězce |#last] -| `length` | [vrací délku řetězce ve znacích nebo pole |#length] -| `localDate` | [formátuje datum a čas podle národního prostředí|#localDate] +| `last` | [vrátí poslední prvek pole nebo znak řetězce |#last] +| `length` | [vrátí délku řetězce nebo počet prvků pole |#length] +| `localDate` | [formátuje datum a čas podle národního prostředí |#localDate] | `number` | [formátuje číslo |#number] | `padLeft` | [doplní řetězec zleva na požadovanou délku |#padLeft] | `padRight` | [doplní řetězec zprava na požadovanou délku |#padRight] -| `random` | [vrací náhodný prvek pole nebo znak řetězce |#random] -| `repeat` | [opakování řetězce |#repeat] -| `replace` | [zamění výskyty hledaného řetězce |#replace] -| `replaceRE` | [zamění výskyty dle regulárního výrazu |#replaceRE] -| `reverse` | [obrátí UTF‑8 řetězec nebo pole |#reverse] +| `random` | [vrátí náhodný prvek pole nebo znak řetězce |#random] +| `repeat` | [opakuje řetězec |#repeat] +| `replace` | [nahradí výskyty hledaného řetězce |#replace] +| `replaceRE` | [nahradí výskyty podle regulárního výrazu |#replaceRE] +| `reverse` | [obrátí pořadí znaků v řetězci nebo prvků v poli |#reverse] | `slice` | [extrahuje část pole nebo řetězce |#slice] | `sort` | [seřadí pole |#sort] -| `spaceless` | [odstraní bílé místo |#spaceless], podobně jako značka [spaceless |tags] tag +| `spaceless` | [odstraní nadbytečné bílé znaky |#spaceless] | `split` | [rozdělí řetězec na pole podle oddělovače |#explode] -| `strip` | [odstraní bílé místo |#spaceless] -| `stripHtml` | [odstraní HTML značky a HTML entity převede na znaky |#stripHtml] +| `strip` | [odstraní nadbytečné bílé znaky |#spaceless] +| `stripHtml` | [odstraní HTML značky a převede entity na znaky |#stripHtml] | `substr` | [vrátí část řetězce |#substr] -| `trim` | [odstraní počáteční a koncové mezery či jiné znaky |#trim] -| `translate` | [překlad do jiných jazyků |#translate] -| `truncate` | [zkrátí délku se zachováním slov |#truncate] -| `webalize` | [upraví UTF‑8 řetězec do tvaru používaného v URL |#webalize] +| `trim` | [odstraní bílé znaky na začátku a konci řetězce |#trim] +| `translate` | [přeloží text do jiného jazyka |#translate] +| `truncate` | [zkrátí text na danou délku se zachováním slov |#truncate] +| `webalize` | [upraví řetězec pro použití v URL |#webalize] .[table-latte-filters] |## Velikost písmen -| `capitalize` | [malá písmena, první písmeno ve slovech velké |#capitalize] +| `capitalize` | [převede první písmeno každého slova na velké |#capitalize] | `firstUpper` | [převede první písmeno na velké |#firstUpper] -| `lower` | [převede na malá písmena |#lower] -| `upper` | [převede na velká písmena |#upper] +| `lower` | [převede text na malá písmena |#lower] +| `upper` | [převede text na velká písmena |#upper] .[table-latte-filters] |## Zaokrouhlování -| `ceil` | [zaokrouhlí číslo nahoru na danou přesnost |#ceil] -| `floor` | [zaokrouhlí číslo dolů na danou přesnost |#floor] -| `round` | [zaokrouhlí číslo na danou přesnost |#round] +| `ceil` | [zaokrouhlí číslo nahoru |#ceil] +| `floor` | [zaokrouhlí číslo dolů |#floor] +| `round` | [zaokrouhlí číslo |#round] .[table-latte-filters] |## Escapování | `escapeUrl` | [escapuje parametr v URL |#escapeUrl] -| `noescape` | [vypíše proměnnou bez escapování |#noescape] +| `noescape` | [vypne automatické escapování |#noescape] | `query` | [generuje query string v URL |#query] -Dále existují escapovací filtry pro HTML (`escapeHtml` a `escapeHtmlComment`), XML (`escapeXml`), JavaScript (`escapeJs`), CSS (`escapeCss`) a iCalendar (`escapeICal`), které Latte používá samo díky [kontextově sensitivnímu escapování|safety-first#Kontextově sensitivní escapování] a nemusíte je zapisovat. +Latte automaticky používá escapovací filtry pro HTML (`escapeHtml` a `escapeHtmlComment`), XML (`escapeXml`), JavaScript (`escapeJs`), CSS (`escapeCss`) a iCalendar (`escapeICal`) díky [kontextově sensitivnímu escapování|safety-first#Kontextově sensitivní escapování]. Tyto filtry není třeba explicitně zapisovat. .[table-latte-filters] |## Bezpečnost -| `checkUrl` | [ošetří URL adresu od nebezpečných vstupů |#checkUrl] -| `nocheck` | [předejde automatickému ošetření URL adresy |#nocheck] - -Latte atributy `src` a `href` [kontroluje automaticky |safety-first#Kontrola odkazů], takže filtr `checkUrl` téměř nemusíte používat. +| `checkUrl` | [zkontroluje a případně upraví URL adresu |#checkUrl] +| `nocheck` | [vypne automatickou kontrolu URL adresy |#nocheck] .[note] -Všechny výchozí filtry jsou určeny pro řetězce v kódování UTF‑8. +Všechny výchozí filtry jsou navrženy pro práci s řetězci v kódování UTF-8. Použití ======= -Filtry se zapisují za svislítko (může být před ním mezera): +Filtry se aplikují pomocí svislítka za proměnnou nebo výrazem: ```latte

{$heading|upper}

``` -Filtry (ve starších verzích helpery) lze zřetězit a poté se aplikují v pořadí od levého k pravému: +Filtry lze řetězit, v takovém případě se aplikují zleva doprava: ```latte

{$heading|lower|capitalize}

``` -Parametry se zadávají za jménem filtru oddělené dvojtečkami nebo čárkami: +Parametry filtrů se zadávají za dvojtečkou: ```latte

{$heading|truncate:20,''}

``` -Filtry lze aplikovat i na výraz: +Filtry lze použít i na výrazy: ```latte -{var $name = ($title|upper) . ($subtitle|lower)} +{var $name = ($title|upper) . ($subtitle|lower)} ``` -[Vlastní filtry|extending-latte#filtry] lze registrovat tímto způsobem: +[Vlastní filtry|extending-latte#filtry] se registrují následovně: ```php $latte = new Latte\Engine; $latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len)); ``` -V šabloně se potom volá takto: +V šabloně se pak volají stejně jako vestavěné filtry: ```latte

{$text|shortify}

@@ -120,9 +118,9 @@ Filtry ====== -batch(int length, mixed item): array .[filter] ----------------------------------------------- -Filtr, který zjednodušuje výpis lineárních dat do podoby tabulky. Vrací pole polí se zadaným počtem položek. Pokud zadáte druhý parametr, použije se k doplnění chybějících položek na posledním řádku. +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ +Filtr `batch` usnadňuje výpis lineárních dat do tabulkové struktury. Vrací pole polí s požadovaným počtem položek. Pokud zadáte druhý parametr, použije se k doplnění chybějících položek v posledním řádku. ```latte {var $items = ['a', 'b', 'c', 'd', 'e']} @@ -137,7 +135,7 @@ Filtr, který zjednodušuje výpis lineárních dat do podoby tabulky. Vrací po ``` -Vypíše: +Výstup: ```latte @@ -159,7 +157,7 @@ Viz také [#group] a značka [iterateWhile|tags#iterateWhile]. breakLines .[filter] -------------------- -Přidává před každý znak nového řádku HTML značku `
` +Filtr `breakLines` vkládá HTML značku `
` před každý znak nového řádku. ```latte {var $s = "Text & with \n newline"} @@ -167,19 +165,21 @@ Přidává před každý znak nového řádku HTML značku `
` ``` -bytes(int precision = 2) .[filter] ----------------------------------- -Formátuje velikost v bajtech do lidsky čitelné podoby. Pokud je nastavené [národní prostředí |develop#locale], použijí se odpovídající oddělovače desetinných míst a tisíců. +bytes(int $precision=2) .[filter] +--------------------------------- +Filtr `bytes` formátuje velikost v bajtech do lidsky čitelné podoby. Pokud je nastaveno [národní prostředí |develop#locale], použijí se odpovídající oddělovače desetinných míst a tisíců. ```latte {$size|bytes} 0 B, 1.25 GB, … {$size|bytes:0} 10 B, 1 GB, … ``` +Viz také [#number]. -ceil(int precision = 0) .[filter] ---------------------------------- -Zaokrouhlí číslo nahoru na danou přesnost. + +ceil(int $precision=0) .[filter] +-------------------------------- +Filtr `ceil` zaokrouhlí číslo nahoru na danou přesnost. ```latte {=3.4|ceil} {* vypíše 4 *} @@ -192,7 +192,7 @@ Viz také [#floor], [#round]. capitalize .[filter] -------------------- -Slova budou začínat velkými písmeny, všechny zbývající znaky budou malá. Vyžaduje PHP rozšíření `mbstring`. +Filtr `capitalize` upraví text tak, že první písmeno každého slova bude velké a zbývající malá. Vyžaduje PHP rozšíření `mbstring`. ```latte {='i like LATTE'|capitalize} {* vypíše 'I Like Latte' *} @@ -203,7 +203,7 @@ Viz také [#firstUpper], [#lower], [#upper]. checkUrl .[filter] ------------------ -Vynutí ošetření URL adresy. Kontroluje, zda proměnná obsahuje webovou URL (tj. protokol HTTP/HTTPS) a předchází vypsání odkazů, které mohou představovat bezpečnostní riziko. +Filtr `checkUrl` zajistí kontrolu a případné ošetření URL adresy. Ověří, zda proměnná obsahuje webovou URL (tj. protokol HTTP/HTTPS) a zabrání vypsání odkazů, které by mohly představovat bezpečnostní riziko. ```latte {var $link = 'javascript:window.close()'} @@ -211,38 +211,40 @@ Vynutí ošetření URL adresy. Kontroluje, zda proměnná obsahuje webovou URL nekontrolované ``` -Vypíše: +Výstup: ```latte kontrolovanénekontrolované ``` +Latte automaticky [kontroluje atributy |safety-first#Kontrola odkazů] `src` a `href`, takže filtr `checkUrl` většinou není nutné explicitně uvádět. + Viz také [#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- -Ohraničí hodnotu do daného inkluzivního rozsahu min a max. +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- +Filtr `clamp` omezí hodnotu do zadaného inkluzivního rozsahu min a max. ```latte {$level|clamp: 0, 255} ``` -Existuje také jako [funkce|functions#clamp]. +K dispozici je také jako [funkce|functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- -Konvertuje obsah do data URI scheme. Pomocí něj lze do HTML nebo CSS vkládat obrázky bez nutnosti linkovat externí soubory. +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- +Filtr `dataStream` konvertuje obsah do schématu data URI. To umožňuje vkládat obrázky přímo do HTML nebo CSS bez nutnosti odkazovat na externí soubory. -Mějme v proměnné obrázek `$img = Image::fromFile('obrazek.gif')`, poté +Pokud máme v proměnné obrázek `$img = Image::fromFile('obrazek.gif')`, potom ```latte ``` -Vypíše například: +vypíše například: ```latte {$name} @@ -276,15 +278,15 @@ Escapuje proměnnou pro použití jakožto parametru v URL. Viz také [#query]. -explode(string separator = '') .[filter] ----------------------------------------- -Rozdělí řetězec na pole podle oddělovače. Alias pro `split`. +explode(string $separator='') .[filter] +--------------------------------------- +Filtr `explode` rozdělí řetězec na pole podle zadaného oddělovače. Je to alias pro `split`. ```latte {='one,two,three'|explode:','} {* vrací ['one', 'two', 'three'] *} ``` -Pokud je oddělovač prázdný řetězec (výchozí hodnota), bude vstup rozdělen na jednotlivé znaky: +Pokud je oddělovač prázdný řetězec (výchozí hodnota), vstup se rozdělí na jednotlivé znaky: ```latte {='123'|explode} {* vrací ['1', '2', '3'] *} @@ -301,7 +303,7 @@ Viz také [#implode]. first .[filter] --------------- -Vrací první prvek pole nebo znak řetězce: +Filtr `first` vrací první prvek pole nebo první znak řetězce: ```latte {=[1, 2, 3, 4]|first} {* vypíše 1 *} @@ -311,9 +313,9 @@ Vrací první prvek pole nebo znak řetězce: Viz také [#last], [#random]. -floor(int precision = 0) .[filter] ----------------------------------- -Zaokrouhlí číslo dolů na danou přesnost. +floor(int $precision=0) .[filter] +--------------------------------- +Filtr `floor` zaokrouhlí číslo dolů na danou přesnost. ```latte {=3.5|floor} {* vypíše 3 *} @@ -326,7 +328,7 @@ Viz také [#ceil], [#round]. firstUpper .[filter] -------------------- -Převede první písmeno na velká. Vyžaduje PHP rozšíření `mbstring`. +Filtr `firstUpper` převede první písmeno na velké. Vyžaduje PHP rozšíření `mbstring`. ```latte {='the latte'|firstUpper} {* vypíše 'The latte' *} @@ -335,9 +337,9 @@ Převede první písmeno na velká. Vyžaduje PHP rozšíření `mbstring`. Viz také [#capitalize], [#lower], [#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- -Filtr seskupí data podle různých kritérií. +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- +Filtr `group` umožňuje seskupit data podle různých kritérií. V tomto příkladu se řádky v tabulce seskupují podle sloupce `categoryId`. Výstupem je pole polí, kde klíčem je hodnota ve sloupci `categoryId`. [Přečtěte si podrobný návod|cookbook/grouping]. @@ -354,9 +356,9 @@ V tomto příkladu se řádky v tabulce seskupují podle sloupce `categoryId`. V Viz také [#batch], funkce [group|functions#group] a značka [iterateWhile|tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ -Vrátí řetězec, který je zřetězením položek sekvence. Alias pro `join`. +implode(string $glue='') .[filter] +---------------------------------- +Filtr `implode` spojí prvky pole do řetězce. Je to alias pro `join`. ```latte {=[1, 2, 3]|implode} {* vypíše '123' *} @@ -370,9 +372,9 @@ Můžete také použít alias `join`: ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- -Odsadí text zleva o daný počet tabulátorů nebo jiných znaků, které můžeme uvést ve druhém argumentu. Prázdné řádky nejsou odsazeny. +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- +Filtr `indent` odsadí text zleva o zadaný počet tabulátorů nebo jiných znaků. Prázdné řádky nejsou odsazeny. ```latte
@@ -382,7 +384,7 @@ Odsadí text zleva o daný počet tabulátorů nebo jiných znaků, které můž
``` -Vypíše: +Výstup: ```latte
@@ -393,7 +395,7 @@ Vypíše: last .[filter] -------------- -Vrací poslední prvek pole nebo znak řetězce: +Filtr `last` vrací poslední prvek pole nebo poslední znak řetězce: ```latte {=[1, 2, 3, 4]|last} {* vypíše 4 *} @@ -405,13 +407,12 @@ Viz také [#first], [#random]. length .[filter] ---------------- -Vrátí délku řetězce nebo pole. - -- pro řetězce vrátí délku v UTF‑8 znacích -- pro pole vrátí počet položek -- pro objekty, které implementují rozhraní Countable, použije návratovou hodnotu metody count() -- pro objekty, které implementují rozhraní IteratorAggregate, použije návratovou hodnotu funkce iterator_count() +Filtr `length` vrátí délku řetězce nebo počet prvků v poli. +- pro řetězce vrátí počet unicode znaků +- pro pole vrátí počet prvků +- pro objekty implementující rozhraní Countable použije návratovou hodnotu metody count() +- pro objekty implementující rozhraní IteratorAggregate použije návratovou hodnotu funkce iterator_count() ```latte {if ($users|length) > 10} @@ -420,9 +421,9 @@ Vrátí délku řetězce nebo pole. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- -Formátuje datum a čas podle [národního prostředí |develop#locale], což zajišťuje konzistentní a lokalizované zobrazení časových údajů napříč různými jazyky a regiony. Filtr přijímá datum jako UNIX timestamp, řetězec nebo objekt typu `DateTimeInterface`. +Filtr `localDate` formátuje datum a čas podle [národního prostředí |develop#locale]. To zajišťuje konzistentní a lokalizované zobrazení časových údajů napříč různými jazyky a regiony. Filtr přijímá datum jako UNIX timestamp, řetězec nebo objekt typu `DateTimeInterface`. ```latte {$date|localDate} {* 15. dubna 2024 *} @@ -430,20 +431,20 @@ Formátuje datum a čas podle [národního prostředí |develop#locale], což za {$date|localDate: date: medium} {* 15. 4. 2024 *} ``` -Pokud použijete filtr bez parametrů, vypíše se datum v úrovní `long`, viz dále. +Bez parametrů se datum vypíše v úrovni `long` (viz dále). **a) použití formátu** -Parametr `format` popisuje, které časové složky se mají zobrazit. Používá pro ně písmenné kódy, jejichž počet opakování ovlivňuje šířku výstupu: +Parametr `format` definuje, které časové složky se mají zobrazit. Používá písmena jako kódy, jejichž počet opakování ovlivňuje šířku výstupu: | rok | `y` / `yy` / `yyyy` | `2024` / `24` / `2024` | měsíc | `M` / `MM` / `MMM` / `MMMM` | `8` / `08` / `srp` / `srpen` | den | `d` / `dd` / `E` / `EEEE` | `1` / `01` / `ne` / `neděle` -| hodina | `j` / `H` / `h` | preferovaný / 24hodinový / 12hodinový +| hodina | `j` / `H` / `h` | preferovaná / 24hodinová / 12hodinová | minuta | `m` / `mm` | `5` / `05` (2 číslice v kombinaci se sekundami) | sekunda | `s` / `ss` | `8` / `08` (2 číslice v kombinaci s minutami) -Na pořadí kódů ve formátu nezáleží, protože pořadí složek se vypíše podle zvyklostí národního prostředí. Formát je tedy na něm nezávislý. Například formát `yyyyMMMMd` v postředí `en_US` vypíše `April 15, 2024`, zatímco v prostředí `cs_CZ` vypíše `15. dubna 2024`: +Pořadí kódů ve formátu nemá vliv na pořadí složek ve výstupu, protože to se řídí zvyklostmi národního prostředí. Formát je tedy na něm nezávislý. Například formát `yyyyMMMMd` v prostředí `en_US` vypíše `April 15, 2024`, zatímco v prostředí `cs_CZ` vypíše `15. dubna 2024`: | locale: | cs_CZ | en_US |--- @@ -458,7 +459,7 @@ Na pořadí kódů ve formátu nezáleží, protože pořadí složek se vypíš **b) použití přednastavených stylů** -Parametry `date` a `time` určují, jak podrobně se má datum a čas vypsat. Můžete si vybrat z několika úrovní: `full`, `long`, `medium`, `short`. Lze nechat vypsat jen datum, jen čas, nebo obojí: +Parametry `date` a `time` určují úroveň podrobnosti pro výpis data a času. K dispozici jsou úrovně: `full`, `long`, `medium`, `short`. Můžete nechat vypsat jen datum, jen čas, nebo obojí: | locale: | cs_CZ | en_US |--- @@ -473,7 +474,7 @@ Parametry `date` a `time` určují, jak podrobně se má datum a čas vypsat. M | `date: medium, time: short` | 23. 1. 1978 8:30 | Jan 23, 1978, 8:30 AM | `date: long, time: short` | 23. ledna 1978 v 8:30 | January 23, 1978 at 8:30 AM -U data lze navíc použít prefix `relative-` (např. `relative-short`), který pro data blízká současnosti zobrazí `včera`, `dnes` nebo `zítra`, jinak se vypíše standardním způsobem. +Pro datum lze použít prefix `relative-` (např. `relative-short`), který pro data blízká současnosti zobrazí `včera`, `dnes` nebo `zítra`, jinak se vypíše standardním způsobem. ```latte {$date|localDate: date: relative-short} {* včera *} @@ -484,7 +485,7 @@ Viz také [#date]. lower .[filter] --------------- -Převede řetězec na malá písmena. Vyžaduje PHP rozšíření `mbstring`. +Filtr `lower` převede řetězec na malá písmena. Vyžaduje PHP rozšíření `mbstring`. ```latte {='LATTE'|lower} {* vypíše 'latte' *} @@ -495,9 +496,9 @@ Viz také [#capitalize], [#firstUpper], [#upper]. nocheck .[filter] ----------------- -Předejde automatickému ošetření URL adresy. Latte [automaticky kontroluje|safety-first#Kontrola odkazů], zda proměnná obsahuje webovou URL (tj. protokol HTTP/HTTPS) a předchází vypsání odkazů, které mohou představovat bezpečnostní riziko. +Filtr `nocheck` vypne automatickou kontrolu URL adresy. Latte standardně [kontroluje |safety-first#Kontrola odkazů], zda proměnná obsahuje webovou URL (tj. protokol HTTP/HTTPS) a brání vypsání potenciálně nebezpečných odkazů. -Pokud odkaz používá jiné schéma, např. `javascript:` nebo `data:`, a jste si jistí jeho obsahem, můžete kontrolu vypnout pomoci `|nocheck`. +Pokud odkaz používá jiné schéma, např. `javascript:` nebo `data:`, a jste si jisti jeho obsahem, můžete kontrolu vypnout pomocí `|nocheck`. ```latte {var $link = 'javascript:window.close()'} @@ -506,7 +507,7 @@ Pokud odkaz používá jiné schéma, např. `javascript:` nebo `data:`, a jste nekontrolované ``` -Vypíše: +Výstup: ```latte kontrolované @@ -518,7 +519,7 @@ Viz také [#checkUrl]. noescape .[filter] ------------------ -Zakáže automatické escapování. +Filtr `noescape` vypne automatické escapování. ```latte {var $trustedHtmlString = 'hello'} @@ -526,7 +527,7 @@ Escapovaný: {$trustedHtmlString} Neescapovaný: {$trustedHtmlString|noescape} ``` -Vypíše: +Výstup: ```latte Escapovaný: <b>hello</b> @@ -534,12 +535,12 @@ Neescapovaný: hello ``` .[warning] -Špatné použití filtru `noescape` může vést ke vzniku zranitelnosti XSS! Nikdy jej nepoužívejte, pokud si nejste **zcela jisti** co děláte, a že vypisovaný řetězec pochází z důvěryhodného zdroje. +Nesprávné použití filtru `noescape` může vést ke zranitelnosti XSS! Používejte jej pouze tehdy, když si jste **naprosto jisti**, že vypisovaný řetězec pochází z důvěryhodného zdroje. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- -Formátuje číslo na určitý počet desetinných míst. Pokud je nastavené [národní prostředí |develop#locale], použijí se odpovídající oddělovače desetinných míst a tisíců. +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- +Filtr `number` formátuje číslo na zadaný počet desetinných míst. Pokud je nastaveno [národní prostředí |develop#locale], použijí se odpovídající oddělovače desetinných míst a tisíců. ```latte {1234.20|number} 1,234 @@ -549,18 +550,18 @@ Formátuje číslo na určitý počet desetinných míst. Pokud je nastavené [n ``` -number(string format) .[filter] -------------------------------- -Parametr `format` umožňuje definovat vzhled čísel přesně podle vašich potřeb. K tomu je potřeba mít nastavené [národní prostředí |develop#locale]. Formát se skládá z několika speciálních znaků, jejichž kompletní popis najdete v dokumentaci "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns: +number(string $format) .[filter] +-------------------------------- +Parametr `format` umožňuje přesně definovat vzhled čísel podle vašich potřeb. K tomu je nutné mít nastavené [národní prostředí |develop#locale]. Formát se skládá z několika speciálních znaků, jejichž kompletní popis najdete v dokumentaci "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns: - `0` povinná číslice, vždy se zobrazí, i kdyby to byla nula - `#` volitelná číslice, zobrazí se jen tehdy, pokud na tomto místě číslo skutečně je - `@` významná číslice, pomáhá zobrazit číslo s určitým počtem platných číslic -- `.` označuje, kde má být desetinná čárka (nebo tečka, podle země) +- `.` označuje pozici desetinné čárky (nebo tečky, podle země) - `,` slouží k oddělení skupin číslic, nejčastěji tisíců - `%` číslo vynásobí 100× a přidá znak procenta -Pojďme se podívat na příklady. V prvním příkladu jsou dvě desetinná místa povinná, ve druhém volitelná. Třetí příklad ukazuje doplnění nulami zleva i zprava, čtvrtý zobrazuje jen existující číslice: +Podívejme se na příklady. V prvním příkladu jsou dvě desetinná místa povinná, ve druhém volitelná. Třetí příklad ukazuje doplnění nulami zleva i zprava, čtvrtý zobrazuje jen existující číslice: ```latte {1234.5|number: '#,##0.00'} {* 1,234.50 *} @@ -569,7 +570,7 @@ Pojďme se podívat na příklady. V prvním příkladu jsou dvě desetinná mí {1.2 |number: '##.##'} {* 1.2 *} ``` -Významné číslice určují, kolik číslic bez ohledu na desetinou čárku má být zobrazeno, přičemž se zaokrouhluje: +Významné číslice určují, kolik číslic bez ohledu na desetinnou čárku má být zobrazeno, přičemž dochází k zaokrouhlování: ```latte {1234|number: '@@'} {* 1200 *} @@ -585,7 +586,7 @@ Snadný způsob, jak zobrazit číslo jako procenta. Číslo se vynásobí 100× {0.1234|number: '#.##%'} {* 12.34% *} ``` -Můžeme definovat odlišný formát pro kladná a záporná čísla, odděluje je znak `;`. Tímto způsobem lze například nastavit, že kladná čísla se mají zobrazovat se znaménkem `+`: +Můžeme definovat odlišný formát pro kladná a záporná čísla, oddělené znakem `;`. Tímto způsobem lze například nastavit, že kladná čísla se mají zobrazovat se znaménkem `+`: ```latte {42|number: '#.##;(#.##)'} {* 42 *} @@ -594,21 +595,21 @@ Můžeme definovat odlišný formát pro kladná a záporná čísla, odděluje {-42|number: '+#.##;-#.##'} {* -42 *} ``` -Pamatujte, že skutečný vzhled čísel se může lišit podle nastavení země. Například v některých zemích se používá čárka místo tečky jako oddělovač desetinných míst. Tento filtr to automaticky zohlední a nemusíte se o nic starat. +Nezapomeňte, že skutečný vzhled čísel se může lišit podle nastavení země. Například v některých zemích se používá čárka místo tečky jako oddělovač desetinných míst. Tento filtr to automaticky zohlední, takže se o to nemusíte starat. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- -Doplní řetězec do určité délky jiným řetězcem zleva. +Filtr `padLeft` doplní řetězec zleva na požadovanou délku jiným řetězcem. ```latte {='hello'|padLeft: 10, '123'} {* vypíše '12312hello' *} ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ -Doplní řetězec do určité délky jiným řetězcem zprava. +Filtr `padRight` doplní řetězec zprava na požadovanou délku jiným řetězcem. ```latte {='hello'|padRight: 10, '123'} {* vypíše 'hello12312' *} @@ -617,18 +618,18 @@ Doplní řetězec do určité délky jiným řetězcem zprava. query .[filter] --------------- -Dynamicky generuje query string v URL: +Filtr `query` dynamicky generuje query string v URL: ```latte -click -search +klikněte +hledat ``` -Vypíše: +Výstup: ```latte -click -search +klikněte +hledat ``` Klíče s hodnotou `null` se vynechají. @@ -638,7 +639,7 @@ Viz také [#escapeUrl]. random .[filter] ---------------- -Vrací náhodný prvek pole nebo znak řetězce: +Filtr `random` vrací náhodný prvek pole nebo náhodný znak řetězce: ```latte {=[1, 2, 3, 4]|random} {* vypíše např.: 3 *} @@ -648,18 +649,18 @@ Vrací náhodný prvek pole nebo znak řetězce: Viz také [#first], [#last]. -repeat(int count) .[filter] ---------------------------- -Opakuje řetězec x-krát. +repeat(int $count) .[filter] +---------------------------- +Filtr `repeat` opakuje řetězec zadaný počet krát. ```latte {='hello'|repeat: 3} {* vypíše 'hellohellohello' *} ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- -Nahradí všechny výskyty vyhledávacího řetězce náhradním řetězcem. +Filtr `replace` nahradí všechny výskyty hledaného řetězce náhradním řetězcem. ```latte {='hello world'|replace: 'world', 'friend'} {* vypíše 'hello friend' *} @@ -672,9 +673,9 @@ Lze provést i více záměn najednou: ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- -Provede vyhledávání regulárních výrazů s nahrazením. +Filtr `replaceRE` provádí nahrazování podle regulárních výrazů. ```latte {='hello world'|replaceRE: '/l.*/', 'l'} {* vypíše 'hel' *} @@ -683,19 +684,19 @@ Provede vyhledávání regulárních výrazů s nahrazením. reverse .[filter] ----------------- -Obrátí daný řetězec nebo pole. +Filtr `reverse` obrátí pořadí znaků v řetězci nebo prvků v poli. ```latte {var $s = 'Nette'} {$s|reverse} {* vypíše 'etteN' *} {var $a = ['N', 'e', 't', 't', 'e']} -{$a|reverse} {* returns ['e', 't', 't', 'e', 'N'] *} +{$a|reverse} {* vrátí ['e', 't', 't', 'e', 'N'] *} ``` -round(int precision = 0) .[filter] ----------------------------------- -Zaokrouhlí číslo na danou přesnost. +round(int $precision=0) .[filter] +--------------------------------- +Filtr `round` zaokrouhlí číslo na zadanou přesnost. ```latte {=3.4|round} {* vypíše 3 *} @@ -707,27 +708,27 @@ Zaokrouhlí číslo na danou přesnost. Viz také [#ceil], [#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ -Extrahuje část pole nebo řetězce. +Filtr `slice` extrahuje část pole nebo řetězce. ```latte {='hello'|slice: 1, 2} {* vypíše 'el' *} {=['a', 'b', 'c']|slice: 1, 2} {* vypíše ['b', 'c'] *} ``` -Filtr funguje jako funkce PHP `array_slice` pro pole nebo `mb_substr` pro řetězce s fallbackem na funkci `iconv_substr` v režimu UTF‑8. +Tento filtr funguje jako funkce PHP `array_slice` pro pole nebo `mb_substr` pro řetězce s fallbackem na funkci `iconv_substr` v režimu UTF-8. -Pokud je start kladný, posloupnost začné posunutá o tento počet od začátku pole/řetezce. Pokud je záporný posloupnost začné posunutá o tolik od konce. +Pokud je `start` kladný, posloupnost začíná posunutá o tento počet od začátku pole/řetězce. Pokud je záporný, posloupnost začíná posunutá o tolik od konce. -Pokud je zadaný parametr length a je kladný, posloupnost bude obsahovat tolik prvků. Pokud je do této funkce předán záporný parametr length, posloupnost bude obsahovat všechny prvky původního pole, začínající na pozici start a končicí na pozici menší na length prvků od konce pole. Pokud tento parametr nezadáte, posloupnost bude obsahovat všechny prvky původního pole, začínající pozici start. +Pokud je zadán parametr `length` a je kladný, posloupnost bude obsahovat tolik prvků. Pokud je do této funkce předán záporný parametr `length`, posloupnost bude obsahovat všechny prvky původního pole, začínající na pozici `start` a končící na pozici menší o `length` prvků od konce pole. Pokud tento parametr nezadáte, posloupnost bude obsahovat všechny prvky původního pole, začínající pozicí `start`. -Ve výchozím nastavení filtr změní pořadí a resetuje celočíselného klíče pole. Toto chování lze změnit nastavením preserveKeys na true. Řetězcové klíče jsou vždy zachovány, bez ohledu na tento parametr. +Ve výchozím nastavení filtr změní pořadí a resetuje celočíselné klíče pole. Toto chování lze změnit nastavením `preserveKeys` na true. Řetězcové klíče jsou vždy zachovány, bez ohledu na tento parametr. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ -Filtr seřadí prvky pole nebo iterátoru a zachová jejich asociační klíče. Při nastaveném [národním prostředí |develop#locale] se řazení řídí jeho pravidly, pokud není specifikována vlastní porovnávací funkce. +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- +Filtr `sort` seřadí prvky pole nebo iterátoru a zachová jejich asociační klíče. Při nastaveném [národním prostředí |develop#locale] se řazení řídí jeho pravidly, pokud není specifikována vlastní porovnávací funkce. ```latte {foreach ($names|sort) as $name} @@ -735,7 +736,7 @@ Filtr seřadí prvky pole nebo iterátoru a zachová jejich asociační klíče. {/foreach} ``` -Řazené pole v opačném pořadí: +Pro řazení pole v opačném pořadí: ```latte {foreach ($names|sort|reverse) as $name} @@ -757,7 +758,7 @@ Filtr `|sort` také umožňuje řadit prvky podle klíčů: {/foreach} ``` -Pokud potřebujete seřadit tabulku podle konkrétního sloupce, můžete použít parametr `by`. Hodnota `'name'` v ukázce určuje, že se bude řadit podle `$item->name` nebo `$item['name']`, v závislosti na tom, zda je `$item` pole nebo objekt: +Pokud potřebujete seřadit tabulku podle konkrétního sloupce, můžete použít parametr `by`. Hodnota `'name'` v ukázce určuje, že se bude řadit podle `$item->name` nebo `$item['name']`, v závislosti na tom, zda je `$item` objekt nebo pole: ```latte {foreach ($items|sort: by: 'name') as $item} @@ -768,7 +769,7 @@ Pokud potřebujete seřadit tabulku podle konkrétního sloupce, můžete použ Můžete také definovat callback funkci, která určí hodnotu, podle které se má řadit: ```latte -{foreach ($items|sort: by: fn($items) => $items->category->name) as $item} +{foreach ($items|sort: by: fn($item) => $item->category->name) as $item} {$item->name} {/foreach} ``` @@ -778,7 +779,7 @@ Stejným způsobem lze využít i parametr `byKey`. spaceless .[filter] ------------------- -Odstraní zbytečné bílé místo (mezery) z výstupu. Můžete také použít alias `strip`. +Filtr `spaceless` odstraní nadbytečné bílé znaky z výstupu. Můžete také použít alias `strip`. ```latte {block |spaceless} @@ -788,7 +789,7 @@ Odstraní zbytečné bílé místo (mezery) z výstupu. Můžete také použít {/block} ``` -Vypíše: +Výstup: ```latte
  • Hello
@@ -797,7 +798,7 @@ Vypíše: stripHtml .[filter] ------------------- -Převádí HTML na čistý text. Tedy odstraní z něj HTML značky a HTML entity převede na text. +Filtr `stripHtml` převádí HTML na čistý text. Odstraní HTML značky a převede HTML entity na jejich textovou reprezentaci. ```latte {='

one < two

'|stripHtml} {* vypíše 'one < two' *} @@ -806,18 +807,18 @@ Převádí HTML na čistý text. Tedy odstraní z něj HTML značky a HTML entit Výsledný čistý text může přirozeně obsahovat znaky, které představují HTML značky, například `'<p>'|stripHtml` se převede na `

`. V žádném případě nevypisujte takto vzniklý text s `|noescape`, protože to může vést ke vzniku bezpečnostní díry. -substr(int offset, int length = null) .[filter] ------------------------------------------------ -Extrahuje část řetězce. Tento filtr byl nahrazen filtrem [#slice]. +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ +Filtr `substr` extrahuje část řetězce. Tento filtr byl nahrazen filtrem [#slice]. ```latte {$string|substr: 1, 2} ``` -translate(string message, ...args) .[filter] --------------------------------------------- -Překládá výrazy do jiných jazyků. Aby byl filtr k dispozici, je potřeba [nastavit překladač|develop#TranslatorExtension]. Můžete také použít [tagy pro překlad|tags#Překlady]. +translate(string $message, ...$args) .[filter] +---------------------------------------------- +Filtr `translate` překládá výrazy do jiných jazyků. Aby byl filtr k dispozici, je potřeba [nastavit překladač|develop#TranslatorExtension]. Můžete také použít [tagy pro překlad|tags#Překlady]. ```latte {='Košík'|translate} @@ -825,9 +826,9 @@ Překládá výrazy do jiných jazyků. Aby byl filtr k dispozici, je potřeba [ ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- -Odstraní prázdné znaky (nebo jiné znaky) od začátku a konce řetězce. +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ +Filtr `trim` odstraní bílé znaky (nebo jiné zadané znaky) od začátku a konce řetězce. ```latte {=' I like Latte. '|trim} {* vypíše 'I like Latte.' *} @@ -835,9 +836,9 @@ Odstraní prázdné znaky (nebo jiné znaky) od začátku a konce řetězce. ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- -Ořízne řetězec na uvedenou maximální délku, přičemž se snaží zachovávat celá slova. Pokud dojde ke zkrácení řetězce, přidá nakonec trojtečku (lze změnit druhým parametrem). +Filtr `truncate` zkrátí řetězec na uvedenou maximální délku, přičemž se snaží zachovávat celá slova. Pokud dojde ke zkrácení řetězce, přidá nakonec trojtečku (lze změnit druhým parametrem). ```latte {var $title = 'Hello, how are you?'} @@ -849,7 +850,7 @@ Ořízne řetězec na uvedenou maximální délku, přičemž se snaží zachov upper .[filter] --------------- -Převede řetězec na velká písmena. Vyžaduje PHP rozšíření `mbstring`. +Filtr `upper` převede řetězec na velká písmena. Vyžaduje PHP rozšíření `mbstring`. ```latte {='latte'|upper} {* vypíše 'LATTE' *} @@ -860,9 +861,9 @@ Viz také [#capitalize], [#firstUpper], [#lower]. webalize .[filter] ------------------ -Upraví UTF‑8 řetězec do tvaru používaného v URL. +Filtr `webalize` upraví UTF-8 řetězec do tvaru používaného v URL. -Převádí se na ASCII. Převede mezery na pomlčky. Odstraní znaky, které nejsou alfanumerické, podtržítka ani pomlčky. Převede na malá písmena. Také odstraní přední a koncové mezery. +Převádí znaky na ASCII ekvivalenty. Převádí mezery na pomlčky. Odstraní znaky, které nejsou alfanumerické, podtržítka ani pomlčky. Převádí text na malá písmena. Také odstraní úvodní a koncové bílé znaky. ```latte {var $s = 'Náš 10. produkt'} diff --git a/latte/cs/functions.texy b/latte/cs/functions.texy index c765b63c79..c4aeeab033 100644 --- a/latte/cs/functions.texy +++ b/latte/cs/functions.texy @@ -2,24 +2,24 @@ Latte funkce ************ .[perex] -V šablonách můžeme kromě běžných PHP funkcí používat i tyto další. +V šablonách Latte můžeme kromě běžných PHP funkcí využívat i další speciální funkce, které rozšiřují možnosti při práci s daty a šablonami. .[table-latte-filters] -| `clamp` | [ohraničí hodnotu do daného rozsahu |#clamp] -| `divisibleBy`| [zkontroluje, zda je proměnná dělitelná číslem |#divisibleBy] -| `even` | [zkontroluje, zda je dané číslo sudé |#even] -| `first` | [vrací první prvek pole nebo znak řetězce |#first] -| `group` | [seskupí data podle různých kritérií |#group] -| `hasBlock` | [zjistí existenci bloku |#hasBlock] -| `last` | [vrací poslední prvek pole nebo znak řetězce |#last] -| `odd` | [zkontroluje, zda je dané číslo liché |#odd] +| `clamp` | [omezí hodnotu do zadaného rozsahu |#clamp] +| `divisibleBy`| [ověří dělitelnost čísla |#divisibleBy] +| `even` | [zkontroluje, zda je číslo sudé |#even] +| `first` | [získá první prvek pole nebo znak řetězce |#first] +| `group` | [seskupí data podle zadaných kritérií |#group] +| `hasBlock` | [ověří existenci bloku |#hasBlock] +| `last` | [získá poslední prvek pole nebo znak řetězce |#last] +| `odd` | [zkontroluje, zda je číslo liché |#odd] | `slice` | [extrahuje část pole nebo řetězce |#slice] Použití ======= -Funkce se používají strejně jaké běžné PHP funkce a lze je použít ve všechn výrazech: +Funkce v Latte se používají stejně jako běžné PHP funkce a lze je využít ve všech výrazech: ```latte

{clamp($num, 1, 100)}

@@ -27,14 +27,14 @@ Funkce se používají strejně jaké běžné PHP funkce a lze je použít ve v {if odd($num)} ... {/if} ``` -[Vlastní funkce|extending-latte#funkce] lze registrovat tímto způsobem: +[Vlastní funkce|extending-latte#funkce] můžete do Latte přidat takto: ```php $latte = new Latte\Engine; $latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len)); ``` -V šabloně se potom volá takto: +V šabloně pak tuto funkci můžete volat následovně: ```latte

{shortify($text)}

@@ -48,7 +48,7 @@ Funkce clamp(int|float $value, int|float $min, int|float $max): int|float .[method] ---------------------------------------------------------------------------- -Ohraničí hodnotu do daného inkluzivního rozsahu min a max. +Funkce `clamp` omezí hodnotu do zadaného inkluzivního rozsahu mezi `$min` a `$max`. ```latte {=clamp($level, 0, 255)} @@ -59,7 +59,7 @@ Viz také [filtr clamp|filters#clamp]. divisibleBy(int $value, int $by): bool .[method] ------------------------------------------------ -Zkontroluje, zda je proměnná dělitelná číslem. +Funkce `divisibleBy` ověří, zda je číslo `$value` dělitelné číslem `$by`. ```latte {if divisibleBy($num, 5)} ... {/if} @@ -68,7 +68,7 @@ Zkontroluje, zda je proměnná dělitelná číslem. even(int $value): bool .[method] -------------------------------- -Zkontroluje, zda je dané číslo sudé. +Funkce `even` zkontroluje, zda je dané číslo sudé. ```latte {if even($num)} ... {/if} @@ -77,7 +77,7 @@ Zkontroluje, zda je dané číslo sudé. first(string|iterable $value): mixed .[method] ---------------------------------------------- -Vrací první prvek pole nebo znak řetězce: +Funkce `first` vrací první prvek pole nebo první znak řetězce: ```latte {=first([1, 2, 3, 4])} {* vypíše 1 *} @@ -89,9 +89,9 @@ Viz také [#last], [filtr first|filters#first]. group(iterable $data, string|int|\Closure $by): array .[method]{data-version:3.0.16} ------------------------------------------------------------------------------------ -Funkce seskupí data podle různých kritérií. +Funkce `group` seskupí data podle zadaných kritérií. -V tomto příkladu se řádky v tabulce seskupují podle sloupce `categoryId`. Výstupem je pole polí, kde klíčem je hodnota ve sloupci `categoryId`. [Přečtěte si podrobný návod|cookbook/grouping]. +V tomto příkladu se řádky v tabulce seskupují podle sloupce `categoryId`. Výsledkem je pole polí, kde klíčem je hodnota ve sloupci `categoryId`. [Podrobný návod najdete zde|cookbook/grouping]. ```latte {foreach group($items, categoryId) as $categoryId => $categoryItems} @@ -108,7 +108,7 @@ Viz také filtr [group|filters#group]. hasBlock(string $name): bool .[method]{data-version:3.0.10} ----------------------------------------------------------- -Zjistí, zda blok uvedeného jména existuje: +Funkce `hasBlock` ověří, zda existuje blok s uvedeným názvem: ```latte {if hasBlock(header)} ... {/if} @@ -119,7 +119,7 @@ Viz také [kontrola existence bloků|template-inheritance#Kontrola existence blo last(string|array $value): mixed .[method] ------------------------------------------ -Vrací poslední prvek pole nebo znak řetězce: +Funkce `last` vrací poslední prvek pole nebo poslední znak řetězce: ```latte {=last([1, 2, 3, 4])} {* vypíše 4 *} @@ -131,26 +131,26 @@ Viz také [#first], [filtr last|filters#last]. odd(int $value): bool .[method] ------------------------------- -Zkontroluje, zda je dané číslo liché. +Funkce `odd` zkontroluje, zda je dané číslo liché. ```latte {if odd($num)} ... {/if} ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- -Extrahuje část pole nebo řetězce. +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- +Funkce `slice` extrahuje část pole nebo řetězce. ```latte {=slice('hello', 1, 2)} {* vypíše 'el' *} {=slice(['a', 'b', 'c'], 1, 2)} {* vypíše ['b', 'c'] *} ``` -Filtr funguje jako funkce PHP `array_slice` pro pole nebo `mb_substr` pro řetězce s fallbackem na funkci `iconv_substr` v režimu UTF‑8. +Tato funkce funguje podobně jako PHP funkce `array_slice` pro pole nebo `mb_substr` pro řetězce (s fallbackem na `iconv_substr` v režimu UTF-8). -Pokud je start kladný, posloupnost začné posunutá o tento počet od začátku pole/řetezce. Pokud je záporný posloupnost začné posunutá o tolik od konce. +- Pokud je `$start` kladný, výsledek začíná od tohoto indexu od začátku pole/řetězce. Pokud je záporný, začíná se od konce. -Pokud je zadaný parametr length a je kladný, posloupnost bude obsahovat tolik prvků. Pokud je do této funkce předán záporný parametr length, posloupnost bude obsahovat všechny prvky původního pole, začínající na pozici start a končicí na pozici menší na length prvků od konce pole. Pokud tento parametr nezadáte, posloupnost bude obsahovat všechny prvky původního pole, začínající pozici start. +- Pokud je `$length` kladný, výsledek bude obsahovat tolik prvků. Pokud je záporný, výsledek bude obsahovat všechny prvky kromě posledních `$length` prvků. Pokud není zadán, výsledek bude obsahovat všechny prvky od `$start` do konce. -Ve výchozím nastavení filtr změní pořadí a resetuje celočíselného klíče pole. Toto chování lze změnit nastavením preserveKeys na true. Řetězcové klíče jsou vždy zachovány, bez ohledu na tento parametr. +- Parametr `$preserveKeys` určuje, zda zachovat původní klíče pole. Ve výchozím nastavení (false) jsou číselné klíče resetovány. Řetězcové klíče jsou vždy zachovány bez ohledu na toto nastavení. diff --git a/latte/cs/recipes.texy b/latte/cs/recipes.texy index 90d74badb3..11389d60c2 100644 --- a/latte/cs/recipes.texy +++ b/latte/cs/recipes.texy @@ -5,19 +5,19 @@ Tipy a triky Editory a IDE ============= -Pište šablony v editoru nebo IDE, který má podporu pro Latte. Bude to mnohem příjemnější. +Efektivní práce s Latte šablonami začíná u správně nastaveného vývojového prostředí. Vhodný editor nebo IDE s podporou Latte vám významně usnadní práci a zvýší produktivitu. -- NetBeans IDE má podporu vestavěnou -- PhpStorm: nainstalujte v `Settings > Plugins > Marketplace` [plugin Latte|https://plugins.jetbrains.com/plugin/7457-latte] -- VS Code: hledejte v marketplace [Nette Latte + Neon|https://marketplace.visualstudio.com/items?itemName=Kasik96.latte] nebo [Nette Latte templates|https://marketplace.visualstudio.com/items?itemName=smuuf.latte-lang] plugin -- Sublime Text 3: v Package Control najděte a nainstalujte balíček `Nette` a zvolte Latte ve `View > Syntax` -- ve starých editorech použijte pro soubory .latte zvýrazňování Smarty +- PhpStorm: v `Settings > Plugins > Marketplace` nainstalujte [plugin Latte|https://plugins.jetbrains.com/plugin/7457-latte] +- VS Code: vyhledejte a nainstalujte [Nette Latte + Neon|https://marketplace.visualstudio.com/items?itemName=Kasik96.latte] nebo [Nette Latte templates|https://marketplace.visualstudio.com/items?itemName=smuuf.latte-lang] plugin +- NetBeans IDE: nativní podpora Latte je součástí instalace +- Sublime Text 3: přes Package Control nainstalujte balíček `Nette` a v `View > Syntax` zvolte Latte +- Pro starší editory: použijte zvýrazňování syntaxe pro Smarty u souborů s příponou .latte -Plugin pro PhpStorm je velmi pokročilý a umí výborně napovídat PHP kód. Aby fungoval optimálně, používejte [typované šablony|type-system]. +Plugin pro PhpStorm vyniká pokročilými funkcemi a nabízí vynikající napovídání PHP kódu. Pro jeho optimální funkčnost doporučujeme používat [typované šablony|type-system]. [* latte-phpstorm-plugin.webp *] -Podporu pro Latte najdete také ve webovém zvýrazňovači kódu [Prism.js|https://prismjs.com/#supported-languages] a editoru [Ace|https://ace.c9.io]. +Podporu Latte najdete také v online zvýrazňovači kódu [Prism.js|https://prismjs.com/#supported-languages] a webovém editoru [Ace|https://ace.c9.io]. Latte uvnitř JavaScriptu nebo CSS @@ -37,9 +37,11 @@ Latte lze velmi pohodlně používat i uvnitř JavaScriptu nebo CSS. Jak se vša ``` -**Varianta 1** +Existuje několik řešení: -Vyhněte se situaci, kdy následuje písmeno hned za `{`, třeba tím, že před něj vložíte mezeru, odřádkování nebo uvozovku: +**Řešení 1: Oddělení závorek** + +Vložte mezeru, odřádkování nebo uvozovku mezi `{` a následující písmeno: ```latte `. Naopak v atributech `style` a `on***` se pomocí HTML entit escapuje. -A samozřejmě uvnitř vnořeného JavaScriptu nebo CSS platí escapovací pravidla těchto jazyků. Takže řetezec v atributu např. `onload` se nejprve escapuje podle pravidel JS a potom podle pravidel HTML atributu. +A samozřejmě uvnitř vnořeného JavaScriptu nebo CSS platí escapovací pravidla těchto jazyků. Řetězec v atributu například `onload` se nejprve escapuje podle pravidel JS a potom podle pravidel HTML atributu. -Uff... Jak vidíte, HTML je velmi komplexní dokument, kde se vrství kontexty, a bez uvědomění si, kde přesně data vypisuji (tj. v jakém kontextu), nelze říct, jak to správně udělat. +Jak vidíte, HTML je velmi komplexní dokument, kde se vrství kontexty. Bez uvědomění si, kde přesně data vypisuji (tj. v jakém kontextu), nelze říct, jak to správně udělat. Chcete příklad? --------------- -Mějme řetězec `Rock'n'Roll`. +Vezměme řetězec `Rock'n'Roll`. -Pokud jej budete vypisovat v HTML textu, zrovna v tomhle případě netřeba dělat žádné záměny, protože řetězec neobsahuje žádný znak se speciálním významem. Jiná situace nastane, pokud jej vypíšete uvnitř HTML atributu uvozeného do jednoduchých uvozovek. V takovém případě je potřeba escapovat uvozovky na HTML entity: +Pokud jej budete vypisovat v HTML textu, v tomto konkrétním případě není třeba provádět žádné záměny, protože řetězec neobsahuje žádný znak se speciálním významem. Jiná situace nastane, pokud jej vypíšete uvnitř HTML atributu ohraničeného jednoduchými uvozovkami. V takovém případě je potřeba escapovat uvozovky na HTML entity: ```html
``` -Tohle bylo jednoduché. Mnohem zajímavější situace nastane při vrstvení kontextů, například pokud řetězec bude součástí JavaScriptu. +To bylo jednoduché. Mnohem zajímavější situace nastane při vrstvení kontextů, například pokud řetězec bude součástí JavaScriptu. -Nejprve jej tedy vypíšeme do samotného JavaScriptu. Tj. obalíme jej do uvozovek a zároveň escapujeme pomocí znaku `\` uvozovky v něm obsažené: +Nejprve jej vypíšeme do samotného JavaScriptu. Obalíme jej do uvozovek a zároveň escapujeme pomocí znaku `\` uvozovky v něm obsažené: ```js 'Rock\'n\'Roll' ``` -Ještě můžeme doplnit volání nějaké funkce, ať kód něco dělá: +Doplňme volání nějaké funkce, ať kód něco dělá: ```js alert('Rock\'n\'Roll'); ``` -Pokud tento kód vložíme do HTML dokumentu pomocí ``: ```html @@ -174,13 +173,13 @@ Pokud bychom jej však chtěli vložit do HTML atributu, musíme ještě escapov
``` -Vnořeným kontextem ale nemusí být jen JS nebo CSS. Běžně jím je také URL. Parametry v URL se escapují tak, že se znaky se speciálním významen převádějí na sekvence začínající `%`. Příklad: +Vnořeným kontextem ale nemusí být jen JS nebo CSS. Běžně jím je také URL. Parametry v URL se escapují tak, že se znaky se speciálním významem převádějí na sekvence začínající `%`. Příklad: ``` https://example.org/?a=Jazz&b=Rock%27n%27Roll ``` -A když tento řetězec vypíšeme v atributu, ještě aplikujeme escapování podle tohoto kontextu a nahradíme `&` za `&`: +A když tento řetězec vypíšeme v atributu, ještě aplikujeme escapování podle tohoto kontextu a nahradíme `&` za `&`: ```html @@ -192,13 +191,13 @@ Pokud jste dočetli až sem, gratulujeme, bylo to vyčerpávající. Teď už m Latte vs naivní systémy ======================= -Ukázali jsem si, jak se správně escapuje v HTML dokumentu a jak zásadní je znalost kontextu, tedy místa, kde data vypisujeme. Jinými slovy, jak funguje kontextově sensitvní escapování. -Ačkoliv jde o nezbytný předpoklad funkční obrany před XSS, **Latte je jediný šablonovací systém pro PHP, který tohle umí.** +Ukázali jsme si, jak se správně escapuje v HTML dokumentu a jak zásadní je znalost kontextu, tedy místa, kde data vypisujeme. Jinými slovy, jak funguje kontextově sensitivní escapování. +Ačkoliv jde o nezbytný předpoklad funkční obrany před XSS, **Latte je jediný šablonovací systém pro PHP, který tohle umí**. Jak je to možné, když všechny systémy dnes tvrdí, že mají automatické escapování? -Automatické escapování bez znalosti kontextu je trošku bullshit, který **vytváří falešný dojem bezpečí**. +Automatické escapování bez znalosti kontextu je poněkud zavádějící a **vytváří falešný dojem bezpečí**. -Šablonovací systémy, jako je Twig, Laravel Blade a další, nevidí v šabloně žádnou HTML strukturu. Nevidí tudíž ani kontexty. Oproti Latte jsou slepé a naivní. Zpracovávají jen vlastní značky, vše ostatní je pro ně nepodstatný tok znaků: +Šablonovací systémy jako Twig, Laravel Blade a další nevidí v šabloně žádnou HTMLstrukturu. Nevidí tudíž ani kontexty. Oproti Latte jsou slepé a naivní. Zpracovávají jen vlastní značky, vše ostatní je pro ně nepodstatný tok znaků:
@@ -230,7 +229,7 @@ Automatické escapování bez znalosti kontextu je trošku bullshit, který **vy
-Naivní systémy jen mechanicky převádějí znaky `< > & ' "` na HTML entity, což je sice ve většině případů užití platný způsob escapování, ale zdaleka ne vždy. Nemohou tak odhalit ani předejít vzniku různých bezpečnostní děr, jak si ukážeme dále. +Naivní systémy pouze mechanicky převádějí znaky `< > & ' "` na HTML entity, což je sice ve většině případů platný způsob escapování, ale zdaleka ne vždy. Nemohou tak odhalit ani předejít vzniku různých bezpečnostních děr, jak si ukážeme dále. Latte šablonu vidí stejně jako vy. Chápe HTML, XML, rozeznává značky, atributy atd. A díky tomu rozlišuje jednotlivé kontexty a podle nich ošetřuje data. Nabízí tak opravdu efektivní ochranu proti kritické zranitelnosti Cross-site Scripting. @@ -270,63 +269,60 @@ Vlevo vidíte šablonu v Latte, vpravo je vygenerovaný HTML kód. Několikrát
-Není to skvělé! Latte dělá kontextově sensitivní escapování automaticky, takže programátor: +Není to skvělé! Latte provádí kontextově sensitivní escapování automaticky, takže programátor: - nemusí přemýšlet ani vědět, jak se kde escapuje - nemůže se splést - nemůže na escapování zapomenout -Tohle dokonce nejsou všechny kontexty, které Latte při vypisování rozlišuje a pro které přizpůsobuje ošetření dat. Další zajimavé případy si projdeme nyní. +Tohle dokonce nejsou všechny kontexty, které Latte při vypisování rozlišuje a pro které přizpůsobuje ošetření dat. Další zajímavé případy si projdeme nyní. Jak hacknout naivní systémy =========================== -Na několika praktických příkladech si ukážeme, jak je rozlišování kontextů důležité a proč naivní šablonovací systémy neposkytují dostatečnou ochranu před XSS, na rozdíl od Latte. -Jako zástupce naivního systému použijeme v ukázkách Twig, ale totéž platí i pro ostatní systémy. +Nyní si na praktických příkladech ukážeme, proč je rozlišování kontextů tak důležité a proč naivní šablonovací systémy neposkytují dostatečnou ochranu před XSS, na rozdíl od Latte. +V ukázkách použijeme Twig jako zástupce naivních systémů, ale podobné principy platí i pro ostatní systémy. -Zranitelnost atributem ----------------------- +Zranitelnost pomocí atributu +---------------------------- -Pokusíme se do stránky injektovat škodlivý kód pomocí HTML atributu, jak jsme si [ukazovali výše|#Jak zranitelnost vzniká]. Mějme šablonu v Twigu vykreslující obrázek: +Pokusme se injektovat škodlivý kód do stránky pomocí HTML atributu. Představme si šablonu v Twigu pro vykreslení obrázku: ```twig .{file:Twig} {{ ``` -Všimněte si, že okolo hodnot atributů nejsou uvozovky. Kodér na ně mohl zapomenout, což se prostě stává. Například v Reactu se kód píše takto, bez uvozovek, a kodér, který střídá jazyky, pak na uvozovky může snadno zapomenout. +Všimněte si chybějících uvozovek kolem hodnot atributů. Takové opomenutí se může snadno stát, zejména když vývojář střídá různé technologie (např. v Reactu se atributy píší bez uvozovek). -Útočník jako popisek obrázku vloží šikovně sestavený řetězec `foo onload=alert('Hacked!')`. Už víme, že Twig nemůže poznat, jestli se proměnná vypisuje v toku HTML textu, uvnitř atributu, HTML komentáře, atd., zkrátka nerozlišuje kontexty. A jen mechanicky převádí znaky `< > & ' "` na HTML entity. -Takže výsledný kód bude vypadat takto: +Útočník by mohl jako popisek obrázku vložit řetězec `foo onload=alert('Hacked!')`. Twig nedokáže rozpoznat kontext, ve kterém se proměnná vypisuje, a pouze mechanicky převede znaky `< > & ' "` na HTML entity. Výsledný kód bude vypadat takto: ```html foo ``` -**A vznikla bezpečností díra!** +**Vznikla bezpečnostní díra!** Do stránky se dostal podvržený atribut `onload`, který prohlížeč spustí ihned po načtení obrázku. -Součástí stránky se stal podvržený atribut `onload` a prohlížeč ihned po stažení obrázku jej spustí. - -Nyní se podíváme, jak si se stejnou šablonou poradí Latte: +Srovnejme to s Latte: ```latte .{file:Latte} {$imageAlt} ``` -Latte vidí šablonu stejně jako vy. Na rozdíl od Twigu chápe HTML a ví, že proměnná se vypisuje jako hodnota atributu, který není v uvozovkách. Proto je doplní. Když útočník vloží stejný popisek, výsledný kód bude vypadat takto: +Latte chápe strukturu HTML a rozpozná, že proměnná se vypisuje jako hodnota atributu bez uvozovek. Proto je automaticky doplní. I když útočník vloží stejný škodlivý řetězec, výsledek bude bezpečný: ```html foo onload=alert('Hacked!') ``` -**Latte úspěšně zabránilo XSS.** +**Latte úspěšně odvrátilo XSS útok.** -Vypsání proměnné v JavaScript ------------------------------ +Bezpečné použití proměnných v JavaScriptu +----------------------------------------- -Díky kontextově sensitivnímu escapování je možné zcela nativně používat PHP proměnné uvnitř JavaScriptu. +Díky kontextově citlivému escapování můžete v Latte bezpečně používat PHP proměnné přímo v JavaScriptu: ```latte

{$movie}

@@ -334,7 +330,7 @@ Díky kontextově sensitivnímu escapování je možné zcela nativně používa ``` -Pokud bude proměnná `$movie` obsahovat řetězec `'Amarcord & 8 1/2'`, vygeneruje se následující výstup. Všimněte si, že uvnitř HTML se použije jiné escapování, než uvnitř JavaScriptu a ještě jiné v atributu `onclick`: +Pokud `$movie` obsahuje řetězec `'Amarcord & 8 1/2'`, Latte vygeneruje následující kód: ```latte

Amarcord & 8 1/2

@@ -342,11 +338,13 @@ Pokud bude proměnná `$movie` obsahovat řetězec `'Amarcord & 8 1/2'`, vygener ``` +Všimněte si, jak Latte použilo různé metody escapování pro HTML text, JavaScript v atributu `onclick` a JavaScript uvnitř tagu ` ``` -To je také důvod, proč se kolem proměnné **nepíší uvozovky**: Latte je u řetězců doplní samo. A pokud byste chtěli řetězcovou proměnnou vložit do jiného řetězce, jednoduše je spojte: +To je také důvod, proč se kolem proměnné **nepíší uvozovky**: Latte je u řetězců doplní samo. Pokud chcete řetězcovou proměnnou vložit do jiného řetězce, jednoduše je spojte: ```latte ``` -Latte lze velmi pohodlně používat i uvnitř JavaScriptu, jen se stačí vynout konstrukcím jako v tomto příkladě, kdy následuje písmeno hned za `{`, viz [Latte uvnitř JavaScriptu nebo CSS|recipes#Latte uvnitř JavaScriptu nebo CSS]. +Latte lze velmi pohodlně používat i uvnitř JavaScriptu, jen se stačí vyhnout konstrukcím jako v tomto příkladě, kdy následuje písmeno hned za `{`, viz [Latte uvnitř JavaScriptu nebo CSS|recipes#Latte uvnitř JavaScriptu nebo CSS]. -Pokud Latte vypnete pomocí `{syntax off}` (tj. značkou, nikoliv n:atributem), bude důsledně ignorovat všechny značky až do `{/syntax}` +Pokud Latte vypnete pomocí `{syntax off}` (tj. značkou, nikoliv n:atributem), bude důsledně ignorovat všechny značky až do `{/syntax}`. {trace} @@ -941,7 +938,7 @@ n:class Díky `n:class` velice snadno vygenerujete HTML atribut `class` přesně podle představ. -Příklad: potřebuji, aby aktivní prvek měl třídu `active`: +Příklad: potřebujeme, aby aktivní prvek měl třídu `active`: ```latte {foreach $items as $item} @@ -971,7 +968,7 @@ A všechny prvky mají mít třídu `list-item`: n:attr ------ -Atribut `n:attr` umí se stejnou elegancí jako má [n:class|#n:class] generovat libovolné HTML atributy. +Atribut `n:attr` umí se stejnou elegancí jako [n:class|#n:class] generovat libovolné HTML atributy. ```latte {foreach $data as $item} diff --git a/latte/cs/template-inheritance.texy b/latte/cs/template-inheritance.texy index ab6e030bdb..de256ad7ca 100644 --- a/latte/cs/template-inheritance.texy +++ b/latte/cs/template-inheritance.texy @@ -2,15 +2,15 @@ Dědičnost a znovupoužitelnost šablon ************************************ .[perex] -Mechanismy opětovného použití a dědičnosti šablon zvýší vaši produktivitu, protože každá šablona obsahuje pouze svůj jedinečný obsah a opakované prvky a struktury se znovupoužijí. Představujeme tři koncepty: [#layoutová dědičnost], [#horizontální znovupoužití] a [#jednotková dědičnost]. +Mechanismy dědičnosti a znovupoužitelnosti šablon v Latte významně zvyšují produktivitu vývojářů. Každá šablona tak může obsahovat pouze svůj jedinečný obsah, zatímco opakující se prvky a struktury se efektivně znovupoužívají. V této kapitole představíme tři klíčové koncepty: [layoutovou dědičnost|#layoutová dědičnost], [#horizontální znovupoužití] a [jednotkovou dědičnost|#jednotková dědičnost]. -Koncept dědičnosti šablon Latte je podobný dědičnosti tříd v PHP. Definujete **nadřazenou šablonu**, od které mohou dědit další **podřízené šablony** a mohou přepsat části nadřazené šablony. Funguje to skvěle, když prvky sdílejí společnou strukturu. Zní to komplikovaně? Nebojte se, je to velmi snadné. +Koncept dědičnosti šablon v Latte je analogický k dědičnosti tříd v PHP. Definujete **nadřazenou šablonu**, od které mohou další **podřízené šablony** dědit a případně přepisovat její části. Tento přístup je zvláště účinný, když různé prvky sdílejí společnou strukturu. Ačkoli to může znít složitě, v praxi jde o velmi intuitivní a snadno použitelný systém. Layoutová dědičnost `{layout}` .{toc:Layoutová dědičnost} ========================================================= -Podívejme se na dědičnost šablony rozložení, tedy layoutu, rovnou příkladem. Toto je nadřazená šablona, kterou budeme nazývat například `layout.latte` a která definuje kostru HTML dokumentu: +Podívejme se na layoutovou dědičnost na konkrétním příkladu. Následující ukázka představuje nadřazenou šablonu, kterou můžeme nazvat například `layout.latte`. Tato šablona definuje základní kostru HTML dokumentu: ```latte @@ -30,36 +30,36 @@ Podívejme se na dědičnost šablony rozložení, tedy layoutu, rovnou příkla ``` -Značky `{block}` definují tři bloky, které mohou podřízené šablony vyplnit. Značka block dělá jen to, že oznámí, že toto místo může podřízená šablona přepsat definováním vlastního bloku se stejným názvem. +Značky `{block}` zde vymezují tři bloky, které mohou podřízené šablony naplnit vlastním obsahem. Blok v tomto kontextu jednoduše označuje místo, které může podřízená šablona přepsat definováním vlastního bloku se stejným názvem. -Podřízená šablona může vypadat takto: +Podřízená šablona pak může vypadat například takto: ```latte {layout 'layout.latte'} -{block title}My amazing blog{/block} +{block title}Můj úžasný blog{/block} {block content} -

Welcome to my awesome homepage.

+

Vítejte na mé skvělé domovské stránce.

{/block} ``` -Klíčem je zde značka `{layout}`. Říká Latte, že tato šablona „rozšiřuje“ další šablonu. Když Latte vykresluje tuto šablonu, nejprve najde nadřazenou šablonu - v tomto případě `layout.latte`. +Klíčovým prvkem je zde značka `{layout}`. Ta Latte sděluje, že tato šablona "rozšiřuje" jinou šablonu. Při vykreslování této šablony Latte nejprve nalezne nadřazenou šablonu - v tomto případě `layout.latte`. -V tomto okamžiku si Latte všimne tří blokových značek v `layout.latte` a nahradí tyto bloky obsahem podřízené šablony. Vzhledem k tomu, že podřízená šablona nedefinovala blok *footer*, použije se místo toho obsah z nadřazené šablony. Obsah ve značce `{block}` v nadřazené šabloně se vždy používá jako záložní. +V tomto okamžiku Latte identifikuje tři blokové značky v `layout.latte` a nahradí tyto bloky obsahem z podřízené šablony. Vzhledem k tomu, že podřízená šablona nedefinovala blok *footer*, použije se pro tento blok obsah z nadřazené šablony. Obsah uvnitř značky `{block}` v nadřazené šabloně vždy slouží jako výchozí, pokud není přepsán. -Výstup může vypadat takto: +Výsledný výstup může vypadat následovně: ```latte - My amazing blog + Můj úžasný blog
-

Welcome to my awesome homepage.

+

Vítejte na mé skvělé domovské stránce.

``` -Druckt: +Gibt aus: ```latte @@ -154,22 +154,22 @@ Druckt:
``` -Siehe auch [group |#group] und [iterateWhile-Tag |tags#iterateWhile]. +Siehe auch [#group] und das [iterateWhile |tags#iterateWhile] Tag. breakLines .[filter] -------------------- -Fügt HTML-Zeilenumbrüche vor allen Zeilenumbrüchen ein. +Fügt vor jedem Zeilenumbruchzeichen ein HTML-Tag `
` ein ```latte {var $s = "Text & with \n newline"} -{$s|breakLines} {* gibt "Text & with
\n newline" *} +{$s|breakLines} {* gibt "Text & with
\n newline" aus *} ``` -bytes(int precision = 2) .[filter] ----------------------------------- -Formatiert die Größe in Bytes in eine für Menschen lesbare Form. Wenn das [Gebietsschema |develop#locale] festgelegt ist, werden die entsprechenden Dezimal- und Tausendertrennzeichen verwendet. +bytes(int $precision=2) .[filter] +--------------------------------- +Formatiert die Größe in Bytes in eine menschenlesbare Form. Wenn [Ländereinstellungen |develop#locale] gesetzt sind, werden die entsprechenden Dezimal- und Tausendertrennzeichen verwendet. ```latte {$size|bytes} 0 B, 1.25 GB, … @@ -177,53 +177,53 @@ Formatiert die Größe in Bytes in eine für Menschen lesbare Form. Wenn das [Ge ``` -ceil(int precision = 0) .[filter] ---------------------------------- -Rundet eine Zahl bis zu einer bestimmten Genauigkeit. +ceil(int $precision=0) .[filter] +-------------------------------- +Rundet eine Zahl auf eine bestimmte Genauigkeit auf. ```latte -{=3.4|ceil} {* gibt 4 *} -{=135.22|ceil:1} {* gibt 135.3 *} -{=135.22|ceil:3} {* gibt 135.22 *} +{=3.4|ceil} {* gibt 4 aus *} +{=135.22|ceil:1} {* gibt 135.3 aus *} +{=135.22|ceil:3} {* gibt 135.22 aus *} ``` -Siehe auch [Stockwerk |#floor], [Runden |#round]. +Siehe auch [#floor], [#round]. capitalize .[filter] -------------------- -Gibt eine Version des Wertes in Großbuchstaben zurück. Die Wörter beginnen mit Großbuchstaben, alle übrigen Zeichen sind Kleinbuchstaben. Erfordert die PHP-Erweiterung `mbstring`. +Wörter beginnen mit Großbuchstaben, alle verbleibenden Zeichen sind klein. Erfordert die PHP-Erweiterung `mbstring`. ```latte -{='i like LATTE'|capitalize} {* gibt 'I Like Latte' *} +{='i like LATTE'|capitalize} {* gibt 'I Like Latte' aus *} ``` -Siehe auch [firstUpper |#firstUpper], [lower |#lower], [upper |#upper]. +Siehe auch [#firstUpper], [#lower], [#upper]. checkUrl .[filter] ------------------ -Erzwingt URL-Sanitization. Sie prüft, ob die Variable eine Web-URL enthält (d. h. HTTP/HTTPS-Protokoll) und verhindert das Schreiben von Links, die ein Sicherheitsrisiko darstellen könnten. +Erzwingt die Behandlung einer URL-Adresse. Überprüft, ob die Variable eine Web-URL enthält (d.h. HTTP/HTTPS-Protokoll) und verhindert die Ausgabe von Links, die ein Sicherheitsrisiko darstellen können. ```latte {var $link = 'javascript:window.close()'} -
checked -unchecked +geprüft +ungeprüft ``` -Druckt: +Gibt aus: ```latte -checked -unchecked +geprüft +ungeprüft ``` -Siehe auch [nocheck |#nocheck]. +Siehe auch [#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- -Gibt einen Wert zurück, der auf den einschließenden Bereich von min und max geklemmt ist. +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- +Begrenzt einen Wert auf den angegebenen inklusiven Bereich von min und max. ```latte {$level|clamp: 0, 255} @@ -232,17 +232,17 @@ Gibt einen Wert zurück, der auf den einschließenden Bereich von min und max ge Existiert auch als [Funktion |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- -Konvertiert den Inhalt in ein Daten-URI-Schema. Es kann verwendet werden, um Bilder in HTML oder CSS einzufügen, ohne dass externe Dateien verlinkt werden müssen. +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- +Konvertiert den Inhalt in das Data URI-Schema. Damit können Bilder ohne die Notwendigkeit externer Dateien in HTML oder CSS eingebettet werden. -Nehmen wir an, ein Bild befindet sich in einer Variablen `$img = Image::fromFile('obrazek.gif')`, dann +Angenommen, wir haben ein Bild in der Variable `$img = Image::fromFile('bild.gif')`, dann ```latte ``` -Druckt zum Beispiel: +Gibt beispielsweise aus: ```latte {$name} ``` -Siehe auch [Abfrage |#query]. +Siehe auch [#query]. -explode(string separator = '') .[filter] ----------------------------------------- -Teilt eine Zeichenkette durch den angegebenen Begrenzer und gibt ein Array von Zeichenketten zurück. Alias für `split`. +explode(string $separator='') .[filter] +--------------------------------------- +Teilt eine Zeichenkette anhand eines Trennzeichens in ein Array. Alias für `split`. ```latte -{='one,two,three'|explode:','} {* liefert ['one', 'two', 'three'] *} +{='one,two,three'|explode:','} {* gibt ['one', 'two', 'three'] zurück *} ``` Wenn das Trennzeichen eine leere Zeichenkette ist (Standardwert), wird die Eingabe in einzelne Zeichen aufgeteilt: ```latte -{='123'|explode} {* liefert ['1', '2', '3'] *} +{='123'|explode} {* gibt ['1', '2', '3'] zurück *} ``` Sie können auch den Alias `split` verwenden: ```latte -{='1,2,3'|split:','} {* liefert ['1', '2', '3'] *} +{='1,2,3'|split:','} {* gibt ['1', '2', '3'] zurück *} ``` -Siehe auch [implode |#implode]. +Siehe auch [#implode]. first .[filter] --------------- -Gibt das erste Element eines Arrays oder ein Zeichen einer Zeichenkette zurück: +Gibt das erste Element eines Arrays oder das erste Zeichen einer Zeichenkette zurück: ```latte -{=[1, 2, 3, 4]|first} {* gibt 1 *} -{='abcd'|first} {* gibt 'a' *} +{=[1, 2, 3, 4]|first} {* gibt 1 aus *} +{='abcd'|first} {* gibt 'a' aus *} ``` -Siehe auch [last |#last], [random |#random]. +Siehe auch [#last], [#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Rundet eine Zahl auf eine bestimmte Genauigkeit ab. ```latte -{=3.5|floor} {* gibt 3 *} -{=135.79|floor:1} {* gibt 135.7 *} -{=135.79|floor:3} {* gibt 135.79 *} +{=3.5|floor} {* gibt 3 aus *} +{=135.79|floor:1} {* gibt 135.7 aus *} +{=135.79|floor:3} {* gibt 135.79 aus *} ``` -Siehe auch [ceil |#ceil], [round |#round]. +Siehe auch [#ceil], [#round]. firstUpper .[filter] -------------------- -Konvertiert den ersten Buchstaben eines Wertes in Großbuchstaben. Erfordert die PHP-Erweiterung `mbstring`. +Konvertiert den ersten Buchstaben in einen Großbuchstaben. Erfordert die PHP-Erweiterung `mbstring`. ```latte -{='the latte'|firstUpper} {* gibt 'The latte' *} +{='the latte'|firstUpper} {* gibt 'The latte' aus *} ``` -Siehe auch [capitalize |#capitalize], [lower |#lower], [upper |#upper]. +Siehe auch [#capitalize], [#lower], [#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- -Der Filter gruppiert die Daten nach verschiedenen Kriterien. +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- +Filter, der Daten nach verschiedenen Kriterien gruppiert. -In diesem Beispiel werden die Zeilen in der Tabelle nach der Spalte `categoryId` gruppiert. Die Ausgabe ist ein Array von Arrays, wobei der Schlüssel der Wert in der Spalte `categoryId` ist. Lesen Sie die [ausführliche Anleitung |cookbook/grouping]. +In diesem Beispiel werden die Tabellenzeilen nach der Spalte `categoryId` gruppiert. Die Ausgabe ist ein Array von Arrays, wobei der Schlüssel der Wert in der Spalte `categoryId` ist. [Lesen Sie die detaillierte Anleitung |cookbook/grouping]. ```latte {foreach ($items|group: categoryId) as $categoryId => $categoryItems} @@ -351,28 +351,28 @@ In diesem Beispiel werden die Zeilen in der Tabelle nach der Spalte `categoryId` {/foreach} ``` -Siehe auch [Batch |#batch], die [Gruppenfunktion |functions#group] und das [iterateWhile-Tag |tags#iterateWhile]. +Siehe auch [#batch], die Funktion [group |functions#group] und das Tag [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ -Gibt eine Zeichenkette zurück, die die Verkettung der Zeichenketten im Array ist. Alias für `join`. +implode(string $glue='') .[filter] +---------------------------------- +Gibt eine Zeichenkette zurück, die eine Verkettung der Elemente einer Sequenz ist. Alias für `join`. ```latte -{=[1, 2, 3]|implode} {* gibt '123' *} -{=[1, 2, 3]|implode:'|'} {* gibt '1|2|3' *} +{=[1, 2, 3]|implode} {* gibt '123' aus *} +{=[1, 2, 3]|implode:'|'} {* gibt '1|2|3' aus *} ``` -Sie können auch einen Alias `join` verwenden: +Sie können auch den Alias `join` verwenden: ```latte -{=[1, 2, 3]|join} {* gibt '123' *} +{=[1, 2, 3]|join} {* gibt '123' aus *} ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- -Rückt einen Text von links um eine bestimmte Anzahl von Tabulatoren oder anderen Zeichen ein, die wir im zweiten optionalen Argument angeben. Leerzeilen werden nicht eingerückt. +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- +Rückt Text von links um eine bestimmte Anzahl von Tabulatoren oder anderen Zeichen ein, die im zweiten Argument angegeben werden können. Leere Zeilen werden nicht eingerückt. ```latte
@@ -382,7 +382,7 @@ Rückt einen Text von links um eine bestimmte Anzahl von Tabulatoren oder andere
``` -Druckt: +Gibt aus: ```latte
@@ -393,24 +393,24 @@ Druckt: last .[filter] -------------- -Gibt das letzte Element eines Arrays oder ein Zeichen einer Zeichenkette zurück: +Gibt das letzte Element eines Arrays oder das letzte Zeichen einer Zeichenkette zurück: ```latte -{=[1, 2, 3, 4]|last} {* gibt 4 *} -{='abcd'|last} {* gibt 'd' *} +{=[1, 2, 3, 4]|last} {* gibt 4 aus *} +{='abcd'|last} {* gibt 'd' aus *} ``` -Siehe auch [first |#first], [random |#random]. +Siehe auch [#first], [#random]. length .[filter] ---------------- Gibt die Länge einer Zeichenkette oder eines Arrays zurück. -- bei Strings wird die Länge in UTF-8 Zeichen zurückgegeben -- für Arrays wird die Anzahl der Elemente zurückgegeben -- bei Objekten, die die Schnittstelle Countable implementieren, wird der Rückgabewert der Funktion count() verwendet -- für Objekte, die die Schnittstelle IteratorAggregate implementieren, wird der Rückgabewert von iterator_count() verwendet. +- für Zeichenketten gibt es die Länge in UTF-8-Zeichen zurück +- für Arrays gibt es die Anzahl der Elemente zurück +- für Objekte, die das Countable-Interface implementieren, verwendet es den Rückgabewert der count()-Methode +- für Objekte, die das IteratorAggregate-Interface implementieren, verwendet es den Rückgabewert der iterator_count()-Funktion ```latte @@ -420,30 +420,30 @@ Gibt die Länge einer Zeichenkette oder eines Arrays zurück. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- -Formatiert Datum und Uhrzeit entsprechend dem [Gebietsschema |develop#locale], um eine konsistente und lokalisierte Anzeige von Zeitdaten in verschiedenen Sprachen und Regionen zu gewährleisten. Der Filter akzeptiert das Datum als UNIX-Zeitstempel, String oder `DateTimeInterface` Objekt. +Formatiert Datum und Uhrzeit gemäß den [Ländereinstellungen |develop#locale], was eine konsistente und lokalisierte Darstellung von Zeitangaben in verschiedenen Sprachen und Regionen gewährleistet. Der Filter akzeptiert ein Datum als UNIX-Timestamp, Zeichenkette oder Objekt vom Typ `DateTimeInterface`. ```latte -{$date|localDate} {* 15. dubna 2024 *} +{$date|localDate} {* 15. April 2024 *} {$date|format: yM} {* 4/2024 *} {$date|localDate: date: medium} {* 15. 4. 2024 *} ``` -Wenn Sie den Filter ohne Parameter verwenden, gibt er das Datum in der Langformatebene aus, wie weiter unten erläutert. +Wenn Sie den Filter ohne Parameter verwenden, wird das Datum auf der Ebene `long` ausgegeben, siehe unten. **a) Verwendung des Formats** -Der Parameter `format` beschreibt, welche Zeitkomponenten angezeigt werden sollen. Er verwendet Buchstabencodes, wobei die Anzahl der Wiederholungen die Breite der Ausgabe beeinflusst: +Der Parameter `format` beschreibt, welche Zeitkomponenten angezeigt werden sollen. Es verwendet Buchstabencodes dafür, deren Wiederholungsanzahl die Breite der Ausgabe beeinflusst: | Jahr | `y` / `yy` / `yyyy` | `2024` / `24` / `2024` | Monat | `M` / `MM` / `MMM` / `MMMM` | `8` / `08` / `Aug` / `August` -| Tag | `d` / `dd` / `E` / `EEEE` | `1` / `01` / `So` / `Sonntag` -| Stunde | `j` / `H` / `h` | bevorzugt / 24 Stunden / 12 Stunden -| Minute | `m` / `mm` | `5` / `05` (2-stellig, wenn mit Sekunden kombiniert) -| Sekunde | `s` / `ss` | `8` / `08` (2 Ziffern, wenn mit Minuten kombiniert) +| Tag | `d` / `dd` / `E` / `EEEE` | `1` / `01` / `So` / `Sonntag` +| Stunde | `j` / `H` / `h` | bevorzugt / 24-Stunden / 12-Stunden +| Minute | `m` / `mm` | `5` / `05` (2 Ziffern in Kombination mit Sekunden) +| Sekunde | `s` / `ss` | `8` / `08` (2 Ziffern in Kombination mit Minuten) -Die Reihenfolge der Codes im Format spielt keine Rolle, da die Reihenfolge der Komponenten entsprechend den Konventionen des jeweiligen Gebietsschemas angezeigt wird. Daher ist das Format ortsunabhängig. Zum Beispiel gibt das Format `yyyyMMMMd` im Gebietsschema `en_US` `April 15, 2024` aus, während es im Gebietsschema `cs_CZ` `15. dubna 2024` ausgibt: +Die Reihenfolge der Codes im Format spielt keine Rolle, da die Reihenfolge der Komponenten gemäß den Konventionen der Ländereinstellungen ausgegeben wird. Das Format ist also unabhängig davon. Zum Beispiel wird das Format `yyyyMMMMd` in der Umgebung `en_US` als `April 15, 2024` ausgegeben, während es in der Umgebung `de_DE` als `15. April 2024` ausgegeben wird: | locale: | de-DE | en_US |--- @@ -456,9 +456,9 @@ Die Reihenfolge der Codes im Format spielt keine Rolle, da die Reihenfolge der K | `format: 'hm'` | 5:54 PM | 5:54 PM -**b) Verwendung voreingestellter Stile** +**b) Verwendung vordefinierter Stile** -Die Parameter `date` und `time` bestimmen den Detaillierungsgrad der Datums- und Zeitanzeige. Sie können aus mehreren Stufen wählen: `full`, `long`, `medium`, `short`. Sie können nur das Datum, nur die Uhrzeit oder beides anzeigen lassen: +Die Parameter `date` und `time` bestimmen, wie detailliert Datum und Uhrzeit ausgegeben werden sollen. Sie können aus mehreren Ebenen wählen: `full`, `long`, `medium`, `short`. Es ist möglich, nur das Datum, nur die Uhrzeit oder beides ausgeben zu lassen: | locale: | de-DE | en_US |--- @@ -473,52 +473,52 @@ Die Parameter `date` und `time` bestimmen den Detaillierungsgrad der Datums- und | `date: medium, time: short` | 23.01.1978, 08:30 | Jan 23, 1978, 8:30 AM | `date: long, time: short` | 23. Januar 1978 um 08:30 | January 23, 1978 at 8:30 AM -Für das Datum können Sie auch das Präfix `relative-` verwenden (z. B. `relative-short`), das für Daten, die kurz vor der Gegenwart liegen, `yesterday`, `today` oder `tomorrow` anzeigt; andernfalls erfolgt die Anzeige auf die übliche Weise. +Für das Datum können Sie außerdem das Präfix `relative-` verwenden (z.B. `relative-short`), das für Daten nahe der Gegenwart `gestern`, `heute` oder `morgen` anzeigt, andernfalls wird es auf die Standardweise ausgegeben. ```latte -{$date|localDate: date: relative-short} {* yesterday *} +{$date|localDate: date: relative-short} {* gestern *} ``` -Siehe auch [Datum |#date]. +Siehe auch [#date]. lower .[filter] --------------- -Konvertiert einen Wert in Kleinbuchstaben. Erfordert die PHP-Erweiterung `mbstring`. +Konvertiert eine Zeichenkette in Kleinbuchstaben. Erfordert die PHP-Erweiterung `mbstring`. ```latte -{='LATTE'|lower} {* gibt 'latte' *} +{='LATTE'|lower} {* gibt 'latte' aus *} ``` -Siehe auch [capitalize |#capitalize], [firstUpper |#firstUpper], [upper |#upper]. +Siehe auch [#capitalize], [#firstUpper], [#upper]. nocheck .[filter] ----------------- -Verhindert die automatische URL-Sanitization. Latte [prüft automatisch |safety-first#Link checking], ob die Variable eine Web-URL enthält (d.h. HTTP/HTTPS-Protokoll) und verhindert das Schreiben von Links, die ein Sicherheitsrisiko darstellen könnten. +Verhindert die automatische Behandlung einer URL-Adresse. Latte [überprüft automatisch |safety-first#Link checking], ob die Variable eine Web-URL enthält (d.h. HTTP/HTTPS-Protokoll) und verhindert die Ausgabe von Links, die ein Sicherheitsrisiko darstellen können. -Wenn der Link ein anderes Schema verwendet, z. B. `javascript:` oder `data:`, und Sie sich des Inhalts sicher sind, können Sie die Prüfung über `|nocheck` deaktivieren. +Wenn der Link ein anderes Schema verwendet, z.B. `javascript:` oder `data:`, und Sie sich seines Inhalts sicher sind, können Sie die Überprüfung mit `|nocheck` deaktivieren. ```latte {var $link = 'javascript:window.close()'} -checked -unchecked +geprüft +ungeprüft ``` -Drucke: +Gibt aus: ```latte -checked -unchecked +geprüft +ungeprüft ``` -Siehe auch [checkUrl |#checkUrl]. +Siehe auch [#checkUrl]. noescape .[filter] ------------------ -Deaktiviert das automatische Escaping. +Deaktiviert automatisches Escaping. ```latte {var $trustedHtmlString = 'hello'} @@ -526,7 +526,7 @@ Escaped: {$trustedHtmlString} Unescaped: {$trustedHtmlString|noescape} ``` -Druckt: +Gibt aus: ```latte Escaped: <b>hello</b> @@ -534,33 +534,33 @@ Unescaped: hello ``` .[warning] -Die missbräuchliche Verwendung des `noescape` Filters kann zu einer XSS-Schwachstelle führen! Verwenden Sie ihn nur, wenn Sie **absolut sicher** sind, was Sie tun und dass die Zeichenfolge, die Sie drucken, aus einer vertrauenswürdigen Quelle stammt. +Falsche Verwendung des `noescape`-Filters kann zu XSS-Schwachstellen führen! Verwenden Sie ihn niemals, wenn Sie nicht **absolut sicher** sind, was Sie tun, und dass die ausgegebene Zeichenkette aus einer vertrauenswürdigen Quelle stammt. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- -Formatiert eine Zahl mit einer bestimmten Anzahl von Dezimalstellen. Wenn das [Gebietsschema |develop#locale] festgelegt ist, werden die entsprechenden Dezimal- und Tausendertrennzeichen verwendet. +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- +Formatiert eine Zahl auf eine bestimmte Anzahl von Dezimalstellen. Wenn [Ländereinstellungen |develop#locale] gesetzt sind, werden die entsprechenden Dezimal- und Tausendertrennzeichen verwendet. ```latte -{1234.20 |number} 1,234 -{1234.20 |number:1} 1,234.2 -{1234.20 |number:2} 1,234.20 -{1234.20 |number:2, ',', ' '} 1 234,20 +{1234.20|number} 1,234 +{1234.20|number:1} 1,234.2 +{1234.20|number:2} 1,234.20 +{1234.20|number:2, ',', ' '} 1 234,20 ``` -number(string format) .[filter] -------------------------------- -Mit dem Parameter `format` können Sie das Aussehen von Zahlen genau nach Ihren Bedürfnissen festlegen. Er erfordert ein festgelegtes [Gebietsschema |develop#locale]. Das Format besteht aus mehreren Sonderzeichen, deren vollständige Beschreibung in der Dokumentation "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns zu finden ist: +number(string $format) .[filter] +-------------------------------- +Der Parameter `format` ermöglicht es Ihnen, das Aussehen von Zahlen genau nach Ihren Bedürfnissen zu definieren. Dafür müssen [Ländereinstellungen |develop#locale] gesetzt sein. Das Format besteht aus mehreren speziellen Zeichen, deren vollständige Beschreibung Sie in der Dokumentation "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns finden: -- obligatorische Ziffer, wird immer angezeigt, auch wenn sie Null ist -- `#` optionale Ziffer, wird nur angezeigt, wenn die Zahl eine Ziffer an dieser Stelle hat -- `@` signifikante Ziffer, hilft bei der Anzeige der Zahl mit einer bestimmten Anzahl signifikanter Ziffern -- `.` markiert die Stelle, an der das Dezimaltrennzeichen stehen soll (Komma oder Punkt, je nach Gebietsschema) -- `,` wird verwendet, um Gruppen von Ziffern zu trennen, normalerweise Tausender +- `0` obligatorische Ziffer, wird immer angezeigt, auch wenn es eine Null ist +- `#` optionale Ziffer, wird nur angezeigt, wenn an dieser Stelle tatsächlich eine Zahl steht +- `@` signifikante Ziffer, hilft, eine Zahl mit einer bestimmten Anzahl gültiger Ziffern anzuzeigen +- `.` kennzeichnet, wo das Dezimalkomma (oder -punkt, je nach Land) sein soll +- `,` dient zur Trennung von Zifferngruppen, meist Tausender - `%` multipliziert die Zahl mit 100 und fügt das Prozentzeichen hinzu -Schauen wir uns einige Beispiele an. Im ersten Beispiel sind zwei Dezimalstellen obligatorisch, im zweiten sind sie optional. Das dritte Beispiel zeigt Auffüllungen mit Nullen auf beiden Seiten, und das vierte Beispiel zeigt nur die vorhandenen Ziffern an: +Schauen wir uns einige Beispiele an. Im ersten Beispiel sind zwei Dezimalstellen obligatorisch, im zweiten optional. Das dritte Beispiel zeigt das Auffüllen mit Nullen links und rechts, das vierte zeigt nur existierende Ziffern: ```latte {1234.5|number: '#,##0.00'} {* 1,234.50 *} @@ -569,7 +569,7 @@ Schauen wir uns einige Beispiele an. Im ersten Beispiel sind zwei Dezimalstellen {1.2 |number: '##.##'} {* 1.2 *} ``` -Signifikante Ziffern legen fest, wie viele Ziffern, unabhängig vom Dezimalpunkt, angezeigt werden sollen, wobei die Zahl gegebenenfalls gerundet wird: +Signifikante Ziffern bestimmen, wie viele Ziffern unabhängig vom Dezimalpunkt angezeigt werden sollen, wobei gerundet wird: ```latte {1234|number: '@@'} {* 1200 *} @@ -579,13 +579,13 @@ Signifikante Ziffern legen fest, wie viele Ziffern, unabhängig vom Dezimalpunkt {0.00123|number: '@@'} {* 0.0012 *} ``` -Eine einfache Möglichkeit, eine Zahl als Prozentsatz anzuzeigen. Die Zahl wird mit 100 multipliziert und das Zeichen `%` wird hinzugefügt: +Ein einfacher Weg, eine Zahl als Prozentsatz anzuzeigen. Die Zahl wird mit 100 multipliziert und das `%`-Zeichen wird hinzugefügt: ```latte {0.1234|number: '#.##%'} {* 12.34% *} ``` -Wir können ein unterschiedliches Format für positive und negative Zahlen definieren, die durch ein `;` Zeichen getrennt sind. Auf diese Weise können z. B. positive Zahlen mit einem `+` -Zeichen angezeigt werden: +Wir können unterschiedliche Formate für positive und negative Zahlen definieren, getrennt durch ein `;`-Zeichen. Auf diese Weise können wir zum Beispiel festlegen, dass positive Zahlen mit einem `+`-Zeichen angezeigt werden sollen: ```latte {42|number: '#.##;(#.##)'} {* 42 *} @@ -594,140 +594,140 @@ Wir können ein unterschiedliches Format für positive und negative Zahlen defin {-42|number: '+#.##;-#.##'} {* -42 *} ``` -Denken Sie daran, dass das tatsächliche Aussehen von Zahlen je nach den Einstellungen des Gebietsschemas variieren kann. In einigen Ländern wird zum Beispiel ein Komma anstelle eines Punktes als Dezimaltrennzeichen verwendet. Dieser Filter berücksichtigt dies automatisch, so dass Sie sich darüber keine Gedanken machen müssen. +Beachten Sie, dass das tatsächliche Aussehen der Zahlen je nach den Ländereinstellungen variieren kann. In einigen Ländern wird beispielsweise ein Komma statt eines Punkts als Dezimaltrennzeichen verwendet. Dieser Filter berücksichtigt dies automatisch, und Sie müssen sich um nichts kümmern. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- -Füllt eine Zeichenkette bis zu einer bestimmten Länge mit einer anderen Zeichenkette von links auf. +Füllt eine Zeichenkette auf eine bestimmte Länge mit einer anderen Zeichenkette von links auf. ```latte -{='hello'|padLeft: 10, '123'} {* gibt '12312hello' *} +{='hello'|padLeft: 10, '123'} {* gibt '12312hello' aus *} ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ -Füllt eine Zeichenfolge auf eine bestimmte Länge mit einer anderen Zeichenfolge von rechts. +Füllt eine Zeichenkette auf eine bestimmte Länge mit einer anderen Zeichenkette von rechts auf. ```latte -{='hello'|padRight: 10, '123'} {* gibt 'hello12312' *} +{='hello'|padRight: 10, '123'} {* gibt 'hello12312' aus *} ``` -query .[filter] ----------------- -Erzeugt dynamisch eine Abfragezeichenfolge in der URL: +query .[filter] +--------------- +Generiert dynamisch einen Query-String in einer URL: ```latte -click -search +klicken +suchen ``` -Druckt: +Gibt aus: ```latte -click -search +klicken +suchen ``` -Tasten mit einem Wert von `null` werden ausgelassen. +Schlüssel mit dem Wert `null` werden weggelassen. -Siehe auch [escapeUrl |#escapeUrl]. +Siehe auch [#escapeUrl]. random .[filter] ---------------- -Gibt ein zufälliges Element eines Arrays oder ein Zeichen einer Zeichenkette zurück: +Gibt ein zufälliges Element eines Arrays oder ein zufälliges Zeichen einer Zeichenkette zurück: ```latte -{=[1, 2, 3, 4]|random} {* example output: 3 *} -{='abcd'|random} {* example output: 'b' *} +{=[1, 2, 3, 4]|random} {* gibt z.B.: 3 aus *} +{='abcd'|random} {* gibt z.B.: 'b' aus *} ``` -Siehe auch [first |#first], [last |#last]. +Siehe auch [#first], [#last]. -repeat(int count) .[filter] ---------------------------- -Wiederholt die Zeichenkette x-mal. +repeat(int $count) .[filter] +---------------------------- +Wiederholt eine Zeichenkette x-mal. ```latte -{='hello'|repeat: 3} {* gibt 'hellohellohello' *} +{='hello'|repeat: 3} {* gibt 'hellohellohello' aus *} ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- -Ersetzt alle Vorkommen der Suchzeichenfolge durch die Ersatzzeichenfolge. +Ersetzt alle Vorkommen der Suchzeichenkette durch die Ersatzzeichenkette. ```latte -{='hello world'|replace: 'world', 'friend'} {* gibt 'hello friend' *} +{='hello world'|replace: 'world', 'friend'} {* gibt 'hello friend' aus *} ``` -Es können mehrere Ersetzungen auf einmal vorgenommen werden: +Es können auch mehrere Ersetzungen auf einmal durchgeführt werden: ```latte -{='hello world'|replace: [h => l, l => h]} {* gibt 'lehho worhd' *} +{='hello world'|replace: [h => l, l => h]} {* gibt 'lehho worhd' aus *} ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- -Ersetzt alle Vorkommen entsprechend dem regulären Ausdruck. +Führt eine Suche und Ersetzung mit regulären Ausdrücken durch. ```latte -{='hello world'|replaceRE: '/l.*/', 'l'} {* gibt 'hel' *} +{='hello world'|replaceRE: '/l.*/', 'l'} {* gibt 'hel' aus *} ``` reverse .[filter] ----------------- -Kehrt eine gegebene Zeichenkette oder ein gegebenes Array um. +Kehrt die gegebene Zeichenkette oder das Array um. ```latte {var $s = 'Nette'} -{$s|reverse} {* gibt 'etteN' *} +{$s|reverse} {* gibt 'etteN' aus *} {var $a = ['N', 'e', 't', 't', 'e']} -{$a|reverse} {* liefert ['e', 't', 't', 'e', 'N'] *} +{$a|reverse} {* gibt ['e', 't', 't', 'e', 'N'] zurück *} ``` -round(int precision = 0) .[filter] ----------------------------------- -Rundet eine Zahl auf eine bestimmte Genauigkeit. +round(int $precision=0) .[filter] +--------------------------------- +Rundet eine Zahl auf die angegebene Genauigkeit. ```latte -{=3.4|round} {* gibt 3 *} -{=3.5|round} {* gibt 4 *} -{=135.79|round:1} {* gibt 135.8 *} -{=135.79|round:3} {* gibt 135.79 *} +{=3.4|round} {* gibt 3 aus *} +{=3.5|round} {* gibt 4 aus *} +{=135.79|round:1} {* gibt 135.8 aus *} +{=135.79|round:3} {* gibt 135.79 aus *} ``` -Siehe auch [ceil |#ceil], [floor |#floor]. +Siehe auch [#ceil], [#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ -Extrahiert einen Ausschnitt aus einem Array oder einer Zeichenkette. +Extrahiert einen Teil eines Arrays oder einer Zeichenkette. ```latte -{='hello'|slice: 1, 2} {* gibt 'el' *} -{=['a', 'b', 'c']|slice: 1, 2} {* gibt ['b', 'c'] *} +{='hello'|slice: 1, 2} {* gibt 'el' aus *} +{=['a', 'b', 'c']|slice: 1, 2} {* gibt ['b', 'c'] aus *} ``` -Der Slice-Filter funktioniert wie die PHP-Funktion `array_slice` für Arrays und `mb_substr` für Strings mit einem Fallback auf `iconv_substr` im UTF-8-Modus. +Der Filter funktioniert wie die PHP-Funktion `array_slice` für Arrays oder `mb_substr` für Zeichenketten mit Fallback auf die Funktion `iconv_substr` im UTF-8-Modus. -Wenn start nicht negativ ist, beginnt die Sequenz an diesem Anfang in der Variablen. Wenn start negativ ist, beginnt die Sequenz so weit vom Ende der Variablen entfernt. +Wenn start positiv ist, beginnt die Sequenz um diese Anzahl vom Anfang des Arrays/der Zeichenkette verschoben. Wenn es negativ ist, beginnt die Sequenz um diese Anzahl vom Ende verschoben. -Wenn length angegeben wird und positiv ist, wird die Sequenz bis zu dieser Anzahl von Elementen enthalten. Wenn die Variable kürzer als die Länge ist, werden nur die verfügbaren Elemente der Variablen angezeigt. Wenn length angegeben wird und negativ ist, endet die Sequenz so viele Elemente vor dem Ende der Variablen. Wird sie weggelassen, enthält die Sequenz alle Elemente vom Offset bis zum Ende der Variablen. +Wenn der Parameter length angegeben und positiv ist, enthält die Sequenz so viele Elemente. Wenn ein negativer length-Parameter an diese Funktion übergeben wird, enthält die Sequenz alle Elemente des ursprünglichen Arrays, beginnend an der Position start und endend an der Position, die um length Elemente vom Ende des Arrays entfernt ist. Wenn Sie diesen Parameter weglassen, enthält die Sequenz alle Elemente des ursprünglichen Arrays, beginnend an der Position start. -Filter ordnet die Schlüssel des Integer-Arrays standardmäßig neu an und setzt sie zurück. Dieses Verhalten kann geändert werden, indem preserveKeys auf true gesetzt wird. String-Schlüssel werden immer beibehalten, unabhängig von diesem Parameter. +Standardmäßig ändert der Filter die Reihenfolge und setzt die ganzzahligen Schlüssel des Arrays zurück. Dieses Verhalten kann geändert werden, indem preserveKeys auf true gesetzt wird. String-Schlüssel werden immer beibehalten, unabhängig von diesem Parameter. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ -Der Filter sortiert Elemente eines Arrays oder Iterators unter Beibehaltung ihrer assoziativen Schlüssel. Wenn ein [Gebietsschema |develop#locale] festgelegt ist, folgt die Sortierung dessen Regeln, es sei denn, eine benutzerdefinierte Vergleichsfunktion ist angegeben. +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- +Der Filter sortiert die Elemente eines Arrays oder Iterators und behält ihre assoziativen Schlüssel bei. Bei gesetzten [Ländereinstellungen |develop#locale] folgt die Sortierung deren Regeln, wenn keine eigene Vergleichsfunktion angegeben ist. ```latte {foreach ($names|sort) as $name} @@ -735,7 +735,7 @@ Der Filter sortiert Elemente eines Arrays oder Iterators unter Beibehaltung ihre {/foreach} ``` -Array in umgekehrter Reihenfolge sortiert. +Sortiertes Array in umgekehrter Reihenfolge: ```latte {foreach ($names|sort|reverse) as $name} @@ -743,13 +743,13 @@ Array in umgekehrter Reihenfolge sortiert. {/foreach} ``` -Sie können eine benutzerdefinierte Vergleichsfunktion für die Sortierung angeben (das Beispiel zeigt, wie Sie die Sortierung von der größten zur kleinsten umkehren können): +Sie können eine eigene Vergleichsfunktion für die Sortierung angeben (das Beispiel zeigt, wie die Sortierung von größter zu kleinster umgekehrt wird): ```latte {var $reverted = ($names|sort: fn($a, $b) => $b <=> $a)} ``` -Mit dem Filter `|sort` können Sie auch Elemente nach Schlüssel sortieren: +Der Filter `|sort` ermöglicht auch die Sortierung von Elementen nach Schlüsseln: ```latte {foreach ($names|sort: byKey: true) as $name} @@ -757,7 +757,7 @@ Mit dem Filter `|sort` können Sie auch Elemente nach Schlüssel sortieren: {/foreach} ``` -Wenn Sie eine Tabelle nach einer bestimmten Spalte sortieren müssen, können Sie den Parameter `by` verwenden. Der Wert `'name'` im Beispiel gibt an, dass die Sortierung nach `$row->name` oder `$row['name']`erfolgt, je nachdem, ob `$row` ein Array oder ein Objekt ist: +Wenn Sie eine Tabelle nach einer bestimmten Spalte sortieren müssen, können Sie den Parameter `by` verwenden. Der Wert `'name'` im Beispiel gibt an, dass nach `$item->name` oder `$item['name']` sortiert wird, je nachdem, ob `$item` ein Array oder ein Objekt ist: ```latte {foreach ($items|sort: by: 'name') as $item} @@ -765,7 +765,7 @@ Wenn Sie eine Tabelle nach einer bestimmten Spalte sortieren müssen, können Si {/foreach} ``` -Sie können auch eine Callback-Funktion definieren, die den Wert bestimmt, nach dem sortiert wird: +Sie können auch eine Callback-Funktion definieren, die den Wert bestimmt, nach dem sortiert werden soll: ```latte {foreach ($items|sort: by: fn($items) => $items->category->name) as $item} @@ -773,12 +773,12 @@ Sie können auch eine Callback-Funktion definieren, die den Wert bestimmt, nach {/foreach} ``` -Der Parameter `byKey` kann auf dieselbe Weise verwendet werden. +Der Parameter `byKey` kann auf die gleiche Weise verwendet werden. -spaceless .[filter] --------------------- -Entfernt unnötige Leerzeichen aus der Ausgabe. Sie können auch den Alias `strip` verwenden. +spaceless .[filter] +------------------- +Entfernt überflüssige Leerzeichen aus der Ausgabe. Sie können auch den Alias `strip` verwenden. ```latte {block |spaceless} @@ -788,7 +788,7 @@ Entfernt unnötige Leerzeichen aus der Ausgabe. Sie können auch den Alias `stri {/block} ``` -Druckt: +Gibt aus: ```latte
  • Hello
@@ -797,77 +797,77 @@ Druckt: stripHtml .[filter] ------------------- -Konvertiert HTML in einfachen Text. Das heißt, es werden HTML-Tags entfernt und HTML-Elemente in Text umgewandelt. +Konvertiert HTML in reinen Text. Das heißt, es entfernt HTML-Tags und konvertiert HTML-Entities in Text. ```latte -{='

one < two

'|stripHtml} {* gibt 'one < two' *} +{='

one < two

'|stripHtml} {* gibt 'one < two' aus *} ``` -Der resultierende reine Text kann natürlich Zeichen enthalten, die HTML-Tags darstellen, zum Beispiel wird `'<p>'|stripHtml` in `

`. Geben Sie den resultierenden Text niemals mit `|noescape` aus, da dies zu einer Sicherheitslücke führen kann. +Der resultierende reine Text kann natürlich Zeichen enthalten, die HTML-Tags darstellen, zum Beispiel wird `'<p>'|stripHtml` zu `

` konvertiert. Geben Sie den so erzeugten Text auf keinen Fall mit `|noescape` aus, da dies zu einer Sicherheitslücke führen kann. -substr(int offset, int length = null) .[filter] ------------------------------------------------ -Extrahiert einen Ausschnitt aus einer Zeichenkette. Dieser Filter wurde durch einen [Slice-Filter |#slice] ersetzt. +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ +Extrahiert einen Teil einer Zeichenkette. Dieser Filter wurde durch den Filter [#slice] ersetzt. ```latte {$string|substr: 1, 2} ``` -translate(string message, ...args) .[filter] --------------------------------------------- -Er übersetzt Ausdrücke in andere Sprachen. Um den Filter verfügbar zu machen, müssen Sie den [Übersetzer ein richten|develop#TranslatorExtension]. Sie können auch die [Tags für die Übersetzung |tags#Translation] verwenden. +translate(string $message, ...$args) .[filter] +---------------------------------------------- +Übersetzt Ausdrücke in andere Sprachen. Damit der Filter verfügbar ist, muss ein [Übersetzer eingerichtet |develop#TranslatorExtension] sein. Sie können auch [Tags für Übersetzungen |tags#Translation] verwenden. ```latte -{='Baskter'|translate} +{='Cart'|translate} {$item|translate} ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- -Entfernen Sie führende und nachgestellte Zeichen, standardmäßig Leerzeichen. +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ +Entfernt Leerzeichen (oder andere Zeichen) vom Anfang und Ende einer Zeichenkette. ```latte -{=' I like Latte. '|trim} {* gibt 'I like Latte.' *} -{=' I like Latte.'|trim: '.'} {* gibt ' I like Latte' *} +{=' I like Latte. '|trim} {* gibt 'I like Latte.' aus *} +{=' I like Latte.'|trim: '.'} {* gibt ' I like Latte' aus *} ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- -Kürzt eine Zeichenkette auf die maximal angegebene Länge, versucht aber, ganze Wörter zu erhalten. Wenn die Zeichenkette abgeschnitten ist, wird am Ende ein Auslassungszeichen hinzugefügt (dies kann durch den zweiten Parameter geändert werden). +Kürzt eine Zeichenkette auf die angegebene maximale Länge, wobei versucht wird, ganze Wörter zu erhalten. Wenn die Zeichenkette gekürzt wird, wird am Ende ein Auslassungszeichen hinzugefügt (kann mit dem zweiten Parameter geändert werden). ```latte {var $title = 'Hello, how are you?'} -{$title|truncate:5} {* Hell… *} -{$title|truncate:17} {* Hello, how are… *} -{$title|truncate:30} {* Hello, how are you? *} +{$title|truncate:5} {* Hell… *} +{$title|truncate:17} {* Hello, how are… *} +{$title|truncate:30} {* Hello, how are you? *} ``` upper .[filter] --------------- -Konvertiert einen Wert in Großbuchstaben. Erfordert die PHP-Erweiterung `mbstring`. +Konvertiert eine Zeichenkette in Großbuchstaben. Erfordert die PHP-Erweiterung `mbstring`. ```latte -{='latte'|upper} {* gibt 'LATTE' *} +{='latte'|upper} {* gibt 'LATTE' aus *} ``` -Siehe auch [capitalize |#capitalize], [firstUpper |#firstUpper], [lower |#lower]. +Siehe auch [#capitalize], [#firstUpper], [#lower]. webalize .[filter] ------------------ -Konvertiert nach ASCII. +Konvertiert eine UTF-8-Zeichenkette in die in URLs verwendete Form. -Konvertiert Leerzeichen in Bindestriche. Entfernt Zeichen, die keine alphanumerischen Zeichen, Unterstriche oder Bindestriche sind. Konvertiert in Kleinbuchstaben. Entfernt auch führende und nachfolgende Leerzeichen. +Es wird in ASCII konvertiert. Konvertiert Leerzeichen in Bindestriche. Entfernt Zeichen, die nicht alphanumerisch, Unterstriche oder Bindestriche sind. Konvertiert in Kleinbuchstaben. Entfernt auch führende und abschließende Leerzeichen. ```latte -{var $s = 'Our 10. product'} -{$s|webalize} {* gibt 'our-10-product' *} +{var $s = 'Unser 10. Produkt'} +{$s|webalize} {* gibt 'unser-10-produkt' aus *} ``` .[caution] -Erfordert das Paket [nette/utils |utils:]. +Erfordert die Bibliothek [nette/utils |utils:]. diff --git a/latte/de/functions.texy b/latte/de/functions.texy index 542fe1f73a..721695b45d 100644 --- a/latte/de/functions.texy +++ b/latte/de/functions.texy @@ -138,8 +138,8 @@ Prüft, ob die angegebene Zahl ungerade ist. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Extrahiert einen Ausschnitt aus einem Array oder einer Zeichenkette. ```latte diff --git a/latte/de/tags.texy b/latte/de/tags.texy index a6e13ee626..0fbefed3f3 100644 --- a/latte/de/tags.texy +++ b/latte/de/tags.texy @@ -2,167 +2,167 @@ Latte Tags ********** .[perex] -Zusammenfassung und Beschreibung aller in Latte integrierten Tags. +Eine Übersicht und Beschreibung aller Latte-Template-System-Tags, die standardmäßig zur Verfügung stehen. .[table-latte-tags language-latte] -|## Drucken -| `{$var}`, `{...}` oder `{=...}` | [druckt eine Variable oder einen Ausdruck mit Escapezeichen |#printing] -| `{$var\|filter}` | [druckt mit Filtern |#filters] -| `{l}` oder `{r}` | druckt `{` or `}` Zeichen +|## Ausgabe +| `{$var}`, `{...}` oder `{=...}` | [gibt eine escaped Variable oder einen Ausdruck aus|#Ausgabe] +| `{$var\|filter}` | [gibt mit Verwendung von Filtern aus|#Filter] +| `{l}` oder `{r}` | gibt das Zeichen `{` oder `}` aus .[table-latte-tags language-latte] |## Bedingungen -| `{if}`... `{elseif}`... `{else}`... `{/if}` | [Bedingung if |#if-elseif-else] -| `{ifset}`... `{elseifset}`... `{/ifset}` | [Bedingung ifset |#ifset-elseifset] -| `{ifchanged}`... `{/ifchanged}` | [Test, ob eine Änderung stattgefunden hat |#ifchanged] -| `{switch}` `{case}` `{default}` `{/switch}` | [Bedingung switch |#switch-case-default] -| `n:else` | [alternative Inhalte für Bedingungen |#n:else] +| `{if}` … `{elseif}` … `{else}` … `{/if}` | [if-Bedingung|#if-elseif-else] +| `{ifset}` … `{elseifset}` … `{/ifset}` | [ifset-Bedingung|#ifset-elseifset] +| `{ifchanged}` … `{/ifchanged}` | [Test, ob eine Änderung aufgetreten ist|#ifchanged] +| `{switch}` `{case}` `{default}` `{/switch}` | [switch-Bedingung|#switch-case-default] +| `n:else` | [alternativer Inhalt für Bedingungen|#n:else] .[table-latte-tags language-latte] |## Schleifen -| `{foreach}`... `{/foreach}` | [foreach |#foreach] -| `{for}`... `{/for}` | [for |#for] -| `{while}`... `{/while}` | [while |#while] -| `{continueIf $cond}` | [weiter zur nächsten Iteration |#continueif-skipif-breakif] -| `{skipIf $cond}` | [überspringt die aktuelle Schleifeniteration |#continueif-skipif-breakif] -| `{breakIf $cond}` | [bricht Schleife ab |#continueif-skipif-breakif] -| `{exitIf $cond}` | [vorzeitiges Beenden |#exitif] -| `{first}`... `{/first}` | [ist dies die erste Iteration? |#first-last-sep] -| `{last}`... `{/last}` | [ist es die letzte Iteration? |#first-last-sep] -| `{sep}`... `{/sep}` | [wird die nächste Iteration folgen? |#first-last-sep] -| `{iterateWhile}`... `{/iterateWhile}` | [strukturiert foreach |#iterateWhile] -| `$iterator` | [Spezielle Variable innerhalb der foreach-Schleife |#$iterator] +| `{foreach}` … `{/foreach}` | [#foreach] +| `{for}` … `{/for}` | [#for] +| `{while}` … `{/while}` | [#while] +| `{continueIf $cond}` | [mit der nächsten Iteration fortfahren|#continueif-skipif-breakif] +| `{skipIf $cond}` | [Iteration überspringen|#continueif-skipif-breakif] +| `{breakIf $cond}` | [Schleife abbrechen|#continueif-skipif-breakif] +| `{exitIf $cond}` | [vorzeitige Beendigung|#exitif] +| `{first}` … `{/first}` | [ist es der erste Durchlauf?|#first-last-sep] +| `{last}` … `{/last}` | [ist es der letzte Durchlauf?|#first-last-sep] +| `{sep}` … `{/sep}` | [wird noch ein Durchlauf folgen?|#first-last-sep] +| `{iterateWhile}` … `{/iterateWhile}` | [strukturiertes foreach|#iterateWhile] +| `$iterator` | [spezielle Variable innerhalb von foreach|#$iterator] .[table-latte-tags language-latte] -|## Einbindung anderer Vorlagen -| `{include 'file.latte'}` | [schließt eine Vorlage aus einer anderen Datei ein |#include] -| `{sandbox 'file.latte'}` | [Einfügen einer Vorlage im Sandbox-Modus |#sandbox] +|## Einbindung weiterer Templates +| `{include 'file.latte'}` | [lädt ein Template aus einer anderen Datei|#include] +| `{sandbox 'file.latte'}` | [lädt ein Template im Sandbox-Modus|#sandbox] .[table-latte-tags language-latte] -|## Blöcke, Layouts, Vererbung von Vorlagen -| `{block}` | [anonymer Block |#block] -| `{block blockname}` | [Blockdefinition |template-inheritance#blocks] -| `{define blockname}` | [Blockdefinition für zukünftige Verwendung |template-inheritance#definitions] -| `{include blockname}` | [druckt Block |template-inheritance#printing-blocks] -| `{include blockname from 'file.latte'}` | [druckt einen Block aus einer Datei |template-inheritance#printing-blocks] -| `{import 'file.latte'}` | [lädt Blöcke aus einer anderen Vorlage |template-inheritance#horizontal-reuse] -| `{layout 'file.latte'}` / `{extends}` | [gibt eine Layout-Datei an |template-inheritance#layout-inheritance] -| `{embed}`... `{/embed}` | [lädt die Vorlage oder den Block und ermöglicht das Überschreiben der Blöcke |template-inheritance#unit-inheritance] -| `{ifset blockname}`... `{/ifset}` | [Bedingung, wenn Block definiert ist |template-inheritance#checking-block-existence] +|## Blöcke, Layouts, Template-Vererbung +| `{block}` | [anonymer Block|#block] +| `{block blockname}` | [definiert einen Block|template-inheritance#blocks] +| `{define blockname}` | [definiert einen Block zur späteren Verwendung|template-inheritance#definitions] +| `{include blockname}` | [Darstellung eines Blocks|template-inheritance#printing-blocks] +| `{include blockname from 'file.latte'}` | [stellt einen Block aus einer Datei dar|template-inheritance#printing-blocks] +| `{import 'file.latte'}` | [lädt Blöcke aus einem Template|template-inheritance#horizontal-reuse] +| `{layout 'file.latte'}` / `{extends}` | [bestimmt die Layout-Datei|template-inheritance#layout-inheritance] +| `{embed}` … `{/embed}` | [lädt ein Template oder einen Block und ermöglicht das Überschreiben von Blöcken|template-inheritance#unit-inheritance] +| `{ifset blockname}` … `{/ifset}` | [Bedingung, ob ein Block existiert|template-inheritance#checking-block-existence] .[table-latte-tags language-latte] |## Ausnahmebehandlung -| `{try}`... `{else}`... `{/try}` | [Abfangen von Ausnahmen |#try] -| `{rollback}` | [verwirft try-Block |#rollback] +| `{try}` … `{else}` … `{/try}` | [Abfangen von Ausnahmen|#try] +| `{rollback}` | [Verwerfen eines try-Blocks|#rollback] .[table-latte-tags language-latte] |## Variablen -| `{var $foo = value}` | [Erstellung von Variablen |#var-default] -| `{default $foo = value}` | [Standardwert, wenn Variable nicht deklariert ist |#var-default] -| `{parameters}` | [deklariert Variablen, gibt einen Standardwert ein |#parameters] -| `{capture}`... `{/capture}` | [erfasst einen Abschnitt in einer Variablen |#capture] +| `{var $foo = value}` | [erstellt eine Variable|#var-default] +| `{default $foo = value}` | [erstellt eine Variable, wenn sie nicht existiert|#var-default] +| `{parameters}` | [deklariert Variablen, Typen und Standardwerte|#parameters] +| `{capture}` … `{/capture}` | [erfasst einen Block in eine Variable|#capture] .[table-latte-tags language-latte] |## Typen -| `{varType}` | [deklariert den Typ einer Variablen |type-system#varType] -| `{varPrint}` | [schlägt Variablentypen vor |type-system#varPrint] -| `{templateType}` | [deklariert Variablentypen mittels Klasse |type-system#templateType] -| `{templatePrint}` | [erzeugt Klasse mit Eigenschaften |type-system#templatePrint] +| `{varType}` | [deklariert den Typ einer Variable|type-system#varType] +| `{varPrint}` | [schlägt Typen für Variablen vor|type-system#varPrint] +| `{templateType}` | [deklariert Variablentypen basierend auf einer Klasse|type-system#templateType] +| `{templatePrint}` | [schlägt eine Klasse mit Variablentypen vor|type-system#templatePrint] .[table-latte-tags language-latte] -|## Übersetzung -| `{_string}` | [druckt übersetzt |#Translation] -| `{translate}`... `{/translate}` | [übersetzt den Inhalt |#Translation] +|## Übersetzungen +| `{_...}` | [gibt eine Übersetzung aus|#übersetzungen] +| `{translate}` … `{/translate}` | [übersetzt den Inhalt|#übersetzungen] .[table-latte-tags language-latte] -|## Andere -| `{contentType}` | [schaltet den Escaping-Modus um und sendet HTTP-Header |#contenttype] -| `{debugbreak}` | [setzt einen Haltepunkt im Code |#debugbreak] -| `{do}` | [wertet einen Ausdruck aus, ohne ihn zu drucken |#do] -| `{dump}` | [gibt Variablen in die Tracy Bar aus |#dump] -| `{php}` | [führt beliebigen PHP-Code aus |#php] -| `{spaceless}`... `{/spaceless}` | [entfernt unnötige Leerzeichen |#spaceless] -| `{syntax}` | [schaltet die Syntax während der Laufzeit um |#syntax] -| `{trace}` | [zeigt Stack-Trace |#trace] +|## Sonstiges +| `{contentType}` | [schaltet das Escaping um und sendet einen HTTP-Header|#contenttype] +| `{debugbreak}` | [platziert einen Breakpoint im Code|#debugbreak] +| `{do}` | [führt Code aus, gibt aber nichts aus|#do] +| `{dump}` | [dumpt Variablen in die Tracy Bar|#dump] +| `{php}` | [führt beliebigen PHP-Code aus|#php] +| `{spaceless}` … `{/spaceless}` | [entfernt überflüssige Leerzeichen|#spaceless] +| `{syntax}` | [Änderung der Syntax zur Laufzeit|#syntax] +| `{trace}` | [zeigt den Stack-Trace an|#trace] .[table-latte-tags language-latte] -|## HTML-Tag-Helfer -| `n:class` | [intelligentes Klassenattribut |#n:class] -| `n:attr` | [intelligente HTML-Attribute |#n:attr] -| `n:tag` | [Dynamischer Name des HTML-Elements |#n:tag] -| `n:ifcontent` | [Leeren HTML-Tag auslassen |#n:ifcontent] +|## Helfer für HTML-Codierer +| `n:class` | [dynamische Schreibweise des HTML-Attributs class|#n:class] +| `n:attr` | [dynamische Schreibweise beliebiger HTML-Attribute|#n:attr] +| `n:tag` | [dynamische Schreibweise des HTML-Element-Namens|#n:tag] +| `n:ifcontent` | [lässt einen leeren HTML-Tag aus|#n:ifcontent] .[table-latte-tags language-latte] -|## Nur in Nette Framework verfügbar -| `n:href` | [Link in `` HTML-Elementen |application:creating-links#In the Presenter Template] -| `{link}` | [gibt einen Link aus |application:creating-links#In the Presenter Template] -| `{plink}` | [druckt einen Link zu einem Presenter |application:creating-links#In the Presenter Template] -| `{control}` | [druckt eine Komponente |application:components#Rendering] -| `{snippet}`... `{/snippet}` | [ein Template-Snippet, das per AJAX gesendet werden kann |application:ajax#snippets-in-latte] -| `{snippetArea}` | [Schnipsel Umschlag |application:ajax#snippet-areas] -| `{cache}`... `{/cache}` | [zwischenspeichert einen Vorlagenabschnitt |caching:#caching-in-latte] +|## Nur im Nette Framework verfügbar +| `n:href` | [Link, der in HTML-Elementen `` verwendet wird|application:creating-links#In the Presenter Template] +| `{link}` | [gibt einen Link aus|application:creating-links#In the Presenter Template] +| `{plink}` | [gibt einen Link zu einem Presenter aus|application:creating-links#In the Presenter Template] +| `{control}` | [rendert eine Komponente|application:components#Rendering] +| `{snippet}` … `{/snippet}` | [ein Snippet, das per AJAX gesendet werden kann|application:ajax#snippets-in-latte] +| `{snippetArea}` | [Wrapper für Snippets|application:ajax#snippet-areas] +| `{cache}` … `{/cache}` | [cached einen Teil des Templates|caching:#caching-in-latte] .[table-latte-tags language-latte] |## Nur mit Nette Forms verfügbar -| `{form}`... `{/form}` | [druckt ein Formularelement |forms:rendering#form] -| `{label}`... `{/label}` | [druckt eine Formulareingabebezeichnung |forms:rendering#label-input] -| `{input}` | [druckt ein Formulareingabeelement |forms:rendering#label-input] -| `{inputError}` | [gibt eine Fehlermeldung für ein Formulareingabeelement aus |forms:rendering#inputError] -| `n:name` | [aktiviert ein HTML-Eingabeelement |forms:rendering#n:name] -| `{formContainer}`... `{/formContainer}` | [Darstellung des Formular-Containers |forms:rendering#special-cases] +| `{form}` … `{/form}` | [rendert Formular-Tags|forms:rendering#form] +| `{label}` … `{/label}` | [rendert ein Label für ein Formularelement|forms:rendering#label-input] +| `{input}` | [rendert ein Formularelement|forms:rendering#label-input] +| `{inputError}` | [gibt eine Fehlermeldung für ein Formularelement aus|forms:rendering#inputError] +| `n:name` | [aktiviert ein Formularelement|forms:rendering#n:name] +| `{formContainer}` … `{/formContainer}` | [Zeichnen eines Formular-Containers|forms:rendering#special-cases] -Drucken .[#toc-printing] +Ausgabe .[#toc-printing] ======================== `{$var}` `{...}` `{=...}` ------------------------- -Latte verwendet das Tag `{=...}`, um einen beliebigen Ausdruck in der Ausgabe auszugeben. Wenn der Ausdruck mit einer Variablen oder einem Funktionsaufruf beginnt, ist es nicht nötig, ein Gleichheitszeichen zu schreiben. Das bedeutet in der Praxis, dass es fast nie geschrieben werden muss: +In Latte wird das Tag `{=...}` verwendet, um einen beliebigen Ausdruck auszugeben. Latte legt Wert auf Ihren Komfort, daher ist es nicht nötig, das Gleichheitszeichen zu schreiben, wenn der Ausdruck mit einer Variable oder einem Funktionsaufruf beginnt. Das bedeutet in der Praxis, dass es fast nie notwendig ist, es zu schreiben: ```latte Name: {$name} {$surname}
-Age: {date('Y') - $birth}
+Alter: {date('Y') - $birth}
``` -Sie können alles, was Sie aus PHP kennen, als Ausdruck schreiben. Sie müssen nur keine neue Sprache lernen. Zum Beispiel: +Als Ausdruck können Sie alles schreiben, was Sie aus PHP kennen. Sie müssen einfach keine neue Sprache lernen. Zum Beispiel: ```latte {='0' . ($num ?? $num * 3) . ', ' . PHP_VERSION} ``` -Bitte suchen Sie nicht nach einer Bedeutung in dem vorherigen Beispiel, aber wenn Sie eine finden, schreiben Sie uns :-) +Bitte suchen Sie in dem vorherigen Beispiel keinen Sinn, aber wenn Sie einen finden sollten, schreiben Sie uns :-) -Ausweichende Ausgabe .[#toc-escaping-output] --------------------------------------------- +Ausgabe escapen .[#toc-escaping-output] +--------------------------------------- -Was ist die wichtigste Aufgabe eines Template-Systems? Sicherheitslücken zu vermeiden. Und genau das tut Latte, wenn Sie etwas in die Ausgabe drucken. Es entschlüsselt automatisch alles: +Was ist die wichtigste Aufgabe eines Template-Systems? Sicherheitslücken zu verhindern. Und genau das macht Latte immer, wenn Sie etwas ausgeben. Es escaped es automatisch: ```latte -

{='one < two'}

{* prints: '

one < two

' *} +

{='one < two'}

{* gibt aus: '

one < two

' *} ``` -Um genau zu sein, verwendet Latte kontextabhängiges Escaping, eine so wichtige und einzigartige Funktion dass wir ihr [ein eigenes Kapitel |safety-first#context-aware-escaping] gewidmet haben. +Um genau zu sein, verwendet Latte kontextsensitives Escaping, was so wichtig und einzigartig ist, dass wir ihm [ein eigenes Kapitel|safety-first#context-aware-escaping] gewidmet haben. -Und wenn Sie HTML-codierte Inhalte aus einer vertrauenswürdigen Quelle drucken? Dann können Sie das Escaping einfach abschalten: +Und was ist, wenn Sie HTML-codierten Inhalt aus einer vertrauenswürdigen Quelle ausgeben? Dann kann das Escaping einfach deaktiviert werden: ```latte {$trustedHtmlString|noescape} ``` .[warning] -Der Missbrauch des `noescape`-Filters kann zu einer XSS-Schwachstelle führen! Verwenden Sie ihn nur, wenn Sie **absolut sicher** sind, was Sie tun und dass die Zeichenfolge, die Sie ausgeben, aus einer vertrauenswürdigen Quelle stammt. +Eine falsche Verwendung des `noescape`-Filters kann zu einer XSS-Schwachstelle führen! Verwenden Sie ihn niemals, wenn Sie sich nicht **absolut sicher** sind, was Sie tun, und dass die ausgegebene Zeichenkette aus einer vertrauenswürdigen Quelle stammt. -Drucken in JavaScript .[#toc-printing-in-javascript] +Ausgabe in JavaScript .[#toc-printing-in-javascript] ---------------------------------------------------- -Dank der kontextsensitiven Escape-Funktion ist es wunderbar einfach, Variablen innerhalb von JavaScript zu drucken, und Latte wird sie korrekt escapen. +Dank des kontextsensitiven Escapings ist es wunderbar einfach, Variablen innerhalb von JavaScript auszugeben, und Latte kümmert sich um das korrekte Escaping. -Die Variable muss keine Zeichenkette sein, es wird jeder Datentyp unterstützt, der dann als JSON kodiert wird: +Die Variable muss nicht unbedingt ein String sein, es wird jeder Datentyp unterstützt, der dann als JSON kodiert wird: ```latte {var $foo = ['hello', true, 1]} @@ -179,7 +179,7 @@ Erzeugt: ``` -Dies ist auch der Grund, warum **Variablen nicht in Anführungszeichen** gesetzt werden sollten: Latte fügt sie um Strings herum ein. Und wenn Sie eine String-Variable in einen anderen String einfügen wollen, verketten Sie sie einfach: +Das ist auch der Grund, warum **keine Anführungszeichen** um die Variable geschrieben werden: Latte fügt sie bei Strings selbst hinzu. Und wenn Sie eine String-Variable in einen anderen String einfügen möchten, verbinden Sie sie einfach: ```latte ``` @@ -195,13 +195,13 @@ Dies ist auch der Grund, warum **Variablen nicht in Anführungszeichen** gesetzt Filter .[#toc-filters] ---------------------- -Der gedruckte Ausdruck kann [durch Filter |syntax#filters] verändert werden. In diesem Beispiel wird die Zeichenkette beispielsweise in Großbuchstaben umgewandelt und auf maximal 30 Zeichen gekürzt: +Der ausgegebene Ausdruck kann durch einen [Filter|syntax#filters] modifiziert werden. So können wir zum Beispiel eine Zeichenkette in Großbuchstaben umwandeln und auf maximal 30 Zeichen kürzen: ```latte {$string|upper|truncate:30} ``` -Sie können auch Filter auf Teile eines Ausdrucks anwenden, wie folgt: +Filter können auch auf Teile eines Ausdrucks auf folgende Weise angewendet werden: ```latte {$left . ($middle|upper) . $right} @@ -215,60 +215,60 @@ Bedingungen .[#toc-conditions] `{if}` `{elseif}` `{else}` -------------------------- -Bedingungen verhalten sich genauso wie die entsprechenden PHP-Ausdrücke. Sie können die gleichen Ausdrücke verwenden, die Sie aus PHP kennen, Sie müssen keine neue Sprache lernen. +Bedingungen verhalten sich genauso wie ihre Pendants in PHP. Sie können in ihnen die gleichen Ausdrücke verwenden, die Sie aus PHP kennen, Sie müssen keine neue Sprache lernen. ```latte {if $product->inStock > Stock::Minimum} - In stock + Auf Lager {elseif $product->isOnWay()} - On the way + Unterwegs {else} - Not available + Nicht verfügbar {/if} ``` -Wie jedes Paar-Tag kann ein Paar von `{if} ... {/ if}` zum Beispiel als [n:attribute |syntax#n:attributes] geschrieben werden: +Wie jedes Paar-Tag kann auch das Paar `{if} ... {/if}` in Form eines [n:Attributs|syntax#n:attributes] geschrieben werden, zum Beispiel: ```latte -

In stock {$count} items

+

{$count} Artikel auf Lager

``` -Wussten Sie, dass Sie das Präfix `tag-` zu n:Attributen hinzufügen können? Dann wirkt sich die Bedingung nur auf die HTML-Tags aus und der Inhalt zwischen ihnen wird immer gedruckt: +Wussten Sie, dass Sie n:Attribute mit dem Präfix `tag-` versehen können? Dann bezieht sich die Bedingung nur auf die Ausgabe der HTML-Tags, und der Inhalt dazwischen wird immer ausgegeben: ```latte
Hello -{* prints 'Hello' when $clickable is falsey *} -{* prints 'Hello' when $clickable is truthy *} +{* gibt 'Hello' aus, wenn $clickable falsch ist *} +{* gibt 'Hello' aus, wenn $clickable wahr ist *} ``` -Schön. +Göttlich. `n:else` .{data-version:3.0.11} ------------------------------- -Wenn Sie die Bedingung `{if} ... {/if}` in Form eines [n:-Attributs |syntax#n:attributes] schreiben, haben Sie die Möglichkeit, mit `n:else` eine alternative Verzweigung anzugeben: +Wenn Sie die Bedingung `{if} ... {/if}` in Form eines [n:Attributs|syntax#n:attributes] schreiben, haben Sie die Möglichkeit, eine alternative Verzweigung mit `n:else` anzugeben: ```latte -In stock {$count} items +{$count} Artikel auf Lager -not available +nicht verfügbar ``` -Das Attribut `n:else` kann auch in Verbindung mit [`n:ifset` |#ifset-elseifset], [`n:foreach` |#foreach], [`n:try` |#try], [`n:ifcontent` |#n:ifcontent], und [`n:ifchanged` |#ifchanged]. +Das Attribut `n:else` kann auch in Kombination mit [`n:ifset` |#ifset-elseifset], [`n:foreach` |#foreach], [`n:try` |#try], [`n:ifcontent` |#n:ifcontent] und [`n:ifchanged` |#ifchanged] verwendet werden. `{/if $cond}` ------------- -Sie werden vielleicht überrascht sein, dass der Ausdruck in der Bedingung `{if}` auch im End-Tag angegeben werden kann. Dies ist in Situationen nützlich, in denen wir den Wert der Bedingung noch nicht kennen, wenn das Tag geöffnet wird. Nennen wir es eine aufgeschobene Entscheidung. +Es mag Sie überraschen, dass der Ausdruck in der Bedingung `{if}` auch im schließenden Tag angegeben werden kann. Dies ist nützlich in Situationen, in denen wir beim Öffnen der Bedingung ihren Wert noch nicht kennen. Nennen wir es eine verzögerte Entscheidung. -Wir beginnen z. B. mit der Auflistung einer Tabelle mit Datensätzen aus der Datenbank und stellen erst nach Fertigstellung des Berichts fest, dass kein Datensatz in der Datenbank vorhanden war. Also setzen wir die Bedingung in das End-Tag `{/if}`, und wenn es keinen Datensatz gibt, wird nichts davon gedruckt: +Zum Beispiel beginnen wir mit der Ausgabe einer Tabelle mit Datensätzen aus der Datenbank und erst nach Abschluss der Ausgabe stellen wir fest, dass kein Datensatz in der Datenbank vorhanden war. Also setzen wir eine Bedingung in das schließende `{/if}`-Tag, und wenn kein Datensatz vorhanden ist, wird nichts davon ausgegeben: ```latte {if} -

Printing rows from the database

+

Ausgabe von Zeilen aus der Datenbank

{foreach $resultSet as $row} @@ -278,9 +278,9 @@ Wir beginnen z. B. mit der Auflistung einer Tabelle mit Datensätzen aus der Dat {/if isset($row)} ``` -Praktisch, nicht wahr? +Clever, nicht wahr? -Sie können auch `{else}` in der aufgeschobenen Bedingung verwenden, aber nicht `{elseif}`. +In einer verzögerten Bedingung kann auch `{else}` verwendet werden, aber nicht `{elseif}`. `{ifset}` `{elseifset}` @@ -289,7 +289,7 @@ Sie können auch `{else}` in der aufgeschobenen Bedingung verwenden, aber nicht .[note] Siehe auch [`{ifset block}` |template-inheritance#checking-block-existence] -Verwenden Sie die `{ifset $var}` Bedingung, um festzustellen, ob eine Variable (oder mehrere Variablen) existiert und einen Nicht-Null-Wert hat. Es ist eigentlich das Gleiche wie `if (isset($var))` in PHP. Wie jedes Paar-Tag kann es in der Form von [n:attribute |syntax#n:attributes] geschrieben werden, also zeigen wir es in einem Beispiel: +Mit der Bedingung `{ifset $var}` können wir überprüfen, ob eine Variable (oder mehrere Variablen) existiert und einen nicht-null-Wert hat. Es ist im Grunde dasselbe wie `if (isset($var))` in PHP. Wie jedes Paar-Tag kann es auch in Form eines [n:Attributs|syntax#n:attributes] geschrieben werden, also zeigen wir es als Beispiel: ```latte @@ -299,9 +299,9 @@ Verwenden Sie die `{ifset $var}` Bedingung, um festzustellen, ob eine Variable ( `{ifchanged}` ------------- -`{ifchanged}` prüft, ob sich der Wert einer Variablen seit der letzten Iteration in der Schleife (foreach, for oder while) geändert hat. +`{ifchanged}` überprüft, ob sich der Wert einer Variable seit der letzten Iteration in einer Schleife (foreach, for oder while) geändert hat. -Wenn wir eine oder mehrere Variablen im Tag angeben, wird geprüft, ob sich eine von ihnen geändert hat, und der Inhalt wird entsprechend ausgegeben. Im folgenden Beispiel wird beispielsweise bei der Auflistung von Namen jedes Mal der erste Buchstabe eines Namens als Überschrift ausgegeben, wenn er sich ändert: +Wenn wir eine oder mehrere Variablen im Tag angeben, wird überprüft, ob sich eine von ihnen geändert hat, und dementsprechend wird der Inhalt ausgegeben. Das folgende Beispiel gibt den ersten Buchstaben des Namens als Überschrift aus, jedes Mal wenn er sich bei der Ausgabe der Namen ändert: ```latte {foreach ($names|sort) as $name} @@ -311,7 +311,7 @@ Wenn wir eine oder mehrere Variablen im Tag angeben, wird geprüft, ob sich eine {/foreach} ``` -Wenn jedoch kein Argument angegeben wird, wird der gerenderte Inhalt selbst mit seinem vorherigen Zustand verglichen. Das bedeutet, dass wir im vorherigen Beispiel das Argument im Tag getrost weglassen können. Und natürlich können wir auch [n:attribute |syntax#n:attributes] verwenden: +Wenn wir jedoch kein Argument angeben, wird der gerenderte Inhalt im Vergleich zu seinem vorherigen Zustand überprüft. Das bedeutet, dass wir im vorherigen Beispiel das Argument im Tag weglassen können. Und natürlich können wir auch ein [n:Attribut|syntax#n:attributes] verwenden: ```latte {foreach ($names|sort) as $name} @@ -321,35 +321,35 @@ Wenn jedoch kein Argument angegeben wird, wird der gerenderte Inhalt selbst mit {/foreach} ``` -Sie können auch eine `{else}` Klausel innerhalb der `{ifchanged}` einfügen. +Innerhalb von `{ifchanged}` kann auch eine `{else}`-Klausel verwendet werden. `{switch}` `{case}` `{default}` ------------------------------- -Vergleicht den Wert mit mehreren Optionen. Dies ist ähnlich wie die `switch` Struktur, die Sie aus PHP kennen. Latte verbessert sie jedoch: +Vergleicht einen Wert mit mehreren Möglichkeiten. Es ist ähnlich wie die bedingte Anweisung `switch`, die Sie aus PHP kennen. Latte verbessert sie jedoch: -- verwendet einen strengen Vergleich (`===`) -- braucht kein `break` +- es verwendet einen strikten Vergleich (`===`) +- es benötigt kein `break` -Es ist also das exakte Äquivalent der `match` Struktur, die PHP 8.0 mitbringt. +Es ist also das genaue Äquivalent zur `match`-Struktur, die mit PHP 8.0 eingeführt wurde. ```latte {switch $transport} {case train} - By train + Mit dem Zug {case plane} - By plane + Mit dem Flugzeug {default} - Differently + Anderweitig {/switch} ``` -Die Klausel `{case}` kann mehrere durch Kommas getrennte Werte enthalten: +Die `{case}`-Klausel kann mehrere durch Kommas getrennte Werte enthalten: ```latte {switch $status} -{case $status::New}new item -{case $status::Sold, $status::Unknown}not available +{case $status::New}neuer Artikel +{case $status::Sold, $status::Unknown}nicht verfügbar {/switch} ``` @@ -357,13 +357,13 @@ Die Klausel `{case}` kann mehrere durch Kommas getrennte Werte enthalten: Schleifen .[#toc-loops] ======================= -In Latte stehen Ihnen alle Schleifen, die Sie aus PHP kennen, zur Verfügung: foreach, for und while. +In Latte finden Sie alle Schleifen, die Sie aus PHP kennen: foreach, for und while. `{foreach}` ----------- -Sie schreiben den Zyklus genau so wie in PHP: +Wir schreiben die Schleife genauso wie in PHP: ```latte {foreach $langs as $code => $lang} @@ -371,11 +371,11 @@ Sie schreiben den Zyklus genau so wie in PHP: {/foreach} ``` -Darüber hinaus hat er einige praktische Verbesserungen, über die wir jetzt sprechen werden. +Zusätzlich hat sie einige nützliche Funktionen, über die wir jetzt sprechen werden. -So stellt Latte zum Beispiel sicher, dass erstellte Variablen nicht versehentlich gleichnamige globale Variablen überschreiben. Das hilft Ihnen, wenn Sie davon ausgehen, dass `$lang` die aktuelle Sprache der Seite ist, und Sie nicht merken, dass `foreach $langs as $lang` diese Variable überschrieben hat. +Latte überprüft zum Beispiel, ob erstellte Variablen versehentlich globale Variablen mit demselben Namen überschreiben. Das rettet Situationen, in denen Sie davon ausgehen, dass `$lang` die aktuelle Sprache der Seite ist, und nicht bemerken, dass `foreach $langs as $lang` diese Variable überschrieben hat. -Die foreach-Schleife kann auch sehr elegant und sparsam mit [n:attribute |syntax#n:attributes] geschrieben werden: +Die foreach-Schleife kann auch sehr elegant und kompakt als [n:Attribut|syntax#n:attributes] geschrieben werden: ```latte
    @@ -383,7 +383,7 @@ Die foreach-Schleife kann auch sehr elegant und sparsam mit [n:attribute |syntax
``` -Wussten Sie, dass Sie n:attributes das Präfix `inner-` voranstellen können? Dann wird in der Schleife nur noch der innere Teil des Elements wiederholt: +Wussten Sie, dass Sie n:Attribute mit dem Präfix `inner-` versehen können? Dann wird nur der Inhalt des Elements in der Schleife wiederholt: ```latte
@@ -392,7 +392,7 @@ Wussten Sie, dass Sie n:attributes das Präfix `inner-` voranstellen können? Da
``` -Es wird also etwas gedruckt wie: +Dies wird also etwas wie folgendes ausgeben: ```latte
@@ -407,14 +407,14 @@ Es wird also etwas gedruckt wie: `{else}` .{toc: foreach-else} ----------------------------- -Die Schleife `foreach` kann eine optionale Klausel `{else}` enthalten, deren Text angezeigt wird, wenn das angegebene Feld leer ist: +Innerhalb einer `foreach`-Schleife kann eine `{else}`-Klausel angegeben werden, deren Inhalt angezeigt wird, wenn die Schleife leer ist: ```latte
    {foreach $people as $person}
  • {$person->name}
  • {else} -
  • Sorry, no users in this list
  • +
  • Leider sind in dieser Liste keine Benutzer
  • {/foreach}
``` @@ -423,17 +423,17 @@ Die Schleife `foreach` kann eine optionale Klausel `{else}` enthalten, deren Tex `$iterator` ----------- -Innerhalb der Schleife `foreach` wird die Variable `$iterator` initialisiert. Sie enthält wichtige Informationen über die aktuelle Schleife. +Innerhalb einer `foreach`-Schleife erstellt Latte eine Variable `$iterator`, mit der wir nützliche Informationen über die laufende Schleife abrufen können: -- `$iterator->first` - ist dies die erste Iteration? -- `$iterator->last` - ist dies die letzte Iteration? -- `$iterator->counter` - Iterationszähler, beginnt bei 1 -- `$iterator->counter0` - Iterationszähler, beginnt bei 0 -- `$iterator->odd` - Ist diese Iteration ungerade? -- `$iterator->even` - ist diese Iteration gerade? -- `$iterator->parent` - der Iterator, der den aktuellen Iterator umgibt -- `$iterator->nextValue` - das nächste Element in der Schleife -- `$iterator->nextKey` - der Schlüssel des nächsten Elements in der Schleife +- `$iterator->first` - ist dies der erste Durchlauf? +- `$iterator->last` - ist dies der letzte Durchlauf? +- `$iterator->counter` - der wievielte Durchlauf ist es, gezählt ab eins? +- `$iterator->counter0` - der wievielte Durchlauf ist es, gezählt ab null? +- `$iterator->odd` - ist dies ein ungerader Durchlauf? +- `$iterator->even` - ist dies ein gerader Durchlauf? +- `$iterator->parent` - der Iterator, der den aktuellen umgibt +- `$iterator->nextValue` - der nächste Eintrag in der Schleife +- `$iterator->nextKey` - der Schlüssel des nächsten Eintrags in der Schleife ```latte @@ -449,20 +449,20 @@ Innerhalb der Schleife `foreach` wird die Variable `$iterator` initialisiert. Si {/foreach} ``` -Die Latte ist schlau und `$iterator->last` funktioniert nicht nur für Arrays, sondern auch, wenn die Schleife über einen allgemeinen Iterator läuft, bei dem die Anzahl der Elemente nicht im Voraus bekannt ist. +Latte ist schlau und `$iterator->last` funktioniert nicht nur bei Arrays, sondern auch wenn die Schleife über einen allgemeinen Iterator läuft, bei dem die Anzahl der Elemente nicht im Voraus bekannt ist. `{first}` `{last}` `{sep}` -------------------------- -Diese Tags können innerhalb der Schleife `{foreach}` verwendet werden. Der Inhalt von `{first}` wird beim ersten Durchlauf gerendert. -Der Inhalt von `{last}` wird gerendert ... können Sie es erraten? Ja, für den letzten Durchlauf. Dies sind eigentlich Abkürzungen für `{if $iterator->first}` und `{if $iterator->last}`. +Diese Tags können innerhalb einer `{foreach}`-Schleife verwendet werden. Der Inhalt von `{first}` wird gerendert, wenn es sich um den ersten Durchlauf handelt. +Der Inhalt von `{last}` wird gerendert ... können Sie es erraten? Ja, wenn es sich um den letzten Durchlauf handelt. Es handelt sich eigentlich um Abkürzungen für `{if $iterator->first}` und `{if $iterator->last}`. -Die Tags können auch als [n:attributes |syntax#n:attributes] geschrieben werden: +Die Tags können auch elegant als [n:Attribute|syntax#n:attributes] verwendet werden: ```latte {foreach $rows as $row} - {first}

List of names

{/first} + {first}

Liste der Namen

{/first}

{$row->name}

@@ -470,21 +470,21 @@ Die Tags können auch als [n:attributes |syntax#n:attributes] geschrieben werden {/foreach} ``` -Der Inhalt von `{sep}` wird wiedergegeben, wenn es sich nicht um die letzte Iteration handelt, und eignet sich daher für die Ausgabe von Begrenzungszeichen, wie z. B. Kommas zwischen aufgelisteten Elementen: +Der Inhalt des `{sep}`-Tags wird gerendert, wenn der Durchlauf nicht der letzte ist. Es eignet sich also zum Rendern von Trennzeichen, zum Beispiel Kommas zwischen ausgegebenen Elementen: ```latte {foreach $items as $item} {$item} {sep}, {/sep} {/foreach} ``` -Das ist doch ziemlich praktisch, oder? +Das ist ziemlich praktisch, nicht wahr? `{iterateWhile}` ---------------- -Vereinfacht die Gruppierung von linearen Daten während der Iteration in einer foreach-Schleife durch Iteration in einer verschachtelten Schleife, bis eine Bedingung erfüllt ist. [Lesen Sie die ausführliche Anleitung |cookbook/grouping]. +Vereinfacht die Gruppierung linearer Daten während der Iteration in einer foreach-Schleife, indem die Iteration in einer verschachtelten Schleife durchgeführt wird, solange eine Bedingung erfüllt ist. [Lesen Sie die detaillierte Anleitung|cookbook/grouping]. -Sie kann auch `{first}` und `{last}` im obigen Beispiel elegant ersetzen: +Es kann auch elegant `{first}` und `{last}` im obigen Beispiel ersetzen: ```latte {foreach $rows as $row} @@ -501,21 +501,21 @@ Sie kann auch `{first}` und `{last}` im obigen Beispiel elegant ersetzen: {/foreach} ``` -Siehe auch [Batch- |filters#batch] und [Gruppenfilter |filters#group]. +Siehe auch die Filter [batch|filters#batch] und [group|filters#group]. `{for}` ------- -Wir schreiben den Zyklus genau so wie in PHP: +Wir schreiben die Schleife genauso wie in PHP: ```latte {for $i = 0; $i < 10; $i++} - Item #{$i} + Element {$i} {/for} ``` -Das Tag kann auch als [n:attribute |syntax#n:attributes] geschrieben werden: +Das Tag kann auch als [n:Attribut|syntax#n:attributes] verwendet werden: ```latte

{$i}

@@ -525,7 +525,7 @@ Das Tag kann auch als [n:attribute |syntax#n:attributes] geschrieben werden: `{while}` --------- -Auch hier schreiben wir den Zyklus genau so, wie in PHP: +Wir schreiben die Schleife wieder genauso wie in PHP: ```latte {while $row = $result->fetch()} @@ -533,7 +533,7 @@ Auch hier schreiben wir den Zyklus genau so, wie in PHP: {/while} ``` -Oder als [n:Attribut |syntax#n:attributes]: +Oder als [n:Attribut|syntax#n:attributes]: ```latte @@ -541,7 +541,7 @@ Oder als [n:Attribut |syntax#n:attributes]: ``` -Eine Variante mit einer Bedingung im End-Tag entspricht der do-while-Schleife in PHP: +Eine Variante mit der Bedingung im schließenden Tag ist ebenfalls möglich, die der do-while-Schleife in PHP entspricht: ```latte {while} @@ -553,7 +553,7 @@ Eine Variante mit einer Bedingung im End-Tag entspricht der do-while-Schleife in `{continueIf}` `{skipIf}` `{breakIf}` ------------------------------------- -Es gibt spezielle Tags, die Sie zur Steuerung jeder Schleife verwenden können - `{continueIf ?}` und `{breakIf ?}`, die zur nächsten Iteration springen bzw. die Schleife beenden, wenn die Bedingungen erfüllt sind: +Zur Steuerung jeder Schleife können die Tags `{continueIf ?}` und `{breakIf ?}` verwendet werden, die zum nächsten Element übergehen bzw. die Schleife beenden, wenn eine Bedingung erfüllt ist: ```latte {foreach $rows as $row} @@ -564,7 +564,7 @@ Es gibt spezielle Tags, die Sie zur Steuerung jeder Schleife verwenden können - ``` -Das Tag `{skipIf}` ist dem Tag `{continueIf}` sehr ähnlich, erhöht aber den Zähler nicht. So gibt es keine Löcher in der Nummerierung, wenn Sie `$iterator->counter` ausdrucken und einige Elemente überspringen. Auch die {else}-Klausel wird wiedergegeben, wenn Sie alle Elemente überspringen. +Das `{skipIf}`-Tag ist sehr ähnlich wie `{continueIf}`, erhöht aber nicht den Zähler `$iterator->counter`, so dass, wenn wir ihn ausgeben und gleichzeitig einige Elemente überspringen, keine Lücken in der Nummerierung entstehen. Außerdem wird die `{else}`-Klausel gerendert, wenn wir alle Elemente überspringen. ```latte
    @@ -572,7 +572,7 @@ Das Tag `{skipIf}` ist dem Tag `{continueIf}` sehr ähnlich, erhöht aber den Z {skipIf $person->age < 18}
  • {$iterator->counter}. {$person->name}
  • {else} -
  • Sorry, no adult users in this list
  • +
  • Leider gibt es keine Erwachsenen in dieser Liste
  • {/foreach}
``` @@ -581,20 +581,20 @@ Das Tag `{skipIf}` ist dem Tag `{continueIf}` sehr ähnlich, erhöht aber den Z `{exitIf}` .{data-version:3.0.5} -------------------------------- -Beendet das Rendering einer Vorlage oder eines Blocks, wenn eine Bedingung erfüllt ist (d. h. "early exit"). +Beendet das Rendern des Templates oder Blocks, wenn eine Bedingung erfüllt ist (sogenannter "early exit"). ```latte {exitIf !$messages} -

Messages

+

Nachrichten

{$message}
``` -Schablonen einbeziehen .[#toc-including-templates] -================================================== +Einbindung von Templates .[#toc-including-templates] +==================================================== `{include 'file.latte'}` .{toc: include} @@ -603,46 +603,46 @@ Schablonen einbeziehen .[#toc-including-templates] .[note] Siehe auch [`{include block}` |template-inheritance#printing-blocks] -Der `{include}` Tag lädt und rendert die angegebene Vorlage. In unserer Lieblingssprache PHP sieht das so aus: +Das `{include}`-Tag lädt und rendert das angegebene Template. Wenn wir in der Sprache unserer Lieblingssprache PHP sprechen würden, wäre es so etwas wie: ```php ``` -Eingebundene Templates haben keinen Zugriff auf die Variablen des aktiven Kontexts, aber sie haben Zugriff auf die globalen Variablen. +Eingebundene Templates haben keinen Zugriff auf die Variablen des aktiven Kontexts, sie haben nur Zugriff auf globale Variablen. -Sie können der eingefügten Vorlage auf folgende Weise Variablen übergeben: +Variablen können auf diese Weise an das eingebundene Template übergeben werden: ```latte {include 'template.latte', foo: 'bar', id: 123} ``` -Der Name der Vorlage kann ein beliebiger PHP-Ausdruck sein: +Der Name des Templates kann ein beliebiger PHP-Ausdruck sein: ```latte {include $someVar} {include $ajax ? 'ajax.latte' : 'not-ajax.latte'} ``` -Der eingefügte Inhalt kann durch [Filter |syntax#filters] verändert werden. Im folgenden Beispiel werden alle HTML-Elemente entfernt und die Groß- und Kleinschreibung angepasst: +Der eingebundene Inhalt kann mit [Filtern|syntax#Filters] modifiziert werden. Das folgende Beispiel entfernt das gesamte HTML und passt die Groß-/Kleinschreibung an: ```latte {include 'heading.latte' |stripHtml|capitalize} ``` -Die [Vorlagenvererbung |template inheritance] ist standardmäßig **nicht** daran beteiligt. Sie können zwar Block-Tags zu eingebundenen Vorlagen hinzufügen, diese ersetzen jedoch nicht die passenden Blöcke in der Vorlage, in die sie eingebunden sind. Betrachten Sie Includes als unabhängige und abgeschirmte Teile von Seiten oder Modulen. Dieses Verhalten kann mit dem Modifikator `with blocks` geändert werden: +Standardmäßig spielt die [Template-Vererbung|template-inheritance] in diesem Fall keine Rolle. Auch wenn wir in dem eingebundenen Template Blöcke verwenden können, werden die entsprechenden Blöcke in dem Template, in das eingebunden wird, nicht ersetzt. Denken Sie an eingebundene Templates als separate, abgeschirmte Teile von Seiten oder Modulen. Dieses Verhalten kann mit dem Modifikator `with blocks` geändert werden: ```latte {include 'template.latte' with blocks} ``` -Die Beziehung zwischen dem im Tag angegebenen Dateinamen und der Datei auf der Festplatte ist eine Sache des [Loaders |extending-latte#Loaders]. +Die Beziehung zwischen dem im Tag angegebenen Dateinamen und der Datei auf der Festplatte ist eine Angelegenheit des [Loaders|extending-latte#Loaders]. `{sandbox}` ----------- -Wenn Sie eine von einem Endbenutzer erstellte Vorlage einbinden, sollten Sie eine Sandbox verwenden (weitere Informationen finden Sie in der [Sandbox-Dokumentation |sandbox]): +Bei der Einbindung eines vom Endbenutzer erstellten Templates sollten Sie den Sandbox-Modus in Betracht ziehen (weitere Informationen finden Sie in der [Sandbox-Dokumentation |sandbox]): ```latte {sandbox 'untrusted.latte', level: 3, data: $menu} @@ -655,7 +655,7 @@ Wenn Sie eine von einem Endbenutzer erstellte Vorlage einbinden, sollten Sie ein .[note] Siehe auch [`{block name}` |template-inheritance#blocks] -Blöcke ohne Namen dienen dazu, [Filter |syntax#filters] auf einen Teil der Vorlage anzuwenden. Sie können zum Beispiel einen [Streifenfilter |filters#strip] anwenden, um überflüssige Leerzeichen zu entfernen: +Namenlose Blöcke dienen als Möglichkeit, [Filter|syntax#Filters] auf einen Teil des Templates anzuwenden. Zum Beispiel kann auf diese Weise der [strip|filters#strip]-Filter angewendet werden, der überflüssige Leerzeichen entfernt: ```latte {block|strip} @@ -666,16 +666,16 @@ Blöcke ohne Namen dienen dazu, [Filter |syntax#filters] auf einen Teil der Vorl ``` -Behandlung von Ausnahmen .[#toc-exception-handling] -=================================================== +Ausnahmebehandlung .[#toc-exception-handling] +============================================= `{try}` ------- -Diese Tags machen es extrem einfach, robuste Vorlagen zu erstellen. +Dank dieses Tags ist es extrem einfach, robuste Templates zu erstellen. -Wenn beim Rendern des `{try}` -Blocks eine Ausnahme auftritt, wird der gesamte Block verworfen und das Rendern danach fortgesetzt: +Wenn während des Renderns eines `{try}`-Blocks eine Ausnahme auftritt, wird der gesamte Block verworfen und das Rendering wird danach fortgesetzt: ```latte {try} @@ -687,7 +687,7 @@ Wenn beim Rendern des `{try}` -Blocks eine Ausnahme auftritt, wird der gesamte B {/try} ``` -Der Inhalt der optionalen Klausel `{else}` wird nur gerendert, wenn eine Ausnahme auftritt: +Der Inhalt in der optionalen `{else}`-Klausel wird nur gerendert, wenn eine Ausnahme auftritt: ```latte {try} @@ -697,11 +697,11 @@ Der Inhalt der optionalen Klausel `{else}` wird nur gerendert, wenn eine Ausnahm {/foreach} {else} -

Sorry, the tweets could not be loaded.

+

Es tut uns leid, die Tweets konnten nicht geladen werden.

{/try} ``` -Der Tag kann auch als [n:attribute |syntax#n:attributes] geschrieben werden: +Das Tag kann auch als [n:Attribut|syntax#n:attributes] verwendet werden: ```latte
    @@ -709,13 +709,13 @@ Der Tag kann auch als [n:attribute |syntax#n:attributes] geschrieben werden:
``` -Es ist auch möglich, [einen eigenen Exception-Handler |develop#exception handler] für z.B. die Protokollierung zu definieren: +Es ist auch möglich, einen eigenen [Handler für Ausnahmen|develop#exception handler] zu definieren, zum Beispiel für Logging-Zwecke. `{rollback}` ------------ -Der Block `{try}` kann auch manuell mit `{rollback}` angehalten und übersprungen werden. So müssen Sie nicht alle Eingabedaten im Voraus prüfen und können erst während des Renderings entscheiden, ob es sinnvoll ist, das Objekt zu rendern. +Ein `{try}`-Block kann auch manuell mit `{rollback}` gestoppt und übersprungen werden. Dadurch müssen Sie nicht alle Eingabedaten im Voraus überprüfen und können während des Renderings entscheiden, dass Sie das Objekt überhaupt nicht rendern möchten: ```latte {try} @@ -738,23 +738,23 @@ Variablen .[#toc-variables] `{var}` `{default}` ------------------- -Wir werden neue Variablen in der Vorlage mit dem Tag `{var}` erstellen: +Neue Variablen werden im Template mit dem Tag `{var}` erstellt: ```latte {var $name = 'John Smith'} {var $age = 27} -{* Mehrfache Deklaration *} +{* Mehrfachdeklaration *} {var $name = 'John Smith', $age = 27} ``` -Das Tag `{default}` funktioniert ähnlich, mit dem Unterschied, dass es Variablen nur dann anlegt, wenn sie nicht existieren: +Das Tag `{default}` funktioniert ähnlich, mit dem Unterschied, dass es Variablen nur dann erstellt, wenn sie nicht existieren: ```latte {default $lang = 'cs'} ``` -Sie können auch [Typen von Variablen |type-system] angeben. Im Moment sind sie informativ und Latte prüft sie nicht. +Sie können auch [Variablentypen|type-system] angeben. Diese sind derzeit informativ und werden von Latte nicht überprüft. ```latte {var string $name = $article->getTitle()} @@ -765,7 +765,7 @@ Sie können auch [Typen von Variablen |type-system] angeben. Im Moment sind sie `{parameters}` -------------- -So wie eine Funktion ihre Parameter deklariert, kann eine Vorlage ihre Variablen am Anfang deklarieren: +So wie eine Funktion ihre Parameter deklariert, kann auch ein Template am Anfang seine Variablen deklarieren: ```latte {parameters @@ -775,15 +775,15 @@ So wie eine Funktion ihre Parameter deklariert, kann eine Vorlage ihre Variablen } ``` -Die Variablen `$a` und `$b` ohne Standardwert haben automatisch den Standardwert `null`. Die deklarierten Typen sind immer noch informativ, und Latte überprüft sie nicht. +Variablen `$a` und `$b` ohne angegebenen Standardwert haben automatisch den Standardwert `null`. Die deklarierten Typen sind derzeit informativ und werden von Latte nicht überprüft. -Andere als die deklarierten Variablen werden nicht an die Vorlage übergeben. Dies ist ein Unterschied zum Tag `{default}`. +Andere als die deklarierten Variablen werden nicht in das Template übertragen. Dies unterscheidet es vom Tag `{default}`. `{capture}` ----------- -Mit dem Tag `{capture}` können Sie die Ausgabe in einer Variablen erfassen: +Erfasst die Ausgabe in eine Variable: ```latte {capture $var} @@ -792,10 +792,10 @@ Mit dem Tag `{capture}` können Sie die Ausgabe in einer Variablen erfassen: {/capture} -

Captured: {$var}

+

Erfasst: {$var}

``` -Der Tag kann auch als [n:attribute |syntax#n:attributes] geschrieben werden, wie jeder paarweise Tag: +Das Tag kann, wie jedes Paar-Tag, auch als [n:Attribut|syntax#n:Attribute] geschrieben werden: ```latte
    @@ -803,17 +803,17 @@ Der Tag kann auch als [n:attribute |syntax#n:attributes] geschrieben werden, wie
``` -Die HTML-Ausgabe wird in der Variablen `$var` als `Latte\Runtime\Html` -Objekt gespeichert, um [unerwünschtes Escaping |develop#disabling-auto-escaping-of-variable] beim Drucken [zu vermeiden |develop#disabling-auto-escaping-of-variable]. +Die HTML-Ausgabe wird in der Variable `$var` als `Latte\Runtime\Html`-Objekt gespeichert, um [unerwünschtes Escaping |develop#disabling-auto-escaping-of-variable] beim Ausgeben zu verhindern. -Andere .[#toc-others] -===================== +Sonstiges .[#toc-others] +======================== `{contentType}` --------------- -Verwenden Sie das Tag, um anzugeben, welche Art von Inhalt die Vorlage darstellt. Die Optionen sind: +Mit diesem Tag geben Sie an, welchen Inhaltstyp das Template darstellt. Die Optionen sind: - `html` (Standardtyp) - `xml` @@ -822,16 +822,16 @@ Verwenden Sie das Tag, um anzugeben, welche Art von Inhalt die Vorlage darstellt - `calendar` (iCal) - `text` -Die Verwendung dieses Befehls ist wichtig, weil er die [kontextabhängige Escape-Funktion |safety-first#context-aware-escaping] einstellt und nur dann kann Latte korrekt escapen. Zum Beispiel schaltet `{contentType xml}` in den XML-Modus, `{contentType text}` schaltet das Escapen komplett ab. +Seine Verwendung ist wichtig, da es das [kontextsensitive Escaping |safety-first#context-aware-escaping] festlegt und nur so richtig escapen kann. Zum Beispiel schaltet `{contentType xml}` in den XML-Modus um, `{contentType text}` schaltet das Escaping komplett aus. -Handelt es sich bei dem Parameter um einen MIME-Typ mit vollem Funktionsumfang, wie z. B. `application/xml`, so wird auch ein HTTP-Header `Content-Type` an den Browser gesendet: +Wenn der Parameter ein vollständiger MIME-Typ ist, wie zum Beispiel `application/xml`, wird zusätzlich der HTTP-Header `Content-Type` an den Browser gesendet: ```latte {contentType application/xml} - RSS feed + RSS-Feed ... @@ -843,19 +843,19 @@ Handelt es sich bei dem Parameter um einen MIME-Typ mit vollem Funktionsumfang, `{debugbreak}` -------------- -Gibt die Stelle an, an der die Codeausführung unterbrochen wird. Sie wird zu Debugging-Zwecken verwendet, damit der Programmierer die Laufzeitumgebung überprüfen und sicherstellen kann, dass der Code wie erwartet ausgeführt wird. Er unterstützt [Xdebug |https://xdebug.org]. Zusätzlich können Sie eine Bedingung angeben, unter der der Code unterbrochen werden soll. +Markiert eine Stelle, an der die Programmausführung angehalten und der Debugger gestartet wird, damit der Programmierer die Laufzeitumgebung inspizieren und überprüfen kann, ob das Programm wie erwartet funktioniert. Es unterstützt [Xdebug |https://xdebug.org/]. Eine Bedingung kann hinzugefügt werden, die bestimmt, wann das Programm angehalten werden soll. ```latte -{debugbreak} {* bricht das Programm *} +{debugbreak} {* hält das Programm an *} -{debugbreak $counter == 1} {* bricht das Programm ab, wenn die Bedingung erfüllt ist *} +{debugbreak $counter == 1} {* hält das Programm an, wenn die Bedingung erfüllt ist *} ``` `{do}` ------ -Führt den PHP-Code aus und gibt nichts aus. Wie bei allen anderen Tags ist der PHP-Code ein einzelner Ausdruck, siehe [PHP-Einschränkungen |syntax#PHP Limitations in Latte]. +Führt PHP-Code aus und gibt nichts aus. Wie bei allen anderen Tags mit PHP-Code handelt es sich um einen einzelnen Ausdruck, siehe [PHP-Einschränkungen |syntax#PHP Limitations in Latte]. ```latte {do $num++} @@ -868,80 +868,80 @@ Führt den PHP-Code aus und gibt nichts aus. Wie bei allen anderen Tags ist der Gibt eine Variable oder den aktuellen Kontext aus. ```latte -{dump $name} {* gibt die Variable $name aus *} +{dump $name} {* Gibt die Variable $name aus *} -{dump} {* gibt alle definierten Variablen aus *} +{dump} {* Gibt alle aktuell definierten Variablen aus *} ``` .[caution] -Erfordert das Paket [Tracy |tracy:]. +Erfordert die [Tracy|tracy:]-Bibliothek. `{php}` ------- -Ermöglicht die Ausführung von beliebigem PHP-Code. Das Tag muss mit der Erweiterung [RawPhpExtension |develop#RawPhpExtension] aktiviert werden. +Ermöglicht die Ausführung beliebigen PHP-Codes. Das Tag muss durch die [RawPhpExtension |develop#RawPhpExtension] aktiviert werden. `{spaceless}` ------------- -Entfernt unnötige Leerzeichen. Ähnlich wie der [raumlose |filters#spaceless] Filter. +Entfernt überflüssige Leerzeichen aus der Ausgabe. Funktioniert ähnlich wie der Filter [spaceless|filters#spaceless]. ```latte {spaceless}
    -
  • Hello
  • +
  • Hallo
{/spaceless} ``` -Ausgaben: +Erzeugt ```latte -
  • Hello
+
  • Hallo
``` -Der Tag kann auch als [n:attribute |syntax#n:attributes] geschrieben werden: +Das Tag kann auch als [n:Attribut|syntax#n:attributes] geschrieben werden. `{syntax}` ---------- -Latten-Tags müssen nicht nur in geschweifte Klammern eingeschlossen werden. Sie können ein anderes Trennzeichen wählen, auch zur Laufzeit. Dies geschieht durch `{syntax…}`, wobei der Parameter sein kann: +Latte-Tags müssen nicht nur durch einfache geschweifte Klammern begrenzt sein. Wir können auch einen anderen Begrenzer wählen, sogar zur Laufzeit. Dafür wird `{syntax …}` verwendet, wobei als Parameter angegeben werden kann: - double: `{{...}}` -- off: deaktiviert die Latte-Tags vollständig +- off: schaltet die Verarbeitung von Latte-Tags komplett aus -Mit der Notation n:attribute können wir Latte nur für einen JavaScript-Block deaktivieren: +Mit Hilfe von n:Attributen kann Latte zum Beispiel nur für einen JavaScript-Block ausgeschaltet werden: ```latte ``` -Latte kann sehr bequem innerhalb von JavaScript verwendet werden, man sollte nur Konstrukte wie in diesem Beispiel vermeiden, bei denen der Buchstabe unmittelbar auf `{` folgt, siehe [Latte innerhalb von JavaScript oder CSS |recipes#Latte inside JavaScript or CSS]. +Latte kann sehr bequem auch innerhalb von JavaScript verwendet werden, man muss nur Konstruktionen wie in diesem Beispiel vermeiden, bei denen direkt nach `{` ein Buchstabe folgt, siehe [Latte innerhalb von JavaScript oder CSS|recipes#Latte inside JavaScript or CSS]. -Wenn Sie Latte mit dem `{syntax off}` (d.h. Tag, nicht das n:-Attribut) ausschalten, werden alle Tags bis zu `{/syntax}` strikt ignoriert. +Wenn Sie Latte mit `{syntax off}` ausschalten (d.h. mit einem Tag, nicht mit einem n:Attribut), wird es konsequent alle Tags bis `{/syntax}` ignorieren. {trace} ------- -Wirft eine `Latte\RuntimeException` Exception, deren Stack-Trace im Sinne der Templates ist. Anstatt Funktionen und Methoden aufzurufen, werden also Blöcke aufgerufen und Vorlagen eingefügt. Wenn Sie ein Tool zur übersichtlichen Darstellung von geworfenen Ausnahmen wie [Tracy |tracy:] verwenden, sehen Sie deutlich den Aufrufstapel, einschließlich aller übergebenen Argumente. +Wirft eine `Latte\RuntimeException`, deren Stack-Trace im Geiste der Templates ist. Anstelle von Funktions- und Methodenaufrufen enthält er also Blockaufrufe und Template-Einbindungen. Wenn Sie ein Tool zur übersichtlichen Anzeige von geworfenen Ausnahmen verwenden, wie zum Beispiel [Tracy|tracy:], wird Ihnen der Call Stack einschließlich aller übergebenen Argumente übersichtlich angezeigt. -HTML-Tag-Hilfsmittel .[#toc-html-tag-helpers] -============================================= +Helfer für HTML-Codierer .[#toc-html-tag-helpers] +================================================= n:class ------- -Dank `n:class` ist es sehr einfach, das HTML-Attribut `class` genau so zu generieren, wie Sie es brauchen. +Dank `n:class` können Sie sehr einfach das HTML-Attribut `class` genau nach Ihren Vorstellungen generieren. -Beispiel: Ich möchte, dass das aktive Element die Klasse `active` hat: +Beispiel: Ich brauche, dass das aktive Element die Klasse `active` hat: ```latte {foreach $items as $item} @@ -949,7 +949,7 @@ Beispiel: Ich möchte, dass das aktive Element die Klasse `active` hat: {/foreach} ``` -Außerdem muss das erste Element die Klassen `first` und `main` haben: +Und weiter, dass das erste Element die Klassen `first` und `main` hat: ```latte {foreach $items as $item} @@ -957,7 +957,7 @@ Außerdem muss das erste Element die Klassen `first` und `main` haben: {/foreach} ``` -Und alle Elemente sollten die Klasse `list-item` haben: +Und alle Elemente sollen die Klasse `list-item` haben: ```latte {foreach $items as $item} @@ -965,13 +965,13 @@ Und alle Elemente sollten die Klasse `list-item` haben: {/foreach} ``` -Verblüffend einfach, nicht wahr? +Unglaublich einfach, nicht wahr? n:attr ------ -Das Attribut `n:attr` kann beliebige HTML-Attribute mit der gleichen Eleganz wie [n:class |#n:class] erzeugen. +Das Attribut `n:attr` kann mit der gleichen Eleganz wie [n:class|#n:class] beliebige HTML-Attribute generieren. ```latte {foreach $data as $item} @@ -979,7 +979,7 @@ Das Attribut `n:attr` kann beliebige HTML-Attribute mit der gleichen Eleganz wie {/foreach} ``` -Abhängig von den zurückgegebenen Werten zeigt es z. B: +Abhängig von den zurückgegebenen Werten wird zum Beispiel Folgendes ausgegeben: ```latte @@ -993,25 +993,25 @@ Abhängig von den zurückgegebenen Werten zeigt es z. B: n:tag ----- -Das Attribut `n:tag` kann den Namen eines HTML-Elements dynamisch ändern. +Das Attribut `n:tag` kann den Namen des HTML-Elements dynamisch ändern. ```latte

{$title}

``` -Wenn `$heading === null`, wird das `

` Tag ohne Änderung gedruckt. Andernfalls wird der Elementname in den Wert der Variablen geändert, so dass für `$heading === 'h3'` geschrieben wird: +Wenn `$heading === null` ist, wird der Tag `

` unverändert ausgegeben. Andernfalls wird der Name des Elements auf den Wert der Variable geändert, so dass für `$heading === 'h3'` Folgendes ausgegeben wird: ```latte

...

``` -Da es sich bei Latte um ein sicheres Templating-System handelt, wird überprüft, ob der neue Tag-Name gültig ist und keine unerwünschten oder bösartigen Werte enthält. +Da Latte ein sicheres Template-System ist, überprüft es, ob der neue Tag-Name gültig ist und keine unerwünschten oder schädlichen Werte enthält. n:ifcontent ----------- -Verhindert, dass ein leeres HTML-Element gedruckt wird, d.h. ein Element, das nichts als Leerraum enthält. +Verhindert, dass ein leeres HTML-Element ausgegeben wird, d.h. ein Element, das nichts außer Leerzeichen enthält. ```latte
@@ -1019,7 +1019,7 @@ Verhindert, dass ein leeres HTML-Element gedruckt wird, d.h. ein Element, das ni
``` -Abhängig von den Werten der Variablen `$error` wird dies gedruckt: +Gibt abhängig vom Wert der Variable `$error` aus: ```latte {* $error = '' *} @@ -1033,10 +1033,10 @@ Abhängig von den Werten der Variablen `$error` wird dies gedruckt: ``` -Übersetzung .[#toc-translation] -=============================== +Übersetzungen .[#toc-translation] +================================= -Damit die Übersetzungs-Tags funktionieren, müssen Sie den [Übersetzer ein richten|develop#TranslatorExtension]. Sie können auch den [`translate` |filters#translate] Filter für die Übersetzung verwenden. +Damit die Übersetzungs-Tags funktionieren, muss der [Übersetzer aktiviert werden|develop#TranslatorExtension]. Für Übersetzungen können Sie auch den Filter [`translate`|filters#translate] verwenden. `{_...}` @@ -1045,30 +1045,30 @@ Damit die Übersetzungs-Tags funktionieren, müssen Sie den [Übersetzer ein ric Übersetzt Werte in andere Sprachen. ```latte -{_'Basket'} +{_'Warenkorb'} {_$item} ``` -Es können auch andere Parameter an den Übersetzer übergeben werden: +Dem Übersetzer können auch weitere Parameter übergeben werden: ```latte -{_'Basket', domain: order} +{_'Warenkorb', domain: order} ``` `{translate}` ------------- -Překládá části šablony: +Übersetzt Teile des Templates: ```latte -

{translate}Order{/translate}

+

{translate}Bestellung{/translate}

{translate domain: order}Lorem ipsum ...{/translate} ``` -Der Tag kann auch als [n:attribute |syntax#n:attributes] geschrieben werden, um das Innere des Elements zu übersetzen: +Das Tag kann auch als [n:Attribut|syntax#n:attributes] geschrieben werden, um den Inhalt des Elements zu übersetzen: ```latte -

Order

+

Bestellung

``` diff --git a/latte/de/template-inheritance.texy b/latte/de/template-inheritance.texy index 0f57bdd16e..5e9a307295 100644 --- a/latte/de/template-inheritance.texy +++ b/latte/de/template-inheritance.texy @@ -423,7 +423,7 @@ Hier finden Sie einige Tipps für die Arbeit mit Blöcken: Horizontale Wiederverwendung `{import}` .{toc: Horizontal Reuse} ================================================================ -Die horizontale Wiederverwendung ist ein dritter Wiederverwendbarkeits- und Vererbungsmechanismus in Latte. Sie ermöglicht es Ihnen, Blöcke aus anderen Vorlagen zu laden. Es ist vergleichbar mit dem Erstellen einer PHP-Datei mit Hilfsfunktionen oder einem Trait. +Die horizontale Wiederverwendung ist der dritte Mechanismus für Wiederverwendung und Vererbung in Latte. Er ermöglicht das Laden von Blöcken aus anderen Vorlagen. Dies ist vergleichbar mit der Erstellung einer Datei mit Hilfsfunktionen in PHP und dem anschließenden Laden mit `require`. Obwohl die Vererbung von Vorlagenlayouts eine der leistungsfähigsten Funktionen von Latte ist, ist sie auf einfache Vererbung beschränkt - eine Vorlage kann nur eine andere Vorlage erweitern. Die horizontale Wiederverwendung ist eine Möglichkeit, Mehrfachvererbung zu erreichen. @@ -455,7 +455,7 @@ Das Tag `{import}` sollte das erste Template-Tag nach `{layout}` sein. Der Vorla Sie können so viele `{import}` Anweisungen in einer Vorlage verwenden, wie Sie wollen. Wenn zwei importierte Vorlagen denselben Block definieren, gewinnt die erste Vorlage. Die höchste Priorität wird jedoch der Hauptvorlage eingeräumt, die jeden importierten Block überschreiben kann. -Alle überschriebenen Blöcke können nach und nach eingebunden werden, indem sie als [übergeordneter Block |#parent block] eingefügt werden: +Der Inhalt von überschriebenen Blöcken kann beibehalten werden, indem der Block wie ein [übergeordneter Block |#parent block] eingefügt wird: ```latte {layout 'layout.latte'} diff --git a/latte/el/filters.texy b/latte/el/filters.texy index b35b9e0a1e..65900b85eb 100644 --- a/latte/el/filters.texy +++ b/latte/el/filters.texy @@ -120,8 +120,8 @@ $latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $ ====================== -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Φίλτρο που απλοποιεί την καταχώριση γραμμικών δεδομένων με τη μορφή πίνακα. Επιστρέφει έναν πίνακα με τον δεδομένο αριθμό στοιχείων. Εάν δώσετε μια δεύτερη παράμετρο, αυτή χρησιμοποιείται για να συμπληρώσει τα στοιχεία που λείπουν στην τελευταία γραμμή. ```latte @@ -167,8 +167,8 @@ breakLines .[filter] ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Διαμορφώνει το μέγεθος σε bytes σε μορφή αναγνώσιμη από τον άνθρωπο. Εάν έχει οριστεί η [τοπική γλώσσα |develop#locale], χρησιμοποιούνται τα αντίστοιχα διαχωριστικά δεκαδικών και χιλιάδων. ```latte @@ -177,8 +177,8 @@ bytes(int precision = 2) .[filter] ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Στρογγυλοποιεί έναν αριθμό με δεδομένη ακρίβεια. ```latte @@ -221,8 +221,8 @@ checkUrl .[filter] Βλέπε επίσης [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Επιστρέφει την τιμή που έχει περιοριστεί στο συνολικό εύρος των min και max. ```latte @@ -232,8 +232,8 @@ clamp(int|float min, int|float max) .[filter] Υπάρχει επίσης ως [συνάρτηση |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Μετατρέπει το περιεχόμενο σε σχήμα URI δεδομένων. Μπορεί να χρησιμοποιηθεί για την εισαγωγή εικόνων σε HTML ή CSS χωρίς την ανάγκη σύνδεσης εξωτερικών αρχείων. Ας έχουμε μια εικόνα σε μια μεταβλητή `$img = Image::fromFile('obrazek.gif')`, τότε @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Απαιτεί επέκταση PHP `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Διαμορφώνει την ημερομηνία και την ώρα σύμφωνα με τη μάσκα που χρησιμοποιείται από τη συνάρτηση της PHP [php:date]. Το φίλτρο δέχεται την ημερομηνία σε μορφή χρονοσφραγίδας UNIX, ως συμβολοσειρά ή ως αντικείμενο `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ escapeUrl .[filter] Βλέπε επίσης [query |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Διαχωρίζει μια συμβολοσειρά με βάση το δεδομένο διαχωριστικό και επιστρέφει έναν πίνακα συμβολοσειρών. Ψευδώνυμο για το `split`. ```latte @@ -311,8 +311,8 @@ first .[filter] Βλέπε επίσης [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Στρογγυλοποιεί έναν αριθμό με δεδομένη ακρίβεια. ```latte @@ -335,8 +335,8 @@ firstUpper .[filter] Βλέπε επίσης [capitalize |#capitalize], [lower |#lower], [upper |#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- Το φίλτρο ομαδοποιεί τα δεδομένα σύμφωνα με διάφορα κριτήρια. Σε αυτό το παράδειγμα, οι γραμμές του πίνακα ομαδοποιούνται με βάση τη στήλη `categoryId`. Η έξοδος είναι ένας πίνακας πινάκων όπου το κλειδί είναι η τιμή στη στήλη `categoryId`. Διαβάστε τις [λεπτομερείς οδηγίες |cookbook/grouping]. @@ -354,8 +354,8 @@ group(string|int|\Closure by): array .[filter]{data-version:3.0.16} Δείτε επίσης [batch |#batch], τη συνάρτηση [group |functions#group] και την ετικέτα [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Επιστρέφει μια συμβολοσειρά που είναι η συνένωση των συμβολοσειρών του πίνακα. Ψευδώνυμο για το `join`. ```latte @@ -370,8 +370,8 @@ implode(string glue = '') .[filter] ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Παρεμβάλλει ένα κείμενο από τα αριστερά κατά ένα δεδομένο αριθμό tabs ή άλλων χαρακτήρων που καθορίζουμε στο δεύτερο προαιρετικό όρισμα. Οι κενές γραμμές δεν εσοδεύονται. ```latte @@ -420,7 +420,7 @@ length .[filter] ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Διαμορφώνει την ημερομηνία και την ώρα σύμφωνα με την [τοπική γλώσσα |develop#locale], εξασφαλίζοντας συνεπή και εντοπισμένη εμφάνιση των δεδομένων ώρας σε διάφορες γλώσσες και περιοχές. Το φίλτρο δέχεται την ημερομηνία ως χρονοσφραγίδα UNIX, συμβολοσειρά ή αντικείμενο `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello Η κατάχρηση του φίλτρου `noescape` μπορεί να οδηγήσει σε ευπάθεια XSS! Ποτέ μην το χρησιμοποιείτε εκτός αν είστε **απολύτως σίγουροι** για το τι κάνετε και ότι η συμβολοσειρά που εκτυπώνετε προέρχεται από αξιόπιστη πηγή. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Διαμορφώνει έναν αριθμό σε έναν καθορισμένο αριθμό δεκαδικών ψηφίων. Εάν έχει οριστεί η [τοπική γλώσσα |develop#locale], χρησιμοποιούνται τα αντίστοιχα διαχωριστικά δεκαδικών και χιλιάδων. ```latte @@ -549,8 +549,8 @@ number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[fil ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- Η παράμετρος `format` σας επιτρέπει να καθορίσετε την εμφάνιση των αριθμών ακριβώς σύμφωνα με τις ανάγκες σας. Απαιτεί μια καθορισμένη [τοπική γλώσσα |develop#locale]. Η μορφή αποτελείται από διάφορους ειδικούς χαρακτήρες, την πλήρη περιγραφή των οποίων μπορείτε να βρείτε στην τεκμηρίωση "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns: - υποχρεωτικό ψηφίο, εμφανίζεται πάντα, ακόμη και αν είναι μηδέν @@ -597,7 +597,7 @@ number(string format) .[filter] Να θυμάστε ότι η πραγματική εμφάνιση των αριθμών μπορεί να διαφέρει ανάλογα με τις ρυθμίσεις της τοπικής γλώσσας. Για παράδειγμα, σε ορισμένες χώρες χρησιμοποιείται κόμμα αντί για τελεία ως διαχωριστικό δεκαδικού ψηφίου. Αυτό το φίλτρο το λαμβάνει αυτόματα υπόψη, οπότε δεν χρειάζεται να ανησυχείτε γι' αυτό. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Συμπληρώνει μια συμβολοσειρά σε συγκεκριμένο μήκος με μια άλλη συμβολοσειρά από αριστερά. @@ -606,7 +606,7 @@ padLeft(int length, string pad = ' ') .[filter] ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Γεμίζει μια συμβολοσειρά σε ένα συγκεκριμένο μήκος με μια άλλη συμβολοσειρά από δεξιά. @@ -648,8 +648,8 @@ random .[filter] Βλέπε επίσης [first |#first], [last |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Επαναλαμβάνει τη συμβολοσειρά x φορές. ```latte @@ -657,7 +657,7 @@ repeat(int count) .[filter] ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Αντικαθιστά όλες τις εμφανίσεις της συμβολοσειράς αναζήτησης με τη συμβολοσειρά αντικατάστασης. @@ -672,7 +672,7 @@ replace(string|array search, string replace = '') .[filter] ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Αντικαθιστά όλες τις εμφανίσεις σύμφωνα με την κανονική έκφραση. @@ -693,8 +693,8 @@ reverse .[filter] ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Στρογγυλοποιεί έναν αριθμό με δεδομένη ακρίβεια. ```latte @@ -707,7 +707,7 @@ round(int precision = 0) .[filter] Βλέπε επίσης [ceil |#ceil], [floor |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Εξάγει μια φέτα ενός πίνακα ή μιας συμβολοσειράς. @@ -725,8 +725,8 @@ slice(int start, int length = null, bool preserveKeys = false) .[filter] Το φίλτρο θα αναδιατάξει και θα επαναφέρει τα κλειδιά του ακέραιου πίνακα από προεπιλογή. Αυτή η συμπεριφορά μπορεί να αλλάξει θέτοντας το preserveKeys σε true. Τα αλφαριθμητικά κλειδιά διατηρούνται πάντα, ανεξάρτητα από αυτήν την παράμετρο. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- Το φίλτρο ταξινομεί τα στοιχεία ενός πίνακα ή ενός επαναλήπτη διατηρώντας τα συσχετιστικά κλειδιά τους. Όταν έχει οριστεί μια [τοπική γλώσσα |develop#locale], η ταξινόμηση ακολουθεί τους κανόνες της, εκτός αν έχει καθοριστεί μια προσαρμοσμένη συνάρτηση σύγκρισης. ```latte @@ -806,8 +806,8 @@ stripHtml .[filter] Το προκύπτον απλό κείμενο μπορεί φυσικά να περιέχει χαρακτήρες που αντιπροσωπεύουν ετικέτες HTML, για παράδειγμα το `'<p>'|stripHtml` μετατρέπεται σε `

`. Ποτέ μην εξάγετε το κείμενο που προκύπτει με `|noescape`, καθώς αυτό μπορεί να οδηγήσει σε ευπάθεια ασφαλείας. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Εξάγει μια φέτα μιας συμβολοσειράς. Αυτό το φίλτρο έχει αντικατασταθεί από ένα φίλτρο [φέτας |#slice]. ```latte @@ -815,8 +815,8 @@ substr(int offset, int length = null) .[filter] ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Μεταφράζει εκφράσεις σε άλλες γλώσσες. Για να καταστήσετε το φίλτρο διαθέσιμο, πρέπει να [ρυθμίσετε τον μεταφραστή |develop#TranslatorExtension]. Μπορείτε επίσης να χρησιμοποιήσετε τις [ετικέτες για τη μετάφραση |tags#Translation]. ```latte @@ -825,8 +825,8 @@ translate(string message, ...args) .[filter] ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Απογύμνωση αρχικών και τελικών χαρακτήρων, από προεπιλογή κενό διάστημα. ```latte @@ -835,7 +835,7 @@ trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Συντομεύει μια συμβολοσειρά στο μέγιστο δοσμένο μήκος, αλλά προσπαθεί να διατηρήσει ολόκληρες λέξεις. Αν η συμβολοσειρά είναι κομμένη, προσθέτει ελλειψογράμματα στο τέλος (αυτό μπορεί να αλλάξει με τη δεύτερη παράμετρο). diff --git a/latte/el/functions.texy b/latte/el/functions.texy index 50755b3ff0..b0465458b0 100644 --- a/latte/el/functions.texy +++ b/latte/el/functions.texy @@ -138,8 +138,8 @@ odd(int $value): bool .[method] ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Εξαγάγει μια φέτα ενός πίνακα ή μιας συμβολοσειράς. ```latte diff --git a/latte/el/template-inheritance.texy b/latte/el/template-inheritance.texy index 321ee58522..b80ad35c1b 100644 --- a/latte/el/template-inheritance.texy +++ b/latte/el/template-inheritance.texy @@ -423,7 +423,7 @@ Hi, I am Mary. Οριζόντια επαναχρησιμοποίηση `{import}` .{toc: Horizontal Reuse} ================================================================ -Η οριζόντια επαναχρησιμοποίηση είναι ένας τρίτος μηχανισμός επαναχρησιμοποίησης και κληρονομικότητας στο Latte. Σας επιτρέπει να φορτώνετε μπλοκ από άλλα πρότυπα. Είναι παρόμοιο με τη δημιουργία ενός αρχείου PHP με βοηθητικές συναρτήσεις ή ένα χαρακτηριστικό γνώρισμα. +Η οριζόντια επαναχρησιμοποίηση είναι ο τρίτος μηχανισμός επαναχρησιμοποίησης και κληρονομικότητας στο Latte. Επιτρέπει τη φόρτωση μπλοκ από άλλα πρότυπα. Είναι παρόμοιο με τη δημιουργία ενός αρχείου με βοηθητικές συναρτήσεις στην PHP και στη συνέχεια τη φόρτωσή του χρησιμοποιώντας το `require`. Ενώ η κληρονομικότητα διάταξης προτύπου είναι ένα από τα πιο ισχυρά χαρακτηριστικά του Latte, περιορίζεται στην απλή κληρονομικότητα - ένα πρότυπο μπορεί να επεκτείνει μόνο ένα άλλο πρότυπο. Η οριζόντια επαναχρησιμοποίηση είναι ένας τρόπος για την επίτευξη πολλαπλής κληρονομικότητας. @@ -455,7 +455,7 @@ Hi, I am Mary. Μπορείτε να χρησιμοποιήσετε όσες δηλώσεις `{import}` θέλετε σε οποιοδήποτε συγκεκριμένο πρότυπο. Αν δύο εισαγόμενα πρότυπα ορίζουν το ίδιο μπλοκ, το πρώτο κερδίζει. Ωστόσο, η υψηλότερη προτεραιότητα δίνεται στο κύριο πρότυπο, το οποίο μπορεί να αντικαταστήσει οποιοδήποτε εισαγόμενο μπλοκ. -Όλα τα μπλοκ που αντικαθίστανται μπορούν να συμπεριληφθούν σταδιακά εισάγοντας τα ως [γονικό μπλοκ |#parent block]: +Το περιεχόμενο των μπλοκ που έχουν αντικατασταθεί μπορεί να διατηρηθεί με την εισαγωγή του μπλοκ με τον ίδιο τρόπο όπως ένα [γονικό μπλοκ |#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/en/filters.texy b/latte/en/filters.texy index 047d2cdd4e..7b03a710aa 100644 --- a/latte/en/filters.texy +++ b/latte/en/filters.texy @@ -120,8 +120,8 @@ Filters ======= -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Filter that simplifies the listing of linear data in the form of a table. It returns an array of array with the given number of items. If you provide a second parameter this is used to fill up missing items on the last row. ```latte @@ -167,8 +167,8 @@ Inserts HTML line breaks before all newlines. ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Formats the size in bytes into a human-readable form. If the [locale |develop#locale] is set, the corresponding decimal and thousand separators are used. ```latte @@ -177,8 +177,8 @@ Formats the size in bytes into a human-readable form. If the [locale |develop#lo ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Rounds a number up to a given precision. ```latte @@ -221,8 +221,8 @@ Prints: See also [#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Returns value clamped to the inclusive range of min and max. ```latte @@ -232,8 +232,8 @@ Returns value clamped to the inclusive range of min and max. Also exists as [function|functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Converts the content to data URI scheme. It can be used to insert images into HTML or CSS without the need to link external files. Lets have an image in a variable `$img = Image::fromFile('obrazek.gif')`, then @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Requires PHP extension `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Formats the date and time according to the mask used by the PHP function [php:date]. The filter accepts the date in UNIX timestamp format, as a string, or as a `DateTimeInterface` object. ```latte @@ -276,8 +276,8 @@ Escapes a variable to be used as a parameter in URL. See also [#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Splits a string by the given delimiter and returns an array of strings. Alias for `split`. ```latte @@ -311,8 +311,8 @@ Returns the first element of array or character of string: See also [#last], [#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Rounds a number down to a given precision. ```latte @@ -335,8 +335,8 @@ Converts a first letter of value to uppercase. Requires PHP extension `mbstring` See also [#capitalize], [#lower], [#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- The filter groups the data according to different criteria. In this example, the rows in the table are grouped by the column `categoryId`. The output is an array of arrays where the key is the value in the column `categoryId`. Read the [detailed instructions |cookbook/grouping]. @@ -354,8 +354,8 @@ In this example, the rows in the table are grouped by the column `categoryId`. T See also [batch |#batch], the [group |functions#group] function, and the [iterateWhile |tags#iterateWhile] tag. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Return a string which is the concatenation of the strings in the array. Alias for `join`. ```latte @@ -370,8 +370,8 @@ You can also use an alias `join`: ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Indents a text from left by a given number of tabs or other characters which we specify in the second optional argument. Blank lines are not indented. ```latte @@ -420,7 +420,7 @@ Returns length of a string or array. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Formats date and time according to the [locale |develop#locale], ensuring consistent and localized display of time data across different languages and regions. The filter accepts the date as a UNIX timestamp, string, or `DateTimeInterface` object. @@ -537,8 +537,8 @@ Unescaped: hello Misuse of the `noescape` filter can lead to an XSS vulnerability! Never use it unless you are **absolutely sure** what you are doing and that the string you are printing comes from a trusted source. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Formats a number to a specified number of decimal places. If the [locale |develop#locale] is set, the corresponding decimal and thousand separators are used. ```latte @@ -549,8 +549,8 @@ Formats a number to a specified number of decimal places. If the [locale |develo ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- The `format` parameter allows you to define the appearance of numbers exactly according to your needs. It requires a set [locale |develop#locale]. The format consists of several special characters, the complete description of which can be found in the "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns documentation: - `0` mandatory digit, always displayed even if it's zero @@ -597,7 +597,7 @@ We can define a different format for positive and negative numbers, separated by Remember that the actual appearance of numbers may vary depending on the locale settings. For example, in some countries, a comma is used instead of a dot as a decimal separator. This filter automatically accounts for this, so you don't need to worry about it. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Pads a string to a certain length with another string from left. @@ -606,7 +606,7 @@ Pads a string to a certain length with another string from left. ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Pads a string to a certain length with another string from right. @@ -648,8 +648,8 @@ Returns random element of array or character of string: See also [#first], [#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Repeats the string x-times. ```latte @@ -657,7 +657,7 @@ Repeats the string x-times. ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Replaces all occurrences of the search string with the replacement string. @@ -672,7 +672,7 @@ Multiple replacements can be made at once: ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Replaces all occurrences according to regular expression. @@ -693,8 +693,8 @@ Reverses given string or array. ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Rounds a number to a given precision. ```latte @@ -707,7 +707,7 @@ Rounds a number to a given precision. See also [#ceil], [#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Extracts a slice of an array or a string. @@ -725,8 +725,8 @@ If length is given and is positive, then the sequence will have up to that many Filter will reorder and reset the integer array keys by default. This behaviour can be changed by setting preserveKeys to true. String keys are always preserved, regardless of this parameter. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- The filter sorts elements of an array or iterator while preserving their associative keys. When a [locale |develop#locale] is set, the sorting follows its rules unless a custom comparison function is specified. ```latte @@ -806,8 +806,8 @@ Converts HTML to plain text. That is, it removes HTML tags and converts HTML ent The resulting plain text can naturally contain characters that represent HTML tags, for example `'<p>'|stripHtml` is converted to `

`. Never output the resulting text with `|noescape`, as this may lead to a security vulnerability. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Extracts a slice of a string. This filter has been replaced by a [#slice] filter. ```latte @@ -815,8 +815,8 @@ Extracts a slice of a string. This filter has been replaced by a [#slice] filter ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- It translates expressions into other languages. To make the filter available, you need [set up translator|develop#TranslatorExtension]. You can also use the [tags for translation|tags#Translation]. ```latte @@ -825,8 +825,8 @@ It translates expressions into other languages. To make the filter available, yo ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Strip leading and trailing characters, by default whitespace. ```latte @@ -835,7 +835,7 @@ Strip leading and trailing characters, by default whitespace. ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Shortens a string to the maximum given length but tries to preserve whole words. If the string is truncated it adds ellipsis at the end (this can be changed by the second parameter). diff --git a/latte/en/functions.texy b/latte/en/functions.texy index 033c12edb9..03ed4a23c2 100644 --- a/latte/en/functions.texy +++ b/latte/en/functions.texy @@ -138,8 +138,8 @@ Checks if the given number is odd. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Extracts a slice of an array or a string. ```latte diff --git a/latte/en/template-inheritance.texy b/latte/en/template-inheritance.texy index 9e734e9382..a4518db3b7 100644 --- a/latte/en/template-inheritance.texy +++ b/latte/en/template-inheritance.texy @@ -423,7 +423,7 @@ Here are some tips for working with blocks: Horizontal Reuse `{import}` .{toc: Horizontal Reuse} ==================================================== -The horizontal reuse is a third reusability and inheritance mechanism in Latte. It allows you to load blocks from other templates. It's similar to creating a PHP file with helper functions or a trait. +Horizontal reuse is the third mechanism for reuse and inheritance in Latte. It allows loading blocks from other templates. It is similar to creating a file with helper functions in PHP and then loading it using `require`. While template layout inheritance is one of Latte's most powerful features, it is limited to simple inheritance - a template can only extend one other template. Horizontal reuse is a way to achieve multiple inheritance. @@ -455,7 +455,7 @@ The `{import}` tag should be the first template tag after `{layout}`. The templa You can use as many `{import}` statements as you want in any given template. If two imported templates define the same block, the first one wins. However, the highest priority is given to the main template, which can overwrite any imported block. -All overridden blocks can be included gradually by inserting them as [#parent block]: +The content of overwritten blocks can be preserved by inserting the block in the same way as a [#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/es/filters.texy b/latte/es/filters.texy index bd61a2f102..c3d1c9b925 100644 --- a/latte/es/filters.texy +++ b/latte/es/filters.texy @@ -120,8 +120,8 @@ Filtros .[#toc-filters] ======================= -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Filtro que simplifica el listado de datos lineales en forma de tabla. Devuelve un array de array con el número de elementos dado. Si se proporciona un segundo parámetro, éste se utiliza para rellenar los elementos que faltan en la última fila. ```latte @@ -167,8 +167,8 @@ Inserta saltos de línea HTML antes de todas las nuevas líneas. ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Formatea el tamaño en bytes de forma legible. Si se establece la [configuración regional |develop#locale], se utilizan los separadores decimales y de miles correspondientes. ```latte @@ -177,8 +177,8 @@ Formatea el tamaño en bytes de forma legible. Si se establece la [configuració ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Redondea un número hasta una precisión dada. ```latte @@ -221,8 +221,8 @@ Imprime: Véase también [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Devuelve el valor ajustado al rango inclusivo de mín y máx. ```latte @@ -232,8 +232,8 @@ Devuelve el valor ajustado al rango inclusivo de mín y máx. También existe como [función |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Convierte el contenido en un esquema URI de datos. Puede utilizarse para insertar imágenes en HTML o CSS sin necesidad de enlazar archivos externos. Tengamos una imagen en una variable `$img = Image::fromFile('obrazek.gif')`, entonces @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Requiere extensión PHP `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Formatea la fecha y la hora según la máscara utilizada por la función de PHP [php:date]. El filtro acepta la fecha en formato UNIX timestamp, como cadena o como objeto `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ Escapa una variable para ser usada como parámetro en URL. Véase también [query |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Divide una cadena por el delimitador dado y devuelve una matriz de cadenas. Alias de `split`. ```latte @@ -311,8 +311,8 @@ Devuelve el primer elemento de un array o carácter de una cadena: Ver también [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Redondea un número a una precisión dada. ```latte @@ -335,8 +335,8 @@ Convierte la primera letra de un valor a mayúsculas. Requiere la extensión PHP Vea también [capitalize |#capitalize], [lower |#lower], [upper |#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- El filtro agrupa los datos según diferentes criterios. En este ejemplo, las filas de la tabla se agrupan por la columna `categoryId`. La salida es un array de arrays donde la clave es el valor de la columna `categoryId`. Lea las [instrucciones detalladas |cookbook/grouping]. @@ -354,8 +354,8 @@ En este ejemplo, las filas de la tabla se agrupan por la columna `categoryId`. L Véase también [batch |#batch], la función [group |functions#group] y la etiqueta [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Devuelve una cadena que es la concatenación de las cadenas de la matriz. Alias de `join`. ```latte @@ -370,8 +370,8 @@ También puede utilizar un alias `join`: ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Indenta un texto desde la izquierda un número determinado de tabulaciones u otros caracteres que especifiquemos en el segundo argumento opcional. Las líneas en blanco no se sangrarán. ```latte @@ -420,7 +420,7 @@ Devuelve la longitud de una cadena o matriz. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Formatea la fecha y la hora de acuerdo con la [configuración regional |develop#locale], lo que garantiza una visualización coherente y localizada de los datos de la hora en diferentes idiomas y regiones. El filtro acepta la fecha como marca de tiempo UNIX, cadena u objeto `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello ¡El mal uso del filtro `noescape` puede llevar a una vulnerabilidad XSS! Nunca lo utilices a menos que estés **absolutamente seguro** de lo que estás haciendo y de que la cadena que estás imprimiendo proviene de una fuente de confianza. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Formatea un número con el número de decimales especificado. Si se establece la [configuración regional |develop#locale], se utilizan los separadores decimales y de miles correspondientes. ```latte @@ -549,8 +549,8 @@ Formatea un número con el número de decimales especificado. Si se establece la ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- El parámetro `format` le permite definir la apariencia de los números exactamente según sus necesidades. Requiere una [configuración regional |develop#locale] establecida. El formato consta de varios caracteres especiales, cuya descripción completa puede encontrarse en la documentación "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns: - dígito obligatorio, se muestra siempre aunque sea cero @@ -597,7 +597,7 @@ Podemos definir un formato diferente para los números positivos y negativos, se Recuerde que el aspecto real de los números puede variar en función de la configuración regional. Por ejemplo, en algunos países se utiliza una coma en lugar de un punto como separador decimal. Este filtro lo tiene en cuenta automáticamente, así que no tienes que preocuparte por ello. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Rellena una cadena de una longitud determinada con otra cadena de la izquierda. @@ -606,7 +606,7 @@ Rellena una cadena de una longitud determinada con otra cadena de la izquierda. ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Rellena una cadena de cierta longitud con otra cadena de la derecha. @@ -648,8 +648,8 @@ Devuelve un elemento aleatorio de una matriz o un carácter de una cadena: Véase también [first |#first], [last |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Repite la cadena x veces. ```latte @@ -657,7 +657,7 @@ Repite la cadena x veces. ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Sustituye todas las apariciones de la cadena de búsqueda por la cadena de sustitución. @@ -672,7 +672,7 @@ Se pueden realizar varias sustituciones a la vez: ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Reemplaza todas las ocurrencias según la expresión regular. @@ -693,8 +693,8 @@ Invierte la cadena o matriz dada. ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Redondea un número a una precisión dada. ```latte @@ -707,7 +707,7 @@ Redondea un número a una precisión dada. Ver también [ceil |#ceil], [floor |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Extrae una porción de una matriz o una cadena. @@ -725,8 +725,8 @@ Si la longitud es positiva, la secuencia tendrá hasta ese número de elementos. Filter reordenará y restablecerá las claves de la matriz de enteros por defecto. Este comportamiento puede cambiarse estableciendo preserveKeys a true. Las claves de cadena siempre se conservan, independientemente de este parámetro. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- El filtro ordena los elementos de un array o iterador conservando sus claves asociativas. Cuando se establece una [configuración regional |develop#locale], la ordenación sigue sus reglas a menos que se especifique una función de comparación personalizada. ```latte @@ -806,8 +806,8 @@ Convierte HTML en texto sin formato. Es decir, elimina las etiquetas HTML y conv El texto plano resultante puede contener naturalmente caracteres que representen etiquetas HTML, por ejemplo `'<p>'|stripHtml` se convierte en `

`. Nunca envíe el texto resultante con `|noescape`, ya que esto puede dar lugar a una vulnerabilidad de seguridad. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Extrae una porción de una cadena. Este filtro ha sido sustituido por un filtro de [trozos |#slice]. ```latte @@ -815,8 +815,8 @@ Extrae una porción de una cadena. Este filtro ha sido sustituido por un filtro ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Traduce expresiones a otros idiomas. Para que el filtro esté disponible, es necesario [configurar el traductor |develop#TranslatorExtension]. También puede utilizar las [etiquetas para la traducción |tags#Translation]. ```latte @@ -825,8 +825,8 @@ Traduce expresiones a otros idiomas. Para que el filtro esté disponible, es nec ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Elimina los caracteres iniciales y finales, por defecto los espacios en blanco. ```latte @@ -835,7 +835,7 @@ Elimina los caracteres iniciales y finales, por defecto los espacios en blanco. ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Acorta una cadena a la longitud máxima dada, pero intenta conservar las palabras enteras. Si la cadena está truncada, añade elipsis al final (esto puede cambiarse con el segundo parámetro). diff --git a/latte/es/functions.texy b/latte/es/functions.texy index 60e1e80f2b..1fc8c04e2a 100644 --- a/latte/es/functions.texy +++ b/latte/es/functions.texy @@ -138,8 +138,8 @@ Comprueba si el número dado es impar. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Extrae una porción de un array o de una cadena. ```latte diff --git a/latte/es/template-inheritance.texy b/latte/es/template-inheritance.texy index f3d3b430cc..df83b0277c 100644 --- a/latte/es/template-inheritance.texy +++ b/latte/es/template-inheritance.texy @@ -423,7 +423,7 @@ Aquí tienes algunos consejos para trabajar con bloques: Reutilización horizontal `{import}` .{toc: Horizontal Reuse} ============================================================ -La reutilización horizontal es un tercer mecanismo de reutilización y herencia en Latte. Permite cargar bloques de otras plantillas. Es similar a crear un archivo PHP con funciones de ayuda o un trait. +La reutilización horizontal es el tercer mecanismo de reutilización y herencia en Latte. Permite cargar bloques de otras plantillas. Es similar a crear un archivo con funciones de ayuda en PHP y luego cargarlo usando `require`. Aunque la herencia del diseño de las plantillas es una de las características más potentes de Latte, está limitada a la herencia simple: una plantilla sólo puede extender a otra plantilla. La reutilización horizontal es una forma de lograr una herencia múltiple. @@ -455,7 +455,7 @@ La etiqueta `{import}` debe ser la primera etiqueta de plantilla después de `{l Puede utilizar tantas expresiones `{import}` como desee en una plantilla determinada. Si dos plantillas importadas definen el mismo bloque, gana la primera. Sin embargo, la mayor prioridad la tiene la plantilla principal, que puede sobrescribir cualquier bloque importado. -Todos los bloques sobrescritos pueden incluirse gradualmente insertándolos como [bloque padre |#parent block]: +El contenido de los bloques sobrescritos puede conservarse insertando el bloque del mismo modo que un [bloque padre |#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/fr/filters.texy b/latte/fr/filters.texy index 3ed03d5d75..1ead7b4dc8 100644 --- a/latte/fr/filters.texy +++ b/latte/fr/filters.texy @@ -120,8 +120,8 @@ Filtres .[#toc-filters] ======================= -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Filtre qui simplifie l'énumération de données linéaires sous la forme d'un tableau. Il retourne un tableau de tableaux avec le nombre d'éléments donné. Si vous fournissez un second paramètre, celui-ci est utilisé pour remplir les éléments manquants sur la dernière ligne. ```latte @@ -167,8 +167,8 @@ Insère des sauts de ligne HTML avant tous les retours à la ligne. ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Formate la taille en octets sous une forme lisible par l'homme. Si la [langue locale |develop#locale] est définie, les séparateurs décimaux et de milliers correspondants sont utilisés. ```latte @@ -177,8 +177,8 @@ Formate la taille en octets sous une forme lisible par l'homme. Si la [langue lo ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Arrondit un nombre à une précision donnée. ```latte @@ -221,8 +221,8 @@ Imprime : Voir aussi [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Renvoie une valeur limitée à l'intervalle inclusif de min et max. ```latte @@ -232,8 +232,8 @@ Renvoie une valeur limitée à l'intervalle inclusif de min et max. Existe aussi en tant que [fonction |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Convertit le contenu en schéma URI de données. Il peut être utilisé pour insérer des images dans le HTML ou le CSS sans avoir besoin de lier des fichiers externes. Si nous avons une image dans une variable `$img = Image::fromFile('obrazek.gif')`, alors @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Nécessite l'extension PHP `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Formate la date et l'heure selon le masque utilisé par la fonction PHP [php:date]. Le filtre accepte la date au format timestamp UNIX, sous forme de chaîne de caractères ou d'objet `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ escapeUrl .[filter] Voir aussi [query |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Divise une chaîne de caractères par le délimiteur donné et renvoie un tableau de chaînes de caractères. Alias pour `split`. ```latte @@ -311,8 +311,8 @@ Renvoie le premier élément d'un tableau ou le premier caractère d'une chaîne Voir aussi [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Arrondit un nombre à une précision donnée. ```latte @@ -335,8 +335,8 @@ Convertit la première lettre d'une valeur en majuscule. Nécessite l'extension Voir aussi [majuscule |#capitalize], [inférieur |#lower], [supérieur |#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- Le filtre regroupe les données selon différents critères. Dans cet exemple, les lignes du tableau sont regroupées par la colonne `categoryId`. Le résultat est un tableau de tableaux dont la clé est la valeur de la colonne `categoryId`. Lisez les [instructions détaillées |cookbook/grouping]. @@ -354,8 +354,8 @@ Dans cet exemple, les lignes du tableau sont regroupées par la colonne `categor Voir aussi [batch |#batch], la fonction [group |functions#group] et la balise [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Retourne une chaîne de caractères qui est la concaténation des chaînes de caractères du tableau. Alias pour `join`. ```latte @@ -370,8 +370,8 @@ Vous pouvez également utiliser un alias `join`: ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Indente un texte à partir de la gauche d'un nombre donné de tabulations ou d'autres caractères que nous spécifions dans le deuxième argument facultatif. Les lignes vides ne sont pas indentées. ```latte @@ -420,7 +420,7 @@ Renvoie la longueur d'une chaîne ou d'un tableau. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Formate la date et l'heure en fonction de la [locale |develop#locale], ce qui garantit un affichage cohérent et localisé des données temporelles dans différentes langues et régions. Le filtre accepte la date sous forme d'horodatage UNIX, de chaîne de caractères ou d'objet `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello Une mauvaise utilisation du filtre `noescape` peut conduire à une vulnérabilité XSS ! Ne l'utilisez jamais sans être **absolument sûr** de ce que vous faites et que la chaîne que vous imprimez provient d'une source fiable. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Formate un nombre avec le nombre de décimales spécifié. Si la [locale |develop#locale] est définie, les séparateurs de décimales et de milliers correspondants sont utilisés. ```latte @@ -549,9 +549,9 @@ Formate un nombre avec le nombre de décimales spécifié. Si la [locale |develo ``` -number(string format) .[filter] -------------------------------- -Le paramètre `format` vous permet de définir l'apparence des chiffres exactement selon vos besoins. Il nécessite une [locale |develop#locale] définie. Le format se compose de plusieurs caractères spéciaux, dont la description complète se trouve dans la documentation "DecimalFormat" ::https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns +number(string $format) .[filter] +-------------------------------- +Le paramètre `format` vous permet de définir l'apparence des chiffres exactement selon vos besoins. Il nécessite une [locale |develop#locale] définie. Le format se compose de plusieurs caractères spéciaux, dont la description complète se trouve dans la documentation "DecimalFormat" ::https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns - chiffre obligatoire, toujours affiché même s'il est nul - `#` chiffre optionnel, affiché seulement si le nombre a un chiffre à cette place @@ -597,7 +597,7 @@ Nous pouvons définir un format différent pour les nombres positifs et négatif N'oubliez pas que l'apparence réelle des nombres peut varier en fonction des paramètres locaux. Par exemple, dans certains pays, une virgule est utilisée à la place d'un point comme séparateur décimal. Ce filtre en tient compte automatiquement, vous n'avez donc pas à vous en préoccuper. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Remplit une chaîne de caractères d'une certaine longueur avec une autre chaîne de caractères à partir de la gauche. @@ -606,7 +606,7 @@ Remplit une chaîne de caractères d'une certaine longueur avec une autre chaîn ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Remplir une chaîne de caractères d'une certaine longueur avec une autre chaîne de caractères de droite. @@ -648,8 +648,8 @@ Renvoie un élément aléatoire du tableau ou un caractère de la chaîne : Voir aussi [first |#first], [last |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Répète la chaîne x fois. ```latte @@ -657,7 +657,7 @@ Répète la chaîne x fois. ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Remplace toutes les occurrences de la chaîne de recherche par la chaîne de remplacement. @@ -672,7 +672,7 @@ Plusieurs remplacements peuvent être effectués en même temps : ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Remplace toutes les occurrences selon l'expression régulière. @@ -693,8 +693,8 @@ Inverse une chaîne ou un tableau donné. ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Arrondit un nombre à une précision donnée. ```latte @@ -707,7 +707,7 @@ Arrondit un nombre à une précision donnée. Voir aussi [ceil |#ceil], [floor |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Extrait une tranche d'un tableau ou d'une chaîne de caractères. @@ -725,8 +725,8 @@ Si length est donné et est positif, alors la séquence aura jusqu'à ce nombre Filter réordonnera et réinitialisera les clés du tableau d'entiers par défaut. Ce comportement peut être modifié en définissant preserveKeys à true. Les clés des chaînes de caractères sont toujours préservées, quel que soit ce paramètre. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- Le filtre trie les éléments d'un tableau ou d'un itérateur tout en préservant leurs clés associatives. Lorsqu'une [locale |develop#locale] est définie, le tri suit ses règles à moins qu'une fonction de comparaison personnalisée ne soit spécifiée. ```latte @@ -806,8 +806,8 @@ Convertit le HTML en texte brut. C'est-à-dire qu'il supprime les balises HTML e Le texte brut résultant peut naturellement contenir des caractères qui représentent des balises HTML, par exemple `'<p>'|stripHtml` est converti en `

`. N'éditez jamais le texte résultant avec `|noescape`, car cela pourrait entraîner une faille de sécurité. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Extrait une tranche d'une chaîne de caractères. Ce filtre a été remplacé par un filtre de [tranche |#slice]. ```latte @@ -815,8 +815,8 @@ Extrait une tranche d'une chaîne de caractères. Ce filtre a été remplacé pa ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Il traduit les expressions dans d'autres langues. Pour rendre ce filtre disponible, vous devez [configurer le traducteur |develop#TranslatorExtension]. Vous pouvez également utiliser les [balises pour la traduction |tags#Translation]. ```latte @@ -825,8 +825,8 @@ Il traduit les expressions dans d'autres langues. Pour rendre ce filtre disponib ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Supprime les caractères de tête et de queue, par défaut les espaces blancs. ```latte @@ -835,7 +835,7 @@ Supprime les caractères de tête et de queue, par défaut les espaces blancs. ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Raccourcit une chaîne de caractères à la longueur maximale donnée mais essaie de préserver les mots entiers. Si la chaîne est tronquée, elle ajoute des points de suspension à la fin (ceci peut être modifié par le second paramètre). diff --git a/latte/fr/functions.texy b/latte/fr/functions.texy index 921b2de556..fd412da021 100644 --- a/latte/fr/functions.texy +++ b/latte/fr/functions.texy @@ -138,8 +138,8 @@ Vérifie si le nombre donné est impair. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Extrait une tranche d'un tableau ou d'une chaîne de caractères. ```latte diff --git a/latte/fr/template-inheritance.texy b/latte/fr/template-inheritance.texy index f8dbf93934..b0a6fdeab9 100644 --- a/latte/fr/template-inheritance.texy +++ b/latte/fr/template-inheritance.texy @@ -423,7 +423,7 @@ Voici quelques conseils pour travailler avec des blocs : Réutilisation horizontale `{import}` .{toc: Horizontal Reuse} ============================================================= -La réutilisation horizontale est un troisième mécanisme de réutilisation et d'héritage dans Latte. Elle vous permet de charger des blocs à partir d'autres modèles. C'est similaire à la création d'un fichier PHP avec des fonctions d'aide ou un trait. +La réutilisation horizontale est le troisième mécanisme de réutilisation et d'héritage dans Latte. Il permet de charger des blocs à partir d'autres modèles. Il est similaire à la création d'un fichier avec des fonctions d'aide en PHP, puis à son chargement à l'aide de `require`. Bien que l'héritage de modèles soit l'une des fonctionnalités les plus puissantes de Latte, il est limité à l'héritage simple - un modèle ne peut étendre qu'un seul autre modèle. La réutilisation horizontale est un moyen d'obtenir un héritage multiple. @@ -455,7 +455,7 @@ La balise `{import}` doit être la première balise de modèle après `{layout}` Vous pouvez utiliser autant d'instructions `{import}` que vous le souhaitez dans un modèle donné. Si deux modèles importés définissent le même bloc, le premier l'emporte. Toutefois, la plus haute priorité est accordée au modèle principal, qui peut écraser tout bloc importé. -Tous les blocs remplacés peuvent être inclus progressivement en les insérant comme [bloc parent |#parent block]: +Le contenu des blocs écrasés peut être préservé en insérant le bloc de la même manière qu'un [bloc parent |#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/hu/filters.texy b/latte/hu/filters.texy index 07144f677d..fec3099615 100644 --- a/latte/hu/filters.texy +++ b/latte/hu/filters.texy @@ -120,8 +120,8 @@ Szűrők .[#toc-filters] ====================== -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Szűrő, amely leegyszerűsíti a lineáris adatok táblázatos formában történő felsorolását. Egy tömb tömböt ad vissza a megadott számú elemmel. Ha megad egy második paramétert, akkor ezt az utolsó sor hiányzó elemeinek kitöltésére használja. ```latte @@ -167,8 +167,8 @@ HTML-sorszünetet illeszt be minden újsor előtt. ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- A bájtokban megadott méretet ember által olvasható formába formázza. Ha a [nyelvi tartomány |develop#locale] be van állítva, akkor a megfelelő tizedes és ezres elválasztójeleket használja. ```latte @@ -177,8 +177,8 @@ A bájtokban megadott méretet ember által olvasható formába formázza. Ha a ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Egy számot adott pontosságra kerekít. ```latte @@ -221,8 +221,8 @@ Nyomtat: Lásd [mégeck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- A min és max tartományba szorított értéket adja vissza. ```latte @@ -232,8 +232,8 @@ A min és max tartományba szorított értéket adja vissza. Létezik [függvényként |functions#clamp] is. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- A tartalmat adat URI-sémává alakítja át. Használható képek HTML- vagy CSS-be való beillesztésére anélkül, hogy külső fájlokat kellene linkelni. Legyen egy kép egy változóban `$img = Image::fromFile('obrazek.gif')`, akkor @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO PHP-bővítményt igényel: `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ A dátumot és az időt a [php:date] PHP-funkció által használt maszknak megfelelően formázza. A szűrő elfogadja a dátumot UNIX időbélyeg formátumban, sztringként vagy `DateTimeInterface` objektumként. ```latte @@ -276,8 +276,8 @@ Kikerül egy változót, amelyet URL-ben paraméterként kell használni. Lásd még [query |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Egy karakterláncot a megadott elválasztójel alapján szétválaszt, és karakterláncok tömbjét adja vissza. Alias a `split` számára. ```latte @@ -311,8 +311,8 @@ Visszaadja a tömb első elemét vagy a karakterlánc első karakterét: Lásd még [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Egy számot adott pontosságra kerekít. ```latte @@ -335,8 +335,8 @@ Az érték első betűjét nagybetűvé alakítja. PHP-bővítményt igényel `m Lásd még [nagybetű |#capitalize], [kisbetű |#lower], [nagybetű |#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- A szűrő különböző kritériumok szerint csoportosítja az adatokat. Ebben a példában a táblázat sorai a `categoryId` oszlop alapján vannak csoportosítva. A kimenet egy tömb tömbökből álló tömb, ahol a kulcs a `categoryId` oszlopban szereplő érték. Olvassa el a [részletes utasításokat |cookbook/grouping]. @@ -354,8 +354,8 @@ Ebben a példában a táblázat sorai a `categoryId` oszlop alapján vannak csop Lásd még a [batch |#batch], a [group |functions#group] függvény és az [iterateWhile |tags#iterateWhile] tag. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Visszaad egy stringet, amely a tömbben lévő stringek összevonása. Alias a következőhöz: `join`. ```latte @@ -370,8 +370,8 @@ A `join` alias is használható: ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- A szöveg balról történő behúzása egy adott számú tabulátorral vagy más karakterrel, amelyet a második választható argumentumban adunk meg. Az üres sorok nem kerülnek behúzásra. ```latte @@ -420,7 +420,7 @@ Egy karakterlánc vagy tömb hosszát adja vissza. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- A dátum és az idő formázása a [nyelvterületnek |develop#locale] megfelelően, így biztosítva az időadatok konzisztens és lokalizált megjelenítését a különböző nyelveken és régiókban. A szűrő a dátumot UNIX időbélyegként, stringként vagy `DateTimeInterface` objektumként fogadja el. @@ -537,8 +537,8 @@ Unescaped: hello A `noescape` szűrő visszaélése XSS sebezhetőséghez vezethet! Soha ne használja, hacsak nem **teljesen biztos** abban, hogy mit csinál, és hogy a nyomtatott karakterlánc megbízható forrásból származik. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Egy számot a megadott számú tizedesjegyig formáz. Ha a [nyelvi terület |develop#locale] be van állítva, akkor a megfelelő tizedes és ezres elválasztójeleket használja. ```latte @@ -549,8 +549,8 @@ Egy számot a megadott számú tizedesjegyig formáz. Ha a [nyelvi terület |dev ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- A `format` paraméter lehetővé teszi, hogy a számok megjelenését pontosan az Ön igényei szerint határozza meg. Beállított [nyelvterületet |develop#locale] igényel. A formátum több speciális karakterből áll, amelyek teljes leírása a "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns dokumentációban található: - kötelező számjegy, mindig megjelenik, még akkor is, ha nulla. @@ -597,7 +597,7 @@ A pozitív és negatív számok számára eltérő formátumot határozhatunk me Ne feledje, hogy a számok tényleges megjelenése a helyi beállításoktól függően változhat. Egyes országokban például pont helyett vesszőt használnak tizedesválasztóként. Ez a szűrő automatikusan figyelembe veszi ezt, így nem kell aggódnia emiatt. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Egy adott hosszúságú karakterláncot balról egy másik karakterlánccal kitölti. @@ -606,7 +606,7 @@ Egy adott hosszúságú karakterláncot balról egy másik karakterlánccal kit ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Egy adott hosszúságú karakterláncot egy másik, jobbról jövő karakterlánccal kitölti. @@ -648,8 +648,8 @@ Visszaadja a tömb véletlenszerű elemét vagy a karakterlánc karakterét: Lásd még [first |#first], [last |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Megismétli a karakterláncot x-szer. ```latte @@ -657,7 +657,7 @@ Megismétli a karakterláncot x-szer. ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- A keresett karakterlánc minden előfordulását helyettesítő karakterlánccal helyettesíti. @@ -672,7 +672,7 @@ Egyszerre több csere is elvégezhető: ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Az összes előfordulást helyettesíti a reguláris kifejezésnek megfelelően. @@ -693,8 +693,8 @@ Megfordítja a megadott karakterláncot vagy tömböt. ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Egy számot adott pontosságra kerekít. ```latte @@ -707,7 +707,7 @@ Egy számot adott pontosságra kerekít. Lásd még [ceil |#ceil], [floor |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Egy tömb vagy egy karakterlánc egy szeletének kivonása. @@ -725,8 +725,8 @@ Ha a length értéke pozitív, akkor a szekvencia legfeljebb ennyi elemet tartal A Filter alapértelmezés szerint átrendezi és visszaállítja az integer tömb kulcsát. Ez a viselkedés megváltoztatható a preserveKeys true értékre állításával. A string kulcsok ettől a paramétertől függetlenül mindig megmaradnak. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- A szűrő egy tömb vagy iterátor elemeit rendezi, miközben megőrzi az asszociatív kulcsokat. Ha egy [területi |develop#locale] beállítás van megadva, a rendezés annak szabályait követi, kivéve, ha egyéni összehasonlító függvény van megadva. ```latte @@ -806,8 +806,8 @@ A HTML-t egyszerű szöveggé alakítja. Vagyis eltávolítja a HTML-címkéket, Az így kapott sima szöveg természetesen tartalmazhat olyan karaktereket, amelyek HTML-címkéket képviselnek, például a `'<p>'|stripHtml` átváltozik `

`. Soha ne adja ki az eredményül kapott szöveget a `|noescape` címmel, mivel ez biztonsági réshez vezethet. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Kivonja egy karakterlánc egy szeletét. Ezt a szűrőt felváltotta a [slice |#slice] szűrő. ```latte @@ -815,8 +815,8 @@ Kivonja egy karakterlánc egy szeletét. Ezt a szűrőt felváltotta a [slice |# ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Kifejezéseket fordít le más nyelvekre. Ahhoz, hogy a szűrő elérhető legyen, be kell [állítania a fordítót |develop#TranslatorExtension]. A [címkéket |tags#Translation] is használhatja [a fordításhoz |tags#Translation]. ```latte @@ -825,8 +825,8 @@ Kifejezéseket fordít le más nyelvekre. Ahhoz, hogy a szűrő elérhető legye ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Vezető és követő karakterek eltávolítása, alapértelmezés szerint szóköz. ```latte @@ -835,7 +835,7 @@ Vezető és követő karakterek eltávolítása, alapértelmezés szerint szók ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Rövidíti a karakterláncot a megadott maximális hosszúságra, de megpróbálja megőrizni az egész szavakat. Ha a karakterlánc csonkolva van, ellipszist ad a végére (ez a második paraméterrel módosítható). diff --git a/latte/hu/functions.texy b/latte/hu/functions.texy index b602b29678..4fc3da164d 100644 --- a/latte/hu/functions.texy +++ b/latte/hu/functions.texy @@ -138,8 +138,8 @@ Ellenőrzi, hogy a megadott szám páratlan-e. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Kivonja egy tömb vagy egy karakterlánc egy szeletét. ```latte diff --git a/latte/hu/template-inheritance.texy b/latte/hu/template-inheritance.texy index 561a7bae06..bed94f1ba5 100644 --- a/latte/hu/template-inheritance.texy +++ b/latte/hu/template-inheritance.texy @@ -423,7 +423,7 @@ Tippek .[#toc-tips] Vízszintes újrafelhasználás `{import}` .{toc: Horizontal Reuse} =============================================================== -A horizontális újrafelhasználás egy harmadik újrafelhasználhatósági és öröklési mechanizmus a Latte-ban. Lehetővé teszi, hogy blokkokat töltsön be más sablonokból. Ez hasonló ahhoz, mintha egy PHP-fájlt hoznál létre segédfüggvényekkel vagy egy tulajdonsággal. +A horizontális újrafelhasználás a Latte harmadik újrafelhasználási és öröklési mechanizmusa. Lehetővé teszi a blokkok betöltését más sablonokból. Ez hasonló ahhoz, mintha PHP-ben létrehoznánk egy fájlt segédfüggvényekkel, majd betöltenénk a `require` segítségével. Bár a sablonok elrendezésének öröklése a Latte egyik legerősebb funkciója, az egyszerű öröklésre korlátozódik - egy sablon csak egy másik sablont terjeszthet ki. A horizontális újrafelhasználás egy módja a többszörös öröklés elérésének. @@ -455,7 +455,7 @@ A `{import}` címkének kell lennie az első sabloncímkének a `{layout}` után Annyi `{import}` utasítást használhat egy adott sablonban, amennyit csak akar. Ha két importált sablon ugyanazt a blokkot definiálja, akkor az első nyer. A legnagyobb prioritást azonban a fő sablon kapja, amely bármelyik importált blokkot felülírhatja. -Minden felülírt blokk fokozatosan bevonható, ha [szülői blokkként |#parent block] beillesztjük őket: +A felülírt blokkok tartalma megőrizhető a blokknak a [szülő blokkhoz |#parent block] hasonló módon történő beillesztésével: ```latte {layout 'layout.latte'} diff --git a/latte/it/filters.texy b/latte/it/filters.texy index 8b10d13d53..2ec0315540 100644 --- a/latte/it/filters.texy +++ b/latte/it/filters.texy @@ -120,8 +120,8 @@ Filtri .[#toc-filters] ====================== -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Filtro che semplifica l'elencazione di dati lineari sotto forma di tabella. Restituisce un array di array con il numero di elementi indicato. Se si fornisce un secondo parametro, questo viene utilizzato per riempire gli elementi mancanti nell'ultima riga. ```latte @@ -167,8 +167,8 @@ Inserisce le interruzioni di riga HTML prima di tutti i newline. ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Formatta la dimensione in byte in una forma leggibile. Se il [locale |develop#locale] è impostato, vengono utilizzati i corrispondenti separatori decimali e delle migliaia. ```latte @@ -177,8 +177,8 @@ Formatta la dimensione in byte in una forma leggibile. Se il [locale |develop#lo ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Arrotonda un numero fino a una determinata precisione. ```latte @@ -221,8 +221,8 @@ Stampa: Vedere anche [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Restituisce un valore limitato all'intervallo inclusivo di min e max. ```latte @@ -232,8 +232,8 @@ Restituisce un valore limitato all'intervallo inclusivo di min e max. Esiste anche come [funzione |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Converte il contenuto in uno schema URI di dati. Può essere usato per inserire immagini in HTML o CSS senza la necessità di collegare file esterni. Poniamo di avere un'immagine in una variabile `$img = Image::fromFile('obrazek.gif')`, allora @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Richiede l'estensione PHP `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Formatta la data e l'ora secondo la maschera utilizzata dalla funzione PHP [php:date]. Il filtro accetta la data in formato UNIX timestamp, come stringa o come oggetto `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ Permette di separare una variabile da usare come parametro nell'URL. Vedere anche [query |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Divide una stringa in base al delimitatore dato e restituisce un array di stringhe. Alias di `split`. ```latte @@ -311,8 +311,8 @@ Restituisce il primo elemento di una matrice o un carattere di una stringa: Vedere anche [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Arrotonda un numero fino a una determinata precisione. ```latte @@ -335,8 +335,8 @@ Converte la prima lettera di un valore in maiuscolo. Richiede l'estensione PHP ` Vedere anche [capitalize |#capitalize], [lower |#lower], [upper |#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- Il filtro raggruppa i dati in base a diversi criteri. In questo esempio, le righe della tabella sono raggruppate in base alla colonna `categoryId`. L'output è un array di array in cui la chiave è il valore della colonna `categoryId`. Leggete le [istruzioni dettagliate |cookbook/grouping]. @@ -354,8 +354,8 @@ In questo esempio, le righe della tabella sono raggruppate in base alla colonna Vedere anche [batch |#batch], la funzione [group |functions#group] e il tag [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Restituisce una stringa che è la concatenazione delle stringhe dell'array. Alias di `join`. ```latte @@ -370,8 +370,8 @@ Restituisce una stringa che è la concatenazione delle stringhe dell'array. Alia ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Rientra un testo da sinistra di un determinato numero di tabulazioni o di altri caratteri, specificati nel secondo argomento opzionale. Le righe vuote non sono rientrate. ```latte @@ -420,7 +420,7 @@ Restituisce la lunghezza di una stringa o di un array. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Formatta la data e l'ora in base al [locale |develop#locale], garantendo una visualizzazione coerente e localizzata dei dati temporali in diverse lingue e regioni. Il filtro accetta la data come timestamp UNIX, stringa o oggetto `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello L'uso improprio del filtro `noescape` può portare a una vulnerabilità XSS! Non utilizzatelo mai a meno che non siate **assolutamente sicuri** di quello che state facendo e che la stringa che state stampando provenga da una fonte affidabile. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Formatta un numero con un numero specificato di cifre decimali. Se il [locale |develop#locale] è impostato, vengono utilizzati i corrispondenti separatori decimali e delle migliaia. ```latte @@ -549,8 +549,8 @@ Formatta un numero con un numero specificato di cifre decimali. Se il [locale |d ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- Il parametro `format` consente di definire l'aspetto dei numeri esattamente secondo le proprie esigenze. Richiede un [locale |develop#locale] impostato. Il formato consiste in diversi caratteri speciali, la cui descrizione completa si trova nella documentazione "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns: - cifra obbligatoria, sempre visualizzata anche se è zero @@ -597,7 +597,7 @@ Possiamo definire un formato diverso per i numeri positivi e negativi, separati Ricordate che l'aspetto effettivo dei numeri può variare a seconda delle impostazioni locali. Ad esempio, in alcuni Paesi si usa una virgola al posto del punto come separatore decimale. Questo filtro ne tiene conto automaticamente, quindi non è necessario preoccuparsene. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Imbottisce una stringa di una certa lunghezza con un'altra stringa a partire da sinistra. @@ -606,7 +606,7 @@ Imbottisce una stringa di una certa lunghezza con un'altra stringa a partire da ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Imbottisce una stringa di una certa lunghezza con un'altra stringa proveniente da destra. @@ -648,8 +648,8 @@ Restituisce un elemento casuale di una matrice o un carattere di una stringa: Vedere anche [primo |#first], [ultimo |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Ripete la stringa x volte. ```latte @@ -657,7 +657,7 @@ Ripete la stringa x volte. ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Sostituisce tutte le occorrenze della stringa di ricerca con la stringa di sostituzione. @@ -672,7 +672,7 @@ Sostituisce tutte le occorrenze della stringa di ricerca con la stringa di sosti ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Sostituisce tutte le occorrenze in base all'espressione regolare. @@ -693,8 +693,8 @@ Inverte la stringa o l'array dato. ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Arrotonda un numero a una determinata precisione. ```latte @@ -707,7 +707,7 @@ Arrotonda un numero a una determinata precisione. Vedere anche [ceil |#ceil], [floor |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Estrae una fetta di un array o di una stringa. @@ -725,8 +725,8 @@ Se la lunghezza è data ed è positiva, la sequenza conterrà fino a quel numero Per impostazione predefinita, Filter riordina e reimposta le chiavi dell'array di interi. Questo comportamento può essere modificato impostando preserveKeys su true. Le chiavi stringa vengono sempre conservate, indipendentemente da questo parametro. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- Il filtro ordina gli elementi di un array o di un iteratore preservandone le chiavi associative. Quando viene impostato un [locale |develop#locale], l'ordinamento segue le sue regole, a meno che non venga specificata una funzione di confronto personalizzata. ```latte @@ -806,8 +806,8 @@ Converte l'HTML in testo normale. Ossia, rimuove i tag HTML e converte le entit Il testo normale risultante può naturalmente contenere caratteri che rappresentano tag HTML, ad esempio `'<p>'|stripHtml` viene convertito in `

`. Non inviare mai il testo risultante con `|noescape`, perché ciò potrebbe causare una vulnerabilità della sicurezza. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Estrae una fetta di una stringa. Questo filtro è stato sostituito da un filtro [a fetta |#slice]. ```latte @@ -815,8 +815,8 @@ Estrae una fetta di una stringa. Questo filtro è stato sostituito da un filtro ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Traduce le espressioni in altre lingue. Per rendere disponibile il filtro, è necessario [impostare il traduttore |develop#TranslatorExtension]. Si possono anche usare i [tag per la traduzione |tags#Translation]. ```latte @@ -825,8 +825,8 @@ Traduce le espressioni in altre lingue. Per rendere disponibile il filtro, è ne ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Spogliare i caratteri iniziali e finali, per impostazione predefinita gli spazi bianchi. ```latte @@ -835,7 +835,7 @@ Spogliare i caratteri iniziali e finali, per impostazione predefinita gli spazi ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Accorcia una stringa alla lunghezza massima indicata, ma cerca di conservare le parole intere. Se la stringa è troncata, aggiunge un'ellissi alla fine (questo può essere cambiato con il secondo parametro). diff --git a/latte/it/functions.texy b/latte/it/functions.texy index eb6639e5cf..fcab6f3beb 100644 --- a/latte/it/functions.texy +++ b/latte/it/functions.texy @@ -138,8 +138,8 @@ Controlla se il numero dato è dispari. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Estrae una fetta di un array o di una stringa. ```latte diff --git a/latte/it/template-inheritance.texy b/latte/it/template-inheritance.texy index be6be739eb..3e2123efa0 100644 --- a/latte/it/template-inheritance.texy +++ b/latte/it/template-inheritance.texy @@ -423,7 +423,7 @@ Ecco alcuni suggerimenti per lavorare con i blocchi: Riutilizzo orizzontale `{import}` .{toc: Horizontal Reuse} ========================================================== -Il riutilizzo orizzontale è un terzo meccanismo di riusabilità ed ereditarietà di Latte. Permette di caricare blocchi da altri modelli. È simile alla creazione di un file PHP con funzioni di aiuto o un tratto. +Il riutilizzo orizzontale è il terzo meccanismo di riutilizzo ed ereditarietà di Latte. Permette di caricare blocchi da altri modelli. È simile alla creazione di un file con funzioni di aiuto in PHP e al suo caricamento tramite `require`. L'ereditarietà dei layout dei modelli è una delle caratteristiche più potenti di Latte, ma è limitata all'ereditarietà semplice: un modello può estendere solo un altro modello. Il riutilizzo orizzontale è un modo per ottenere l'ereditarietà multipla. @@ -455,7 +455,7 @@ Il tag `{import}` deve essere il primo tag del template dopo `{layout}`. Il nome Si possono usare tutte le dichiarazioni `{import}` che si vogliono in un dato template. Se due template importati definiscono lo stesso blocco, vince il primo. Tuttavia, la massima priorità è data al modello principale, che può sovrascrivere qualsiasi blocco importato. -Tutti i blocchi sovrascritti possono essere inclusi gradualmente inserendoli come [blocco padre |#parent block]: +Il contenuto dei blocchi sovrascritti può essere conservato inserendo il blocco nello stesso modo di un [blocco padre |#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/ja/filters.texy b/latte/ja/filters.texy index 5b79b19ecf..d34cbb3761 100644 --- a/latte/ja/filters.texy +++ b/latte/ja/filters.texy @@ -120,8 +120,8 @@ $latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $ ===================== -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ 線形データの表形式でのリストアップを簡略化するフィルタです。これは、指定された数の項目を持つ配列の配列を返します。第2パラメータを指定した場合、これは最終行の欠落した項目を埋めるために使用されます。 ```latte @@ -167,8 +167,8 @@ breakLines .[filter] ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- バイト単位のサイズを人間が読める形に整形する。[ロケールが |develop#locale]設定されている場合は、対応する10進数と1000のセパレータが使用される。 ```latte @@ -177,8 +177,8 @@ bytes(int precision = 2) .[filter] ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- 数値を指定された精度で丸める。 ```latte @@ -221,8 +221,8 @@ URLのサニタイズ処理を行います。変数が Web URL (つまり HTTP/H [nocheckも |#nocheck]参照してください。 -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- minとmaxの包括的な範囲にクランプされた値を返す。 ```latte @@ -232,8 +232,8 @@ minとmaxの包括的な範囲にクランプされた値を返す。 [関数としても |functions#clamp]存在する。 -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- コンテンツをデータURIスキームに変換します。外部ファイルへのリンクを必要とせず、HTMLやCSSに画像を挿入するのに利用できます。 変数`$img = Image::fromFile('obrazek.gif')` に画像を入れておくとします。 @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO PHP 拡張機能が必要です`fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ PHP の関数[php:date] で使われるマスクに従って、日付と時刻をフォーマットします。このフィルタは、UNIX タイムスタンプ形式、文字列、あるいは`DateTimeInterface` オブジェクトとして日付を受け取ります。 ```latte @@ -276,8 +276,8 @@ URLのパラメータとして使用される変数をエスケープします [クエリも |#query]参照。 -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- 文字列を指定された区切り文字で分割し、文字列の配列を返します。`split` のエイリアス . ```latte @@ -311,8 +311,8 @@ first .[filter] [last |#last],[randomも |#random]参照のこと。 -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- 与えられた精度で数値を丸める。 ```latte @@ -335,8 +335,8 @@ firstUpper .[filter] [capitalize |#capitalize],[lower |#lower],[upper |#upper] も参照ください。 -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- フィルタは、異なる基準に従ってデータをグループ化します。 この例では、テーブルの行はカラム`categoryId` によってグループ化されています。出力は、列`categoryId` の値をキーとする配列の配列です。[詳細な |cookbook/grouping]説明をお読みください。 @@ -354,8 +354,8 @@ group(string|int|\Closure by): array .[filter]{data-version:3.0.16} [バッチ |#batch]、[group |functions#group]関数、[iterateWhile |tags#iterateWhile]タグも参照してください。 -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- 配列中の文字列を連結した文字列を返します。`join` のエイリアス. ```latte @@ -370,8 +370,8 @@ implode(string glue = '') .[filter] ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- テキストを左から、オプションの第2引数で指定した数のタブまたは他の文字でインデントします。空白行はインデントされません。 ```latte @@ -420,7 +420,7 @@ length .[filter] ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- [ロケールにしたがって |develop#locale]日付と時刻をフォーマットし、異なる言語や地域間で時刻データの一貫したローカライズされた表示を保証します。このフィルタは、UNIXタイムスタンプ、文字列、`DateTimeInterface` オブジェクトとして日付を受け付けます。 @@ -537,8 +537,8 @@ Unescaped: hello `noescape` フィルタを誤用すると、XSS 脆弱性につながる可能性があります!自分が何をしているのか、そして印刷する文字列が信頼できるソースから来たものであるという **絶対** の確信がない限り、決してこれを使わないでください。 -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- 指定した小数点以下の桁数で数値をフォーマットする。[ロケールが |develop#locale]設定されている場合は、対応する小数点以下の桁区切り文字が使用される。 ```latte @@ -549,8 +549,8 @@ number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[fil ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- `format` パラメータを使用すると、ニーズに合わせて数字の外観を正確に定義することができる。これには[ロケールが |develop#locale]必要である。この書式はいくつかの特殊文字で構成されており、その完全な説明は"DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patternsドキュメントにあります: - 必須桁。ゼロであっても常に表示される。 @@ -597,7 +597,7 @@ number(string format) .[filter] 数字の実際の見た目は、ロケールの設定によって異なる可能性があることを覚えておいてください。例えば、ある国では小数点以下の区切り文字としてドットの代わりにカンマが使われます。このフィルターは自動的にこれを考慮しますので、心配する必要はありません。 -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- 指定された長さの文字列を、左から別の文字列で埋め尽くします。 @@ -606,7 +606,7 @@ padLeft(int length, string pad = ' ') .[filter] ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ ある文字列を右から別の文字列で一定の長さになるように詰めます。 @@ -648,8 +648,8 @@ random .[filter] [first |#first],[last |#last] も参照してください。 -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- 文字列をx回繰り返す。 ```latte @@ -657,7 +657,7 @@ repeat(int count) .[filter] ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- 検索文字列を置換文字列で置き換えます。 @@ -672,7 +672,7 @@ replace(string|array search, string replace = '') .[filter] ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- 正規表現にしたがって、すべての出現箇所を置き換えます。 @@ -693,8 +693,8 @@ reverse .[filter] ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- 指定された精度で数値を丸めます。 ```latte @@ -707,7 +707,7 @@ round(int precision = 0) .[filter] [ceil |#ceil],[floorも |#floor]参照のこと。 -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ 配列または文字列のスライスを抽出します。 @@ -725,8 +725,8 @@ length が正の値であれば,シーケンスはその要素数までとな Filter は、デフォルトで整数配列のキーを並べ替え、リセットします。この挙動は、preserveKeys を true に設定することで変更可能です。文字列のキーは、このパラメータに関係なく、常に保存されます。 -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- フィルタは、配列やイテレータの要素を連想キーを保持したままソートします。[ロケールが |develop#locale]設定されている場合は、独自の比較関数が指定されていない限り その規則に従います。 ```latte @@ -806,8 +806,8 @@ HTMLをプレーンテキストに変換する。つまり、HTMLタグを削除 変換後のプレーンテキストには、当然ながらHTMLタグを表す文字が含まれます。例えば、`'<p>'|stripHtml` は、次のように変換されます。 `

`.セキュリティ上の脆弱性があるため、結果のテキストを`|noescape` で出力することは絶対に避けてください。 -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ 文字列のスライスを抽出する。このフィルタは、[スライス |#slice]フィルタに置き換えられました。 ```latte @@ -815,8 +815,8 @@ substr(int offset, int length = null) .[filter] ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- 式を他の言語に翻訳します。このフィルタを利用できるようにするには、[トランスレータを |develop#TranslatorExtension]設定する必要があります。また、[翻訳用のタグを |tags#Translation]使用することもできます。 ```latte @@ -825,8 +825,8 @@ translate(string message, ...args) .[filter] ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ 先頭と末尾の文字を除去します。デフォルトは空白文字です。 ```latte @@ -835,7 +835,7 @@ trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- 文字列を与えられた最大の長さまで短縮するが、単語全体を保存しようとする。文字列が切り詰められた場合、最後に省略記号を付加します (これは第2引数で変更可能です)。 diff --git a/latte/ja/functions.texy b/latte/ja/functions.texy index 10aa44a32d..075b624a34 100644 --- a/latte/ja/functions.texy +++ b/latte/ja/functions.texy @@ -138,8 +138,8 @@ odd(int $value): bool .[method] ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- 配列または文字列のスライスを抽出します。 ```latte diff --git a/latte/ja/template-inheritance.texy b/latte/ja/template-inheritance.texy index 6ed251797f..026d023a13 100644 --- a/latte/ja/template-inheritance.texy +++ b/latte/ja/template-inheritance.texy @@ -423,7 +423,7 @@ Hi, I am Mary. 水平方向の再利用`{import}` .{toc: Horizontal Reuse} =========================================== -水平方向の再利用はLatteの3つ目の再利用性・継承の仕組みです。他のテンプレートからブロックを読み込むことができるようになります。ヘルパー関数やtraitでPHPファイルを作成するのと同じようなものです。 +水平方向の再利用は、Latteにおける再利用と継承の3番目のメカニズムです。他のテンプレートからブロックを読み込むことができます。PHPでヘルパー関数を含むファイルを作成し、`require` を使って読み込むのと似ています。 テンプレートレイアウトの継承はLatteの最も強力な機能の一つですが、単純な継承に限られています。水平方向の再利用は、複数の継承を実現する方法です。 @@ -455,7 +455,7 @@ Hi, I am Mary. `{import}` ステートメントは、任意のテンプレートで好きなだけ使用することができます。インポートされた2つのテンプレートが同じブロックを定義している場合、先に定義されたものが優先されます。ただし、メイン・テンプレートが最も優先され、インポートされたブロックを上書きすることができます。 -上書きされたブロックはすべて、[親ブロックとして |#parent block]挿入することで、徐々に含めることができます。 +上書きされたブロックの内容は、[親ブロックと |#parent block]同じようにブロックを挿入することで保持できる: ```latte {layout 'layout.latte'} diff --git a/latte/pl/filters.texy b/latte/pl/filters.texy index 378e117c94..06318f6e6c 100644 --- a/latte/pl/filters.texy +++ b/latte/pl/filters.texy @@ -120,8 +120,8 @@ Filtry .[#toc-filters] ====================== -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Filtr, który upraszcza wyprowadzenie danych liniowych do tabeli. Zwraca tablicę pól o określonej liczbie elementów. Jeśli określisz drugi parametr, jest on używany do wypełnienia brakujących elementów w ostatnim wierszu. ```latte @@ -167,8 +167,8 @@ Wstawia podziały linii HTML przed wszystkimi liniami nowymi. ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Formatuje rozmiar w bajtach do postaci czytelnej dla człowieka. Jeśli ustawione są [ustawienia regionalne |develop#locale], używane są odpowiednie separatory dziesiętne i tysięczne. ```latte @@ -177,8 +177,8 @@ Formatuje rozmiar w bajtach do postaci czytelnej dla człowieka. Jeśli ustawion ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Zaokrągla liczbę do określonej precyzji. ```latte @@ -221,8 +221,8 @@ Wydruki: Zobacz również [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Zwraca wartość zaciśniętą na inkluzywnym zakresie min i max. ```latte @@ -232,8 +232,8 @@ Zwraca wartość zaciśniętą na inkluzywnym zakresie min i max. Istnieje również jako [funkcja |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Konwertuje zawartość na schemat URI danych. Może być używany do wstawiania obrazów do HTML lub CSS bez potrzeby łączenia plików zewnętrznych. Załóżmy, że mamy obrazek w zmiennej `$img = Image::fromFile('obrazek.gif')`, to @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Wymaga rozszerzenia PHP `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Formatuje datę i godzinę zgodnie z maską używaną przez funkcję PHP [php:date]. Filtr akceptuje datę w formacie znacznika czasu UNIX, jako ciąg znaków lub jako obiekt `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ Ucieka od zmiennej, która ma być użyta jako parametr w URL. Zobacz również [zapytanie |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Rozdziela łańcuch przez podany delimiter i zwraca tablicę łańcuchów. Alias dla `split`. ```latte @@ -311,8 +311,8 @@ Zwraca pierwszy element tablicy lub znak łańcucha: Zobacz także [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Zaokrągla liczbę do określonej dokładności. ```latte @@ -335,8 +335,8 @@ Konwertuje pierwszą literę wartości na duże. Wymaga rozszerzenia PHP `mbstri Zobacz także [capitalize |#capitalize], [lower |#lower], [upper |#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- Filtr grupuje dane według różnych kryteriów. W tym przykładzie wiersze w tabeli są pogrupowane według kolumny `categoryId`. Wynikiem jest tablica tablic, w której kluczem jest wartość w kolumnie `categoryId`. Przeczytaj [szczegółowe instrukcje |cookbook/grouping]. @@ -354,8 +354,8 @@ W tym przykładzie wiersze w tabeli są pogrupowane według kolumny `categoryId` Zobacz także [batch |#batch], funkcję [group |functions#group] i znacznik [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Zwraca łańcuch będący konkatenacją łańcuchów w tablicy. Alias dla `join`. ```latte @@ -370,8 +370,8 @@ Możesz również użyć aliasu `join`: ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Wcina tekst od lewej strony o określoną liczbę tabulatorów lub innych znaków, które podajemy w drugim opcjonalnym argumencie. Puste linie nie są wcięte. ```latte @@ -420,7 +420,7 @@ Zwraca długość łańcucha lub tablicy. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Formatuje datę i godzinę zgodnie z [ustawieniami regionalnymi |develop#locale], zapewniając spójne i zlokalizowane wyświetlanie danych czasu w różnych językach i regionach. Filtr akceptuje datę jako znacznik czasu UNIX, ciąg znaków lub obiekt `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello Niewłaściwe użycie filtra `noescape` może prowadzić do luki XSS! Nigdy nie używaj go, jeśli nie jesteś **absolutnie pewien** tego, co robisz i że drukowany ciąg pochodzi z zaufanego źródła. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Formatuje liczbę do określonej liczby miejsc dziesiętnych. Jeśli ustawione są [ustawienia regionalne |develop#locale], używane są odpowiednie separatory dziesiętne i tysięczne. ```latte @@ -549,8 +549,8 @@ Formatuje liczbę do określonej liczby miejsc dziesiętnych. Jeśli ustawione s ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- Parametr `format` pozwala zdefiniować wygląd liczb dokładnie według własnych potrzeb. Wymaga ustawionych [ustawień regionalnych |develop#locale]. Format składa się z kilku znaków specjalnych, których pełny opis można znaleźć w dokumentacji "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns: - cyfra obowiązkowa, wyświetlana zawsze, nawet jeśli jest zerem @@ -597,7 +597,7 @@ Możemy zdefiniować inny format dla liczb dodatnich i ujemnych, oddzielonych zn Należy pamiętać, że rzeczywisty wygląd liczb może się różnić w zależności od ustawień regionalnych. Na przykład w niektórych krajach przecinek jest używany zamiast kropki jako separator dziesiętny. Ten filtr automatycznie to uwzględnia, więc nie musisz się tym martwić. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Przekłada łańcuch o określonej długości z innym łańcuchem od lewej. @@ -606,7 +606,7 @@ Przekłada łańcuch o określonej długości z innym łańcuchem od lewej. ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Wyrównuje ciąg do pewnej długości z innym ciągiem od prawej. @@ -648,8 +648,8 @@ Zwraca losowy element tablicy lub znak łańcucha: Zobacz również [first |#first], [last |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Powtarza łańcuch x razy. ```latte @@ -657,7 +657,7 @@ Powtarza łańcuch x razy. ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Zastępuje wszystkie wystąpienia szukanego łańcucha łańcuchem zastępczym. @@ -672,7 +672,7 @@ Można dokonać wielu zamian jednocześnie: ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Zastępuje wszystkie wystąpienia zgodnie z wyrażeniem regularnym. @@ -693,8 +693,8 @@ Odwraca podany łańcuch lub tablicę. ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Zaokrągla liczbę do określonej precyzji. ```latte @@ -707,7 +707,7 @@ Zaokrągla liczbę do określonej precyzji. Zobacz także [ceil |#ceil], [floor |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Wyodrębnia fragment tablicy lub ciągu znaków. @@ -725,8 +725,8 @@ Jeśli podana jest długość i jest ona dodatnia, to sekwencja będzie miała d Filtr domyślnie zmieni kolejność i wyzeruje klucze tablicy liczb całkowitych. To zachowanie można zmienić ustawiając preserveKeys na true. Klucze łańcuchowe są zawsze zachowywane, niezależnie od tego parametru. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- Filtr sortuje elementy tablicy lub iteratora, zachowując ich klucze asocjacyjne. Gdy ustawione są [ustawienia regionalne |develop#locale], sortowanie odbywa się zgodnie z ich regułami, chyba że określono niestandardową funkcję porównania. ```latte @@ -806,8 +806,8 @@ Konwertuje HTML na zwykły tekst. To znaczy, usuwa znaczniki HTML i konwertuje e Wynikowy zwykły tekst może naturalnie zawierać znaki reprezentujące znaczniki HTML, na przykład `'<p>'|stripHtml` jest konwertowany na `

`. Nigdy nie wyprowadzaj wynikowego tekstu za pomocą `|noescape`, ponieważ może to prowadzić do luki w zabezpieczeniach. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Wyodrębnia fragment łańcucha. Ten filtr został zastąpiony przez filtr [slice |#slice]. ```latte @@ -815,8 +815,8 @@ Wyodrębnia fragment łańcucha. Ten filtr został zastąpiony przez filtr [slic ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Tłumaczy wyrażenia na inne języki. Aby udostępnić ten filtr, musisz skonfigurować [translator |develop#TranslatorExtension]. Możesz również użyć [tagów do tłumaczenia |tags#Translation]. ```latte @@ -825,8 +825,8 @@ Tłumaczy wyrażenia na inne języki. Aby udostępnić ten filtr, musisz skonfig ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Strip leading and trailing characters, by default whitespace. ```latte @@ -835,7 +835,7 @@ Strip leading and trailing characters, by default whitespace. ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Skraca łańcuch do maksymalnej podanej długości, ale stara się zachować całe słowa. Jeśli łańcuch jest obcięty, dodaje na końcu elipsę (można to zmienić drugim parametrem). diff --git a/latte/pl/functions.texy b/latte/pl/functions.texy index 17d41e11e2..0f7ae368e7 100644 --- a/latte/pl/functions.texy +++ b/latte/pl/functions.texy @@ -138,8 +138,8 @@ Sprawdza, czy podana liczba jest nieparzysta. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Wyodrębnia część tablicy lub łańcucha. ```latte diff --git a/latte/pl/template-inheritance.texy b/latte/pl/template-inheritance.texy index 25483c9fab..7ad283d542 100644 --- a/latte/pl/template-inheritance.texy +++ b/latte/pl/template-inheritance.texy @@ -423,7 +423,7 @@ Kilka wskazówek dotyczących pracy z klockami: Ponowne wykorzystanie poziome `{import}` .{toc: Horizontal Reuse} ================================================================= -Poziome ponowne użycie jest trzecim mechanizmem wielokrotnego użycia i dziedziczenia w Latte. Pozwala na wczytywanie bloków z innych szablonów. Jest to podobne do tworzenia pliku PHP z funkcjami pomocniczymi. +Horyzontalne ponowne użycie jest trzecim mechanizmem ponownego użycia i dziedziczenia w Latte. Pozwala on na ładowanie bloków z innych szablonów. Jest to podobne do tworzenia pliku z funkcjami pomocniczymi w PHP, a następnie ładowania go za pomocą `require`. Dziedziczenie układu szablonu jest jedną z najpotężniejszych funkcji Latte, ale jest ograniczone do prostego dziedziczenia - szablon może rozszerzyć tylko jeden inny szablon. Ponowne użycie horyzontalne jest sposobem na osiągnięcie wielokrotnego dziedziczenia. @@ -455,7 +455,7 @@ Znacznik `{import}` powinien być pierwszym znacznikiem szablonu po `{layout}`. W szablonie możesz użyć dowolnej ilości oświadczeń `{import}`. Jeśli dwa importowane szablony definiują ten sam blok, wygrywa pierwszy. Jednak szablon główny ma najwyższy priorytet i może zastąpić każdy zaimportowany blok. -Do wszystkich nadrzędnych bloków można uzyskać dostęp sekwencyjny, wstawiając je jako [blok |#Parent-Block] nadrzędny: +Zawartość nadpisanych bloków można zachować, wstawiając blok w taki sam sposób, jak [blok nadrzędny |#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/pt/filters.texy b/latte/pt/filters.texy index 49e6f334c2..e495dd16be 100644 --- a/latte/pt/filters.texy +++ b/latte/pt/filters.texy @@ -120,8 +120,8 @@ Filtros .[#toc-filters] ======================= -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Filtro que simplifica a listagem de dados lineares na forma de uma tabela. Ele retorna uma matriz com o determinado número de itens. Se você fornecer um segundo parâmetro, este é usado para preencher os itens em falta na última linha. ```latte @@ -167,8 +167,8 @@ Insere quebras de linha HTML antes de todas as novas linhas. ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Formata o tamanho em bytes em um formato legível por humanos. Se a [localidade |develop#locale] estiver definida, serão usados os separadores decimais e de milhar correspondentes. ```latte @@ -177,8 +177,8 @@ Formata o tamanho em bytes em um formato legível por humanos. Se a [localidade ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Arredonda um número até uma determinada precisão. ```latte @@ -221,8 +221,8 @@ Impressões: Veja também [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Retorna o valor fixado para a faixa inclusiva de min e max. ```latte @@ -232,8 +232,8 @@ Retorna o valor fixado para a faixa inclusiva de min e max. Também existe como [função |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Converte o conteúdo para o esquema URI de dados. Pode ser usado para inserir imagens em HTML ou CSS sem a necessidade de vincular arquivos externos. Vamos ter uma imagem em uma variável `$img = Image::fromFile('obrazek.gif')`, então @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Requer extensão PHP `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Formata a data e a hora de acordo com a máscara usada pela função PHP [php:date]. O filtro aceita a data no formato de carimbo de data/hora do UNIX, como uma cadeia de caracteres ou como um objeto `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ Escapa a uma variável para ser usada como parâmetro na URL. Veja também [consulta |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Divide um fio pelo delimitador dado e retorna um conjunto de fios. Alias para `split`. ```latte @@ -311,8 +311,8 @@ Devolve o primeiro elemento de matriz ou caráter de corda: Ver também [último |#last], [aleatório |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Arredonda um número para uma determinada precisão. ```latte @@ -335,8 +335,8 @@ Converte uma primeira letra de valor em maiúsculas. Requer extensão PHP `mbstr Veja também [capitalizar |#capitalize], [inferior |#lower], [superior |#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- O filtro agrupa os dados de acordo com diferentes critérios. Neste exemplo, as linhas da tabela são agrupadas pela coluna `categoryId`. O resultado é uma matriz de matrizes em que a chave é o valor da coluna `categoryId`. Leia as [instruções detalhadas |cookbook/grouping]. @@ -354,8 +354,8 @@ Neste exemplo, as linhas da tabela são agrupadas pela coluna `categoryId`. O re Consulte também [batch |#batch], a função [group |functions#group] e a tag [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Retorna um fio que é a concatenação das cordas na matriz. Alias para `join`. ```latte @@ -370,8 +370,8 @@ Você também pode usar um pseudônimo `join`: ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Indica um texto da esquerda por um determinado número de abas ou outros caracteres que especificamos no segundo argumento opcional. As linhas em branco não são indentadas. ```latte @@ -420,7 +420,7 @@ Retorna o comprimento de um fio ou matriz. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Formata a data e a hora de acordo com a [localidade |develop#locale], garantindo a exibição consistente e localizada dos dados de hora em diferentes idiomas e regiões. O filtro aceita a data como um carimbo de data/hora UNIX, uma cadeia de caracteres ou um objeto `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello O mau uso do filtro `noescape` pode levar a uma vulnerabilidade XSS! Nunca o use a menos que você esteja **absolutamente seguro** do que está fazendo e que o fio que você está imprimindo vem de uma fonte confiável. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Formata um número com um número especificado de casas decimais. Se a [localidade |develop#locale] estiver definida, serão usados os separadores decimais e de milhar correspondentes. ```latte @@ -549,8 +549,8 @@ Formata um número com um número especificado de casas decimais. Se a [localida ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- O parâmetro `format` permite que você defina a aparência dos números exatamente de acordo com suas necessidades. Ele requer uma [localidade |develop#locale] definida. O formato consiste em vários caracteres especiais, cuja descrição completa pode ser encontrada na documentação "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns: - dígito obrigatório, sempre exibido, mesmo que seja zero @@ -597,7 +597,7 @@ Podemos definir um formato diferente para números positivos e negativos, separa Lembre-se de que a aparência real dos números pode variar de acordo com as configurações de localidade. Por exemplo, em alguns países, uma vírgula é usada em vez de um ponto como separador decimal. Esse filtro considera isso automaticamente, portanto, você não precisa se preocupar com isso. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Coloca um cordel a um certo comprimento com outro cordel da esquerda. @@ -606,7 +606,7 @@ Coloca um cordel a um certo comprimento com outro cordel da esquerda. ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Coloca um cordel a um certo comprimento com outro cordel da direita. @@ -648,8 +648,8 @@ Devolve elemento aleatório de matriz ou caráter de corda: Ver também [primeiro |#first], [último |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Repete a seqüência x-vezes. ```latte @@ -657,7 +657,7 @@ Repete a seqüência x-vezes. ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Substitui todas as ocorrências da cadeia de busca pela cadeia de substituição. @@ -672,7 +672,7 @@ Substituições múltiplas podem ser feitas de uma só vez: ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Substitui todas as ocorrências de acordo com a expressão regular. @@ -693,8 +693,8 @@ Inverte seqüência ou matriz dada. ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Arredonda um número para uma dada precisão. ```latte @@ -707,7 +707,7 @@ Arredonda um número para uma dada precisão. Veja também [ceil |#ceil], [chão |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Extrai uma fatia de uma matriz ou um fio. @@ -725,8 +725,8 @@ Se o comprimento for dado e for positivo, então a seqüência terá até muitos O filtro reordenará e redefinirá as chaves da matriz inteira por padrão. Este comportamento pode ser alterado ajustando preserveKeys para true. As chaves de string são sempre preservadas, independentemente deste parâmetro. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- O filtro classifica os elementos de uma matriz ou iterador, preservando suas chaves associativas. Quando uma [localidade |develop#locale] é definida, a classificação segue suas regras, a menos que uma função de comparação personalizada seja especificada. ```latte @@ -806,8 +806,8 @@ Converte HTML em texto simples. Ou seja, remove as tags HTML e converte entidade O texto simples resultante pode naturalmente conter caracteres que representam tags HTML, por exemplo `'<p>'|stripHtml` é convertido para `

`. Nunca envie o texto resultante com `|noescape`, pois isso pode levar a uma vulnerabilidade de segurança. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Extrai uma fatia de um fio. Este filtro foi substituído por uma [fatia de |#slice] filtro. ```latte @@ -815,8 +815,8 @@ Extrai uma fatia de um fio. Este filtro foi substituído por uma [fatia de |#sli ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Ela traduz expressões para outros idiomas. Para tornar o filtro disponível, é necessário [instalar um tradutor |develop#TranslatorExtension]. Você também pode usar as [tags para a tradução |tags#Translation]. ```latte @@ -825,8 +825,8 @@ Ela traduz expressões para outros idiomas. Para tornar o filtro disponível, é ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Tire os personagens que lideram e seguem, por padrão, o espaço em branco. ```latte @@ -835,7 +835,7 @@ Tire os personagens que lideram e seguem, por padrão, o espaço em branco. ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Encurta um fio até o comprimento máximo dado, mas tenta preservar palavras inteiras. Se a cadeia for truncada, acrescenta elipses no final (isto pode ser alterado pelo segundo parâmetro). diff --git a/latte/pt/functions.texy b/latte/pt/functions.texy index 9d69fcc40e..83fad541c2 100644 --- a/latte/pt/functions.texy +++ b/latte/pt/functions.texy @@ -138,8 +138,8 @@ Verifica se o número dado é estranho. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Extrai uma fatia de uma matriz ou um fio. ```latte diff --git a/latte/pt/template-inheritance.texy b/latte/pt/template-inheritance.texy index daf38bde1b..2752e1b8bc 100644 --- a/latte/pt/template-inheritance.texy +++ b/latte/pt/template-inheritance.texy @@ -423,7 +423,7 @@ Aqui estão algumas dicas para trabalhar com blocos: Reutilização Horizontal `{import}` .{toc: Horizontal Reuse} =========================================================== -A reutilização horizontal é um terceiro mecanismo de reusabilidade e herança em Latte. Ele permite carregar blocos de outros modelos. É semelhante à criação de um arquivo PHP com funções de ajuda ou uma característica. +A reutilização horizontal é o terceiro mecanismo de reutilização e herança no Latte. Ele permite carregar blocos de outros modelos. É semelhante a criar um arquivo com funções auxiliares em PHP e depois carregá-lo usando `require`. Embora a herança de layout de modelo seja um dos recursos mais avançados do Latte, ela é limitada à herança simples - um modelo só pode estender um outro modelo. A reutilização horizontal é uma forma de obter herança múltipla. @@ -455,7 +455,7 @@ A tag `{import}` deve ser a primeira tag modelo após `{layout}`. O nome do temp Você pode usar tantas declarações `{import}` quantas quiser em qualquer modelo dado. Se dois gabaritos importados definirem o mesmo bloco, o primeiro ganha. Entretanto, a maior prioridade é dada ao modelo principal, que pode sobrescrever qualquer bloco importado. -Todos os blocos sobrepostos podem ser incluídos gradualmente, inserindo-os como [bloco pai |#parent block]: +O conteúdo dos blocos sobrescritos pode ser preservado inserindo-se o bloco da mesma forma que um [bloco pai |#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/ro/filters.texy b/latte/ro/filters.texy index 5a0ca9987b..5d907dd1f0 100644 --- a/latte/ro/filters.texy +++ b/latte/ro/filters.texy @@ -120,8 +120,8 @@ Filtre .[#toc-filters] ====================== -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Filtru care simplifică listarea datelor liniare sub formă de tabel. Acesta returnează o matrice de tablouri cu numărul dat de elemente. Dacă furnizați un al doilea parametru, acesta este utilizat pentru a completa elementele lipsă de pe ultimul rând. ```latte @@ -167,8 +167,8 @@ Inserează întreruperi de linie HTML înainte de toate liniile noi. ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Formatează dimensiunea în octeți într-o formă lizibilă de către om. Dacă este setată [localitatea |develop#locale], sunt utilizate separatoarele corespunzătoare de zecimale și de mii. ```latte @@ -177,8 +177,8 @@ Formatează dimensiunea în octeți într-o formă lizibilă de către om. Dacă ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Rotunjește un număr până la o precizie dată. ```latte @@ -221,8 +221,8 @@ Imprimă: A se vedea și [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Returnează valoarea fixată în intervalul inclusiv dintre min și max. ```latte @@ -232,8 +232,8 @@ Returnează valoarea fixată în intervalul inclusiv dintre min și max. Există, de asemenea, ca [funcție |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Convertește conținutul în schema URI de date. Poate fi utilizat pentru a insera imagini în HTML sau CSS fără a fi nevoie să se facă legătura cu fișiere externe. Să avem o imagine într-o variabilă `$img = Image::fromFile('obrazek.gif')`, atunci @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Necesită extensia PHP `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Formatează data și ora în conformitate cu masca utilizată de funcția PHP [php:date]. Filtrul acceptă data în format UNIX timestamp, ca șir de caractere sau ca obiect `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ Scapă o variabilă pentru a fi utilizată ca parametru în URL. A se vedea, de asemenea, [query |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Împarte un șir de caractere după delimitatorul dat și returnează un tablou de șiruri de caractere. Alias pentru `split`. ```latte @@ -311,8 +311,8 @@ Returnează primul element al unui array sau caracterul unui șir de caractere: A se vedea, de asemenea, [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Rotunjește un număr până la o precizie dată. ```latte @@ -335,8 +335,8 @@ Convertește prima literă a unei valori în majusculă. Necesită extensia PHP A se vedea, de asemenea, [capitalize |#capitalize], [lower |#lower], [upper |#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- Filtrul grupează datele în funcție de diferite criterii. În acest exemplu, rândurile din tabel sunt grupate în funcție de coloana `categoryId`. Rezultatul este un tablou de tablouri în care cheia este valoarea din coloana `categoryId`. Citiți [instrucțiunile detaliate |cookbook/grouping]. @@ -354,8 +354,8 @@ Filtrul grupează datele în funcție de diferite criterii. A se vedea, de asemenea, [batch |#batch], funcția [group |functions#group] și eticheta [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Returnează un șir de caractere care este concatenarea șirurilor din matrice. Alias pentru `join`. ```latte @@ -370,8 +370,8 @@ Puteți utiliza și un alias `join`: ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Indentează un text de la stânga cu un anumit număr de tabulauri sau alte caractere pe care îl specificăm în al doilea argument opțional. Liniile goale nu sunt indentate. ```latte @@ -420,7 +420,7 @@ Returnează lungimea unui șir de caractere sau a unei matrice. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Formatează data și ora în funcție de [locale |develop#locale], asigurând afișarea consecventă și localizată a datelor de timp în diferite limbi și regiuni. Filtrul acceptă data ca timestamp UNIX, șir sau obiect `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello Folosirea abuzivă a filtrului `noescape` poate duce la o vulnerabilitate XSS! Nu îl utilizați niciodată decât dacă sunteți **absolut sigur** de ceea ce faceți și dacă șirul pe care îl imprimați provine dintr-o sursă de încredere. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Formatează un număr la un număr specificat de zecimale. Dacă este setată [localitatea |develop#locale], se utilizează separatoarele de zecimale și de mii corespunzătoare. ```latte @@ -549,8 +549,8 @@ Formatează un număr la un număr specificat de zecimale. Dacă este setată [l ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- Parametrul `format` vă permite să definiți aspectul numerelor exact în funcție de nevoile dumneavoastră. Acesta necesită o [localitate |develop#locale] stabilită. Formatul constă din mai multe caractere speciale, a căror descriere completă poate fi găsită în documentația "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns: - cifră obligatorie, afișată întotdeauna chiar dacă este zero @@ -597,7 +597,7 @@ Putem defini un format diferit pentru numerele pozitive și negative, separate d Rețineți că aspectul real al numerelor poate varia în funcție de setările locale. De exemplu, în unele țări, se utilizează o virgulă în loc de un punct ca separator zecimal. Acest filtru ține cont automat de acest lucru, deci nu trebuie să vă faceți griji. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Pads un șir de caractere la o anumită lungime cu un alt șir de caractere din stânga. @@ -606,7 +606,7 @@ Pads un șir de caractere la o anumită lungime cu un alt șir de caractere din ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Adaugă un șir de caractere la o anumită lungime cu un alt șir din dreapta. @@ -648,8 +648,8 @@ Returnează un element aleatoriu din matrice sau un caracter aleatoriu dintr-un A se vedea, de asemenea, [first |#first], [last |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Repetă șirul de x ori. ```latte @@ -657,7 +657,7 @@ Repetă șirul de x ori. ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Înlocuiește toate aparițiile șirului de căutare cu șirul de înlocuire. @@ -672,7 +672,7 @@ Se pot face mai multe înlocuiri deodată: ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Înlocuiește toate ocurențele în funcție de expresia regulată. @@ -693,8 +693,8 @@ Inversează șirul sau matricea dată. ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Rotunjește un număr la o precizie dată. ```latte @@ -707,7 +707,7 @@ Rotunjește un număr la o precizie dată. A se vedea, de asemenea, [plafon |#ceil], [podea |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Extrage o porțiune dintr-un tablou sau un șir de caractere. @@ -725,8 +725,8 @@ Filtrul slice funcționează ca funcția PHP `array_slice` pentru array-uri și Filter reordonează și resetează implicit cheile tabloului de numere întregi. Acest comportament poate fi modificat prin setarea preserveKeys la true. Cheile șirurilor de caractere sunt întotdeauna păstrate, indiferent de acest parametru. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- Filtrul sortează elementele unui array sau iterator păstrând cheile lor asociative. Atunci când este setată o [localitate |develop#locale], sortarea urmează regulile acesteia, cu excepția cazului în care este specificată o funcție de comparație personalizată. ```latte @@ -806,8 +806,8 @@ Convertește HTML în text simplu. Adică, elimină etichetele HTML și converte Textul simplu rezultat poate conține, în mod natural, caractere care reprezintă etichete HTML, de exemplu `'<p>'|stripHtml` este convertit în `

`. Nu scoateți niciodată textul rezultat cu `|noescape`, deoarece acest lucru poate duce la o vulnerabilitate de securitate. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Extrage o porțiune dintr-un șir de caractere. Acest filtru a fost înlocuit cu un filtru de [felie |#slice]. ```latte @@ -815,8 +815,8 @@ Extrage o porțiune dintr-un șir de caractere. Acest filtru a fost înlocuit cu ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Traduce expresii în alte limbi. Pentru ca filtrul să fie disponibil, trebuie să configurați [translator |develop#TranslatorExtension]. De asemenea, puteți utiliza [etichetele pentru traducere |tags#Translation]. ```latte @@ -825,8 +825,8 @@ Traduce expresii în alte limbi. Pentru ca filtrul să fie disponibil, trebuie s ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Elimină caracterele de început și de sfârșit, implicit spațiile albe. ```latte @@ -835,7 +835,7 @@ Elimină caracterele de început și de sfârșit, implicit spațiile albe. ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Scurtează un șir de caractere până la lungimea maximă dată, dar încearcă să păstreze cuvintele întregi. În cazul în care șirul este trunchiat, adaugă elipse la sfârșit (acest lucru poate fi modificat prin intermediul celui de-al doilea parametru). diff --git a/latte/ro/functions.texy b/latte/ro/functions.texy index 087adcf573..0e1b9873db 100644 --- a/latte/ro/functions.texy +++ b/latte/ro/functions.texy @@ -138,8 +138,8 @@ Verifică dacă numărul dat este impar. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Extrage o porțiune dintr-un tablou sau un șir de caractere. ```latte diff --git a/latte/ro/template-inheritance.texy b/latte/ro/template-inheritance.texy index 4b8ffe5bdc..b5a4618822 100644 --- a/latte/ro/template-inheritance.texy +++ b/latte/ro/template-inheritance.texy @@ -423,7 +423,7 @@ Iată câteva sfaturi pentru a lucra cu blocuri: Reutilizare orizontală `{import}` .{toc: Horizontal Reuse} ========================================================== -Reutilizarea orizontală este un al treilea mecanism de reutilizare și moștenire în Latte. Acesta vă permite să încărcați blocuri din alte șabloane. Este similar cu crearea unui fișier PHP cu funcții ajutătoare sau a unei trăsături. +Reutilizarea orizontală este al treilea mecanism de reutilizare și moștenire în Latte. Acesta permite încărcarea blocurilor din alte șabloane. Este similar cu crearea unui fișier cu funcții ajutătoare în PHP și apoi încărcarea acestuia folosind `require`. Deși moștenirea aspectului șablonului este una dintre cele mai puternice caracteristici ale Latte, aceasta este limitată la moștenirea simplă - un șablon poate extinde doar un alt șablon. Reutilizarea orizontală este o modalitate de a obține moștenirea multiplă. @@ -455,7 +455,7 @@ Eticheta `{import}` trebuie să fie prima etichetă de șablon după `{layout}`. Puteți utiliza oricâte declarații `{import}` doriți în cadrul unui șablon dat. În cazul în care două șabloane importate definesc același bloc, primul câștigă. Cu toate acestea, prioritatea cea mai mare este acordată șablonului principal, care poate suprascrie orice bloc importat. -Toate blocurile suprascrise pot fi incluse treptat prin inserarea lor ca [bloc părinte |#parent block]: +Conținutul blocurilor suprascrise poate fi păstrat prin inserarea blocului în același mod ca un [bloc părinte |#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/ru/filters.texy b/latte/ru/filters.texy index a2fe0b2ddf..8149108a78 100644 --- a/latte/ru/filters.texy +++ b/latte/ru/filters.texy @@ -120,8 +120,8 @@ $latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $ ======================= -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Фильтр, упрощающий вывод линейных данных в виде таблицы. Он возвращает массив массивов с заданным количеством элементов. Если указан второй параметр, он используется для заполнения недостающих элементов в последней строке. ```latte @@ -167,8 +167,8 @@ breakLines .[filter] ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Форматирует размер в байтах в удобочитаемую форму. Если установлена [локаль |develop#locale], используются соответствующие десятичные и тысячные разделители. ```latte @@ -177,8 +177,8 @@ bytes(int precision = 2) .[filter] ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Округляет число с заданной точностью. ```latte @@ -221,8 +221,8 @@ checkUrl .[filter] См. также [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Возвращает значение, зажатое в инклюзивный диапазон min и max. ```latte @@ -232,8 +232,8 @@ clamp(int|float min, int|float max) .[filter] Также существует как [clamp |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Преобразует содержимое в схему URI данных. Может использоваться для вставки изображений в HTML или CSS без необходимости ссылки на внешние файлы. Пусть у вас есть изображение в переменной `$img = Image::fromFile('obrazek.gif')`, тогда @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Требуется расширение PHP `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Форматирует дату и время в соответствии с маской, используемой PHP-функцией [php:date]. Фильтр принимает дату в формате временной метки UNIX, как строку или как объект `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ escapeUrl .[filter] См. также [query |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Разделяет строку по заданному разделителю и возвращает массив строк. Псевдоним для `split`. ```latte @@ -311,8 +311,8 @@ first .[filter] См. также [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Округляет число до заданной точности. ```latte @@ -335,8 +335,8 @@ firstUpper .[filter] См. также [capitalize |#capitalize], [lower |#lower] регистр, [upper |#upper] регистр. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- Фильтр группирует данные по различным критериям. В этом примере строки таблицы сгруппированы по столбцу `categoryId`. На выходе получается массив массивов, где ключом является значение в столбце `categoryId`. Ознакомьтесь с [подробной инструкцией |cookbook/grouping]. @@ -354,8 +354,8 @@ group(string|int|\Closure by): array .[filter]{data-version:3.0.16} См. также [batch |#batch], функцию [group |functions#group] и тег [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Возвращает строку, которая является конкатенацией строк в массиве. Псевдоним для `join`. ```latte @@ -370,8 +370,8 @@ implode(string glue = '') .[filter] ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Отступы текста слева на заданное количество табуляций или других символов, которые мы указываем во втором необязательном аргументе. Пустые строки не отступают. ```latte @@ -420,7 +420,7 @@ length .[filter] ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Форматирует дату и время в соответствии с [локалью |develop#locale], обеспечивая последовательное и локализованное отображение данных о времени на разных языках и в разных регионах. Фильтр принимает дату в виде временной метки UNIX, строки или объекта `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello Неправильное использование фильтра `noescape` может привести к XSS-уязвимости! Никогда не используйте его, если вы не **абсолютно уверены** в том, что вы делаете, и что печатаемая строка получена из надежного источника. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Форматирует число с указанным количеством знаков после запятой. Если задана [локаль |develop#locale], используются соответствующие десятичные и тысячные разделители. ```latte @@ -549,8 +549,8 @@ number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[fil ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- Параметр `format` позволяет определить внешний вид чисел в точном соответствии с вашими потребностями. Для его использования требуется установленная [локаль |develop#locale]. Формат состоит из нескольких специальных символов, полное описание которых можно найти в документации "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns: - обязательная цифра, отображается всегда, даже если она равна нулю @@ -597,7 +597,7 @@ number(string format) .[filter] Помните, что фактический вид чисел может меняться в зависимости от настроек локали. Например, в некоторых странах вместо точки в качестве десятичного разделителя используется запятая. Данный фильтр автоматически учитывает это, поэтому вам не нужно беспокоиться об этом. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Складывает строку определенной длины с другой строкой слева. @@ -606,7 +606,7 @@ padLeft(int length, string pad = ' ') .[filter] ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Складывает строку определенной длины с другой строкой справа. @@ -648,8 +648,8 @@ random .[filter] См. также [first |#first], [last |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Повторяет строку x раз. ```latte @@ -657,7 +657,7 @@ repeat(int count) .[filter] ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Заменяет все вхождения строки поиска строкой замены. @@ -672,7 +672,7 @@ replace(string|array search, string replace = '') .[filter] ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Заменяет все вхождения в соответствии с регулярным выражением. @@ -693,8 +693,8 @@ reverse .[filter] ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Округляет число с заданной точностью. ```latte @@ -707,7 +707,7 @@ round(int precision = 0) .[filter] См. также [ceil |#ceil], [floor |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Извлекает фрагмент массива или строки. @@ -725,8 +725,8 @@ slice(int start, int length = null, bool preserveKeys = false) .[filter] Filter по умолчанию переупорядочивает и сбрасывает ключи целочисленного массива. Это поведение можно изменить, установив preserveKeys в true. Строковые ключи всегда сохраняются, независимо от этого параметра. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- Фильтр сортирует элементы массива или итератора с сохранением их ассоциативных ключей. Если задана [локаль |develop#locale], сортировка выполняется по ее правилам, если не указана пользовательская функция сравнения. ```latte @@ -806,8 +806,8 @@ stripHtml .[filter] Полученный простой текст может естественно содержать символы, представляющие HTML-теги, например, `'<p>'|stripHtml` преобразуется в `

`. Никогда не выводите полученный текст с `|noescape`, так как это может привести к уязвимости системы безопасности. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Извлекает фрагмент строки. Этот фильтр был заменен фильтром [срезов |#slice]. ```latte @@ -815,8 +815,8 @@ substr(int offset, int length = null) .[filter] ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Переводит выражения на другие языки. Чтобы сделать фильтр доступным, необходимо [настроить переводчик |develop#TranslatorExtension]. Вы также можете использовать [теги для перевода |tags#Translation]. ```latte @@ -825,8 +825,8 @@ translate(string message, ...args) .[filter] ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Вычеркивать ведущие и последующие символы, по умолчанию пробелы. ```latte @@ -835,7 +835,7 @@ trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Сокращает строку до максимальной заданной длины, но старается сохранить целые слова. Если строка усечена, добавляет многоточие в конце (это можно изменить вторым параметром). diff --git a/latte/ru/functions.texy b/latte/ru/functions.texy index 13a2794edf..f6ccc97b63 100644 --- a/latte/ru/functions.texy +++ b/latte/ru/functions.texy @@ -138,8 +138,8 @@ odd(int $value): bool .[method] ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Извлекает фрагмент массива или строки. ```latte diff --git a/latte/ru/template-inheritance.texy b/latte/ru/template-inheritance.texy index 362f08b420..20c62c1102 100644 --- a/latte/ru/template-inheritance.texy +++ b/latte/ru/template-inheritance.texy @@ -423,7 +423,7 @@ Hi, I am Mary. Горизонтальное повторное использование `{import}` .{toc: Horizontal Reuse} ========================================================================== -Горизонтальное повторное использование - это третий механизм повторного использования и наследования в Latte. Он позволяет загружать блоки из других шаблонов. Это похоже на создание PHP-файла с вспомогательными функциями или трейтом. +Горизонтальное повторное использование - это третий механизм повторного использования и наследования в Latte. Он позволяет загружать блоки из других шаблонов. Это похоже на создание файла с вспомогательными функциями в PHP и последующую его загрузку с помощью `require`. Хотя наследование макетов шаблонов является одной из наиболее мощных возможностей Latte, оно ограничено простым наследованием - шаблон может расширять только один другой шаблон. Горизонтальное повторное использование - это способ достижения множественного наследования. @@ -455,7 +455,7 @@ Hi, I am Mary. Вы можете использовать столько выражений `{import}`, сколько хотите, в любом данном шаблоне. Если два импортированных шаблона определяют один и тот же блок, побеждает первый. Однако наивысший приоритет отдается главному шаблону, который может перезаписать любой импортированный блок. -Все переопределенные блоки можно включать постепенно, вставляя их в качестве [родительского блока |#Parent-Block]: +Содержимое перезаписываемых блоков можно сохранить, вставив блок так же, как и [родительский блок |#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/sl/filters.texy b/latte/sl/filters.texy index ffc1b68e4b..0c462647d1 100644 --- a/latte/sl/filters.texy +++ b/latte/sl/filters.texy @@ -120,8 +120,8 @@ Filtri .[#toc-filters] ====================== -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Filter, ki poenostavi navajanje linearnih podatkov v obliki tabele. Vrne polje z danim številom elementov. Če navedete drugi parameter, se ta uporabi za dopolnitev manjkajočih elementov v zadnji vrstici. ```latte @@ -167,8 +167,8 @@ Pred vse nove vrstice vstavi prelome vrstic HTML. ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Oblikuje velikost v bajtih v človeku razumljivo obliko. Če je nastavljen [lokalni jezik, |develop#locale] se uporabijo ustrezna decimalna ločila in ločila v tisočih. ```latte @@ -177,8 +177,8 @@ Oblikuje velikost v bajtih v človeku razumljivo obliko. Če je nastavljen [loka ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Zaokroži število do določene natančnosti. ```latte @@ -221,8 +221,8 @@ Izpisuje: Glej tudi [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Vrne vrednost, ki je omejena na vključujoče območje min in max. ```latte @@ -232,8 +232,8 @@ Vrne vrednost, ki je omejena na vključujoče območje min in max. Obstaja tudi kot [funkcija |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Pretvori vsebino v podatkovno shemo URI. Uporablja se lahko za vstavljanje slik v HTML ali CSS, ne da bi bilo treba povezovati zunanje datoteke. Imejmo sliko v spremenljivki `$img = Image::fromFile('obrazek.gif')`, potem @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Zahteva razširitev PHP `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Oblikuje datum in čas v skladu z masko, ki jo uporablja funkcija PHP [php:date]. Filter sprejme datum v obliki časovnega žiga UNIX, kot niz ali kot objekt `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ Izbriše spremenljivko, ki se uporabi kot parameter v naslovu URL. Glej tudi [poizvedbo |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Razdeli niz z danim ločilom in vrne polje nizov. Vzdevek za `split`. ```latte @@ -311,8 +311,8 @@ Vrne prvi element polja ali znak niza: Glej tudi [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Zaokroži število do določene natančnosti. ```latte @@ -335,8 +335,8 @@ Prvo črko vrednosti pretvori v veliko črko. Zahteva razširitev PHP `mbstring` Oglejte si tudi [velika začetnica |#capitalize], [mala |#lower] [začetnica |#capitalize], [velika |#upper] začetnica. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- Filter razvrsti podatke v skupine glede na različna merila. V tem primeru so vrstice v tabeli razvrščene po stolpcu `categoryId`. Rezultat je polje polj, kjer je ključ vrednost v stolpcu `categoryId`. Preberite [podrobna navodila |cookbook/grouping]. @@ -354,8 +354,8 @@ V tem primeru so vrstice v tabeli razvrščene po stolpcu `categoryId`. Rezultat Oglejte si tudi [paket |#batch], funkcijo [group |functions#group] in oznako [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Vrne niz, ki je sestavljen iz nizov v polju. Vzdevek za `join`. ```latte @@ -370,8 +370,8 @@ Uporabite lahko tudi vzdevek `join`: ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Odmakne besedilo od leve strani za določeno število tabulatorjev ali drugih znakov, ki jih določimo v drugem neobveznem argumentu. Prazne vrstice se ne odrivajo. ```latte @@ -420,7 +420,7 @@ Vrne dolžino niza ali polja. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Oblikuje datum in čas glede na [lokalno okolje, |develop#locale] kar zagotavlja dosleden in lokaliziran prikaz časovnih podatkov v različnih jezikih in regijah. Filter sprejme datum kot časovni žig UNIX, niz ali objekt `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello Zloraba filtra `noescape` lahko privede do ranljivosti XSS! Nikoli ga ne uporabljajte, razen če ste **trdno prepričani**, kaj počnete in da niz, ki ga tiskate, prihaja iz zaupanja vrednega vira. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Oblikuje število na določeno število decimalnih mest. Če je nastavljen [lokalni jezik, |develop#locale] se uporabijo ustrezna ločila za decimalke in tisočinke. ```latte @@ -549,9 +549,9 @@ Oblikuje število na določeno število decimalnih mest. Če je nastavljen [loka ``` -number(string format) .[filter] -------------------------------- -S parametrom `format` lahko videz številk določite točno po svojih potrebah. Zahteva nastavljeno [lokalno okolje |develop#locale]. Oblika je sestavljena iz več posebnih znakov, katerih popoln opis je na voljo v dokumentaciji "DecimalFormat"::https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns +number(string $format) .[filter] +-------------------------------- +S parametrom `format` lahko videz številk določite točno po svojih potrebah. Zahteva nastavljeno [lokalno okolje |develop#locale]. Oblika je sestavljena iz več posebnih znakov, katerih popoln opis je na voljo v dokumentaciji "DecimalFormat"::https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns - obvezna številka, ki je vedno prikazana, tudi če je enaka nič - `#` neobvezna števka, prikazana samo, če ima število na tem mestu števko @@ -597,7 +597,7 @@ Za pozitivna in negativna števila, ločena z znakom `;`, lahko določimo druga Ne pozabite, da se dejanski videz številk lahko razlikuje glede na nastavitve lokalnega okolja. V nekaterih državah se na primer namesto pike kot decimalno ločilo uporablja vejica. Ta filter to samodejno upošteva, zato vam ni treba skrbeti za to. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Podaljša niz do določene dolžine z drugim nizom z leve. @@ -606,7 +606,7 @@ Podaljša niz do določene dolžine z drugim nizom z leve. ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Podloži niz na določeno dolžino z drugim nizom z desne. @@ -648,8 +648,8 @@ Vrne naključni element polja ali znak niza: Glej tudi [first |#first], [last |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Ponovi niz x-krat. ```latte @@ -657,7 +657,7 @@ Ponovi niz x-krat. ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Zamenja vse pojavitve iskanega niza z nadomestnim nizom. @@ -672,7 +672,7 @@ Izvede se lahko več zamenjav naenkrat: ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Zamenja vse pojavitve v skladu z regularnim izrazom. @@ -693,8 +693,8 @@ Obrne dani niz ali polje. ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Zaokroži število na določeno natančnost. ```latte @@ -707,7 +707,7 @@ Zaokroži število na določeno natančnost. Glej tudi [strop |#ceil], [dno |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Izvleče rezino polja ali niza. @@ -725,8 +725,8 @@ Filter rezine deluje kot funkcija PHP `array_slice` za polja in `mb_substr` za n Filter bo privzeto spremenil vrstni red in ponastavil ključe celoštevilskega polja. To obnašanje lahko spremenite z nastavitvijo vrednosti preserveKeys na true. Vrstični ključi se vedno ohranijo, ne glede na ta parameter. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- Filter razvrsti elemente polja ali iteratorja, pri čemer ohrani njihove asociativne ključe. Ko je nastavljen [lokalni jezik, |develop#locale] razvrščanje sledi njegovim pravilom, razen če je določena primerjalna funkcija po meri. ```latte @@ -806,8 +806,8 @@ Pretvarja HTML v navadno besedilo. To pomeni, da odstrani oznake HTML in pretvor Dobljeno navadno besedilo lahko seveda vsebuje znake, ki predstavljajo oznake HTML, na primer `'<p>'|stripHtml` se pretvori v `

`. Dobljenega besedila nikoli ne izpišite s `|noescape`, saj to lahko povzroči varnostno ranljivost. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Izvleče rezino niza. Ta filter je bil nadomeščen s filtrom za [rezine |#slice]. ```latte @@ -815,8 +815,8 @@ Izvleče rezino niza. Ta filter je bil nadomeščen s filtrom za [rezine |#slice ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Prevaja izraze v druge jezike. Če želite, da je filter na voljo, morate [nastaviti prevajalnik |develop#TranslatorExtension]. Za [prevajanje |tags#Translation] lahko uporabite tudi [oznake |tags#Translation]. ```latte @@ -825,8 +825,8 @@ Prevaja izraze v druge jezike. Če želite, da je filter na voljo, morate [nasta ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Odstrani vodilne in končne znake, privzeto beli prostor. ```latte @@ -835,7 +835,7 @@ Odstrani vodilne in končne znake, privzeto beli prostor. ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Skrajša niz na največjo dovoljeno dolžino, vendar poskuša ohraniti cele besede. Če je niz skrajšan, na koncu doda elipso (to lahko spremenite z drugim parametrom). diff --git a/latte/sl/functions.texy b/latte/sl/functions.texy index 78b0ec54de..38a1b37a6e 100644 --- a/latte/sl/functions.texy +++ b/latte/sl/functions.texy @@ -138,8 +138,8 @@ Preveri, ali je podano število liho. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Izvleče rezino polja ali niza. ```latte diff --git a/latte/sl/template-inheritance.texy b/latte/sl/template-inheritance.texy index d749775406..dde9554882 100644 --- a/latte/sl/template-inheritance.texy +++ b/latte/sl/template-inheritance.texy @@ -423,7 +423,7 @@ Tukaj je nekaj nasvetov za delo z bloki: Vodoravna ponovna uporaba `{import}` .{toc: Horizontal Reuse} ============================================================= -Horizontalna ponovna uporaba je tretji mehanizem ponovne uporabe in dedovanja v Latte. Omogoča nalaganje blokov iz drugih predlog. To je podobno ustvarjanju datoteke PHP s pomožnimi funkcijami ali lastnostmi. +Horizontalna ponovna uporaba je tretji mehanizem za ponovno uporabo in dedovanje v Latte. Omogoča nalaganje blokov iz drugih predlog. Podobno je, kot če bi v PHP ustvarili datoteko s pomožnimi funkcijami in jo nato naložili z uporabo spletne strani `require`. Čeprav je dedovanje postavitve predloge ena od najmočnejših funkcij sistema Latte, je omejeno na preprosto dedovanje - predloga lahko razširi le eno drugo predlogo. Horizontalna ponovna uporaba je način za doseganje večkratnega dedovanja. @@ -455,7 +455,7 @@ Oznaka `{import}` mora biti prva oznaka predloge za `{layout}`. Ime predloge je V posamezni predlogi lahko uporabite poljubno število izrazov `{import}`. Če dve uvoženi predlogi definirata isti blok, zmaga prva. Vendar ima največjo prednost glavna predloga, ki lahko prepiše kateri koli uvoženi blok. -Vse prepisane bloke lahko postopoma vključite tako, da jih vstavite kot [nadrejeni blok |#parent block]: +Vsebino prepisanih blokov lahko ohranite tako, da blok vstavite na enak način kot [nadrejeni blok |#parent block]: ```latte {layout 'layout.latte'} diff --git a/latte/tr/filters.texy b/latte/tr/filters.texy index b43086a874..4047c73ce4 100644 --- a/latte/tr/filters.texy +++ b/latte/tr/filters.texy @@ -120,8 +120,8 @@ Filtreler .[#toc-filters] ========================= -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Doğrusal verilerin bir tablo biçiminde listelenmesini basitleştiren filtre. Verilen sayıda öğe içeren bir dizi döndürür. İkinci bir parametre sağlarsanız, bu son satırdaki eksik öğeleri doldurmak için kullanılır. ```latte @@ -167,8 +167,8 @@ Tüm yeni satırlardan önce HTML satır sonlarını ekler. ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Bayt cinsinden boyutu insan tarafından okunabilir bir biçimde biçimlendirir. [Yerel |develop#locale] ayar belirlenmişse, ilgili ondalık ve binlik ayırıcılar kullanılır. ```latte @@ -177,8 +177,8 @@ Bayt cinsinden boyutu insan tarafından okunabilir bir biçimde biçimlendirir. ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Bir sayıyı belirli bir hassasiyete kadar yuvarlar. ```latte @@ -221,8 +221,8 @@ Baskılar: Ayrıca bkz. [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Min ve maks. dahil aralığına sıkıştırılmış değeri döndürür. ```latte @@ -232,8 +232,8 @@ Min ve maks. dahil aralığına sıkıştırılmış değeri döndürür. [Fonksiyon |functions#clamp] olarak da mevcuttur. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- İçeriği veri URI şemasına dönüştürür. Harici dosyalara bağlantı vermeye gerek kalmadan HTML veya CSS'ye görüntü eklemek için kullanılabilir. `$img = Image::fromFile('obrazek.gif')` değişkeninde bir görüntüye sahip olalım, sonra @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO PHP uzantısı gerektirir `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Tarih ve saati [php:date] PHP işlevi tarafından kullanılan maskeye göre biçimlendirir. Süzgeç, tarihi UNIX zaman damgası biçiminde, dize olarak veya `DateTimeInterface` nesnesi olarak kabul eder. ```latte @@ -276,8 +276,8 @@ URL'de parametre olarak kullanılacak bir değişkeni atar. Ayrıca [sorguya |#query] bakın. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Bir dizeyi verilen sınırlayıcıya göre böler ve bir dizeler dizisi döndürür. İçin takma ad `split`. ```latte @@ -311,8 +311,8 @@ Dizinin ilk elemanını veya karakter dizisini döndürür: Ayrıca bkz. [son |#last], [rastgele |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Bir sayıyı belirli bir hassasiyete yuvarlar. ```latte @@ -335,8 +335,8 @@ Değerin ilk harfini büyük harfe dönüştürür. PHP eklentisi gerektirir `mb Ayrıca bkz. [büyük harf |#capitalize], [alt |#lower], [üst |#upper]. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- Filtre, verileri farklı kriterlere göre gruplandırır. Bu örnekte, tablodaki satırlar `categoryId` sütununa göre gruplandırılmıştır. Çıktı, anahtarın `categoryId` sütunundaki değer olduğu bir dizi dizisidir. [Ayrıntılı talimatları |cookbook/grouping] okuyun. @@ -354,8 +354,8 @@ Bu örnekte, tablodaki satırlar `categoryId` sütununa göre gruplandırılmı Ayrıca bkz. [batch |#batch], [group |functions#group] fonksiyonu ve [iterateWhile |tags#iterateWhile] etiketi. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Dizideki dizelerin birleştirilmesinden oluşan bir dizge döndürür. İçin takma ad `join`. ```latte @@ -370,8 +370,8 @@ Ayrıca `join` takma adını da kullanabilirsiniz: ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Bir metni soldan belirli sayıda sekme veya ikinci isteğe bağlı bağımsız değişkende belirttiğimiz diğer karakterler kadar girintiler. Boş satırlar girintilenmez. ```latte @@ -420,7 +420,7 @@ Bir dize veya dizinin uzunluğunu döndürür. ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Tarih ve saati yerel [ayara |develop#locale] göre biçimlendirerek, zaman verilerinin farklı diller ve bölgeler arasında tutarlı ve yerelleştirilmiş bir şekilde görüntülenmesini sağlar. Filtre, tarihi UNIX zaman damgası, dize veya `DateTimeInterface` nesnesi olarak kabul eder. @@ -537,8 +537,8 @@ Unescaped: hello `noescape` filtresinin yanlış kullanımı bir XSS güvenlik açığına yol açabilir! Ne yaptığınızdan ve yazdırdığınız dizenin güvenilir bir kaynaktan geldiğinden **kesinlikle emin** değilseniz asla kullanmayın. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Bir sayıyı belirtilen sayıda ondalık basamağa göre biçimlendirir. [Yerel |develop#locale] ayar belirlenmişse, ilgili ondalık ve binlik ayırıcılar kullanılır. ```latte @@ -549,8 +549,8 @@ Bir sayıyı belirtilen sayıda ondalık basamağa göre biçimlendirir. [Yerel ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- `format` parametresi, sayıların görünümünü tam olarak ihtiyaçlarınıza göre tanımlamanıza olanak tanır. Ayarlanmış bir [yerel |develop#locale] ayar gerektirir. Biçim, tam açıklamasını "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns belgesinde bulabileceğiniz birkaç özel karakterden oluşur: - zorunlu rakam, sıfır olsa bile her zaman görüntülenir @@ -597,7 +597,7 @@ Pozitif ve negatif sayılar için `;` karakteriyle ayrılmış farklı bir forma Sayıların gerçek görünümünün yerel ayarlara bağlı olarak değişebileceğini unutmayın. Örneğin, bazı ülkelerde ondalık ayırıcı olarak nokta yerine virgül kullanılır. Bu filtre bunu otomatik olarak hesaba katar, bu nedenle endişelenmenize gerek yoktur. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Bir dizeyi soldan başka bir dizeyle belirli bir uzunluğa kadar doldurur. @@ -606,7 +606,7 @@ Bir dizeyi soldan başka bir dizeyle belirli bir uzunluğa kadar doldurur. ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Bir dizeyi sağdan başka bir dizeyle belirli bir uzunlukta doldurur. @@ -648,8 +648,8 @@ Dizinin rastgele elemanını veya karakter dizisini döndürür: Ayrıca bkz. [ilk |#first], [son |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Dizeyi x kez tekrarlar. ```latte @@ -657,7 +657,7 @@ Dizeyi x kez tekrarlar. ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Arama dizesinin tüm geçtiği yerleri değiştirme dizesiyle değiştirir. @@ -672,7 +672,7 @@ Aynı anda birden fazla değiştirme yapılabilir: ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Tüm oluşumları düzenli ifadeye göre değiştirir. @@ -693,8 +693,8 @@ Verilen dizeyi veya diziyi tersine çevirir. ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Bir sayıyı belirli bir hassasiyete yuvarlar. ```latte @@ -707,7 +707,7 @@ Bir sayıyı belirli bir hassasiyete yuvarlar. Ayrıca bkz. [tavan |#ceil], [zemin |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Bir dizinin veya dizginin bir dilimini çıkarır. @@ -725,8 +725,8 @@ Uzunluk verilmişse ve pozitifse, dizinin içinde o kadar eleman olacaktır. De Filtre, varsayılan olarak tamsayı dizi anahtarlarını yeniden sıralar ve sıfırlar. Bu davranış preserveKeys öğesi true olarak ayarlanarak değiştirilebilir. Dize anahtarları bu parametreden bağımsız olarak her zaman korunur. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- Filtre, bir dizinin veya yineleyicinin öğelerini, ilişkisel anahtarlarını koruyarak sıralar. Bir [yerel |develop#locale] ayarlandığında, özel bir karşılaştırma işlevi belirtilmediği sürece sıralama [yerel |develop#locale] ayarın kurallarını izler. ```latte @@ -806,8 +806,8 @@ HTML'yi düz metne dönüştürür. Yani, HTML etiketlerini kaldırır ve HTML v Ortaya çıkan düz metin doğal olarak HTML etiketlerini temsil eden karakterler içerebilir, örneğin `'<p>'|stripHtml` şu şekilde dönüştürülür `

`. Bir güvenlik açığına yol açabileceğinden, ortaya çıkan metni asla `|noescape` ile çıktı olarak vermeyin. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Bir dizenin bir dilimini çıkarır. Bu filtre bir [dilim |#slice] filtresi ile değiştirilmiştir. ```latte @@ -815,8 +815,8 @@ Bir dizenin bir dilimini çıkarır. Bu filtre bir [dilim |#slice] filtresi ile ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- İfadeleri diğer dillere çevirir. Filtreyi kullanılabilir hale getirmek için [çevirmen kur |develop#TranslatorExtension]manız gerekir. [Çeviri için etiketleri |tags#Translation] de kullanabilirsiniz. ```latte @@ -825,8 +825,8 @@ translate(string message, ...args) .[filter] ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Baştaki ve sondaki karakterleri, varsayılan olarak boşlukları soyun. ```latte @@ -835,7 +835,7 @@ Baştaki ve sondaki karakterleri, varsayılan olarak boşlukları soyun. ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Bir dizeyi verilen maksimum uzunluğa kısaltır, ancak tüm kelimeleri korumaya çalışır. Dize kesilmişse sonuna üç nokta ekler (bu ikinci parametre ile değiştirilebilir). diff --git a/latte/tr/functions.texy b/latte/tr/functions.texy index f83a9a525a..ba9f7ef58e 100644 --- a/latte/tr/functions.texy +++ b/latte/tr/functions.texy @@ -138,8 +138,8 @@ Verilen sayının tek olup olmadığını kontrol eder. ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Bir dizinin veya dizginin bir dilimini çıkarır. ```latte diff --git a/latte/tr/template-inheritance.texy b/latte/tr/template-inheritance.texy index b681815e53..216ec73eb3 100644 --- a/latte/tr/template-inheritance.texy +++ b/latte/tr/template-inheritance.texy @@ -423,7 +423,7 @@ Blokların varlığı da fonksiyon tarafından döndürülür [`hasBlock()` |fun Yatay Yeniden Kullanım `{import}` .{toc: Horizontal Reuse} ========================================================== -Yatay yeniden kullanım, Latte'deki üçüncü bir yeniden kullanılabilirlik ve kalıtım mekanizmasıdır. Diğer şablonlardan bloklar yüklemenizi sağlar. Yardımcı fonksiyonlar veya bir özellik içeren bir PHP dosyası oluşturmaya benzer. +Yatay yeniden kullanım, Latte'de yeniden kullanım ve kalıtım için üçüncü mekanizmadır. Diğer şablonlardan blokların yüklenmesine izin verir. PHP'de yardımcı işlevlerle bir dosya oluşturmaya ve ardından `require` kullanarak yüklemeye benzer. Şablon düzeni kalıtımı Latte'nin en güçlü özelliklerinden biri olsa da, basit kalıtımla sınırlıdır - bir şablon yalnızca bir başka şablonu genişletebilir. Yatay yeniden kullanım, çoklu kalıtım elde etmenin bir yoludur. @@ -455,7 +455,7 @@ Ana şablondaki blokları içe aktarırsanız (yani `{import}` adresini `layout. Herhangi bir şablonda istediğiniz kadar `{import}` ifadesi kullanabilirsiniz. İki içe aktarılan şablon aynı bloğu tanımlarsa, ilki kazanır. Ancak, en yüksek öncelik, içe aktarılan herhangi bir bloğun üzerine yazabilen ana şablona verilir. -Geçersiz kılınan tüm bloklar, [üst |#parent block] blok olarak eklenerek kademeli olarak dahil edilebilir: +Üzerine yazılan blokların içeriği, blok bir [üst blokla |#parent block] aynı şekilde eklenerek korunabilir: ```latte {layout 'layout.latte'} diff --git a/latte/uk/filters.texy b/latte/uk/filters.texy index e5146ecc6d..e6b7186e5e 100644 --- a/latte/uk/filters.texy +++ b/latte/uk/filters.texy @@ -120,8 +120,8 @@ $latte->addFilter('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $ ======================= -batch(int length, mixed item): array .[filter] ----------------------------------------------- +batch(int $length, mixed $item): array .[filter] +------------------------------------------------ Фільтр, який спрощує виведення лінійних даних у вигляді таблиці. Повертає масив із заданою кількістю елементів. Якщо ви вкажете другий параметр, він буде використаний для заповнення пропущених елементів в останньому рядку. ```latte @@ -167,8 +167,8 @@ breakLines .[filter] ``` -bytes(int precision = 2) .[filter] ----------------------------------- +bytes(int $precision=2) .[filter] +--------------------------------- Форматує розмір у байтах у зручну для читання форму. Якщо задано [локаль |develop#locale], використовуються відповідні десяткові та тисячні роздільники. ```latte @@ -177,8 +177,8 @@ bytes(int precision = 2) .[filter] ``` -ceil(int precision = 0) .[filter] ---------------------------------- +ceil(int $precision=0) .[filter] +-------------------------------- Округлює число до заданої точності. ```latte @@ -221,8 +221,8 @@ checkUrl .[filter] Див. також [nocheck |#nocheck]. -clamp(int|float min, int|float max) .[filter] ---------------------------------------------- +clamp(int|float $min, int|float $max) .[filter] +----------------------------------------------- Повертає значення, обмежене діапазоном min та max. ```latte @@ -232,8 +232,8 @@ clamp(int|float min, int|float max) .[filter] Існує також у вигляді [функції |functions#clamp]. -dataStream(string mimetype = detect) .[filter] ----------------------------------------------- +dataStream(string $mimetype=detect) .[filter] +--------------------------------------------- Перетворює вміст на схему URI даних. Його можна використовувати для вставки зображень в HTML або CSS без необхідності посилання на зовнішні файли. Нехай у змінній є зображення `$img = Image::fromFile('obrazek.gif')`, тоді @@ -254,8 +254,8 @@ AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO Потрібне розширення PHP `fileinfo`. -date(string format) .[filter] ------------------------------ +date(string $format) .[filter] +------------------------------ Форматує дату і час відповідно до маски, що використовується функцією PHP [php:date]. Фільтр приймає дату у форматі мітки часу UNIX, як рядок або як об'єкт `DateTimeInterface`. ```latte @@ -276,8 +276,8 @@ escapeUrl .[filter] Див. також [query |#query]. -explode(string separator = '') .[filter] ----------------------------------------- +explode(string $separator='') .[filter] +--------------------------------------- Розділяє рядок за заданим роздільником і повертає масив рядків. Псевдонім для `split`. ```latte @@ -311,8 +311,8 @@ first .[filter] Див. також [last |#last], [random |#random]. -floor(int precision = 0) .[filter] ----------------------------------- +floor(int $precision=0) .[filter] +--------------------------------- Округлює число до заданої точності. ```latte @@ -335,8 +335,8 @@ firstUpper .[filter] Див. також [capitalize |#capitalize], [lower |#lower] регістр, [upper |#upper] регістр. -group(string|int|\Closure by): array .[filter]{data-version:3.0.16} -------------------------------------------------------------------- +group(string|int|\Closure $by): array .[filter]{data-version:3.0.16} +-------------------------------------------------------------------- Фільтр групує дані за різними критеріями. У цьому прикладі рядки таблиці групуються за стовпцем `categoryId`. На виході отримуємо масив масивів, де ключем є значення у стовпчику `categoryId`. Прочитайте [детальну інструкцію |cookbook/grouping]. @@ -354,8 +354,8 @@ group(string|int|\Closure by): array .[filter]{data-version:3.0.16} Дивіться також [batch |#batch], функцію [group |functions#group] та тег [iterateWhile |tags#iterateWhile]. -implode(string glue = '') .[filter] ------------------------------------ +implode(string $glue='') .[filter] +---------------------------------- Повертає рядок, який є конкатенацією рядків у масиві. Псевдонім для `join`. ```latte @@ -370,8 +370,8 @@ implode(string glue = '') .[filter] ``` -indent(int level = 1, string char = "\t") .[filter] ---------------------------------------------------- +indent(int $level=1, string $char="\t") .[filter] +------------------------------------------------- Відступає текст зліва на задану кількість табуляцій або інших символів, які ми вказуємо у другому необов'язковому аргументі. Порожні рядки не відступаються. ```latte @@ -420,7 +420,7 @@ length .[filter] ``` -localDate(string format = null, string date = null, string time = null) .[filter] +localDate(?string $format=null, ?string $date=null, ?string $time=null) .[filter] --------------------------------------------------------------------------------- Форматує дату і час відповідно до [локалі |develop#locale], забезпечуючи узгоджене і локалізоване відображення часових даних у різних мовах і регіонах. Фільтр приймає дату у вигляді мітки часу UNIX, рядка або об'єкта `DateTimeInterface`. @@ -537,8 +537,8 @@ Unescaped: hello Неправильне використання фільтра `noescape` може призвести до XSS-уразливості! Ніколи не використовуйте його, якщо ви не впевнені в тому, що ви робите, і що рядок, який ви друкуєте, походить з надійного джерела. -number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[filter] ------------------------------------------------------------------------------------- +number(int $decimals=0, string $decPoint='.', string $thousandsSep=',') .[filter] +--------------------------------------------------------------------------------- Форматує число до вказаної кількості десяткових знаків. Якщо задано [локаль |develop#locale], використовуються відповідні роздільники десяткових і тисячних знаків. ```latte @@ -549,8 +549,8 @@ number(int decimals = 0, string decPoint = '.', string thousandsSep = ',') .[fil ``` -number(string format) .[filter] -------------------------------- +number(string $format) .[filter] +-------------------------------- Параметр `format` дозволяє визначити зовнішній вигляд чисел точно відповідно до ваших потреб. Для цього потрібна встановлена [локаль |develop#locale]. Формат складається з декількох спеціальних символів, повний опис яких можна знайти в документації "DecimalFormat":https://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns: - обов'язкова цифра, завжди відображається, навіть якщо це нуль @@ -597,7 +597,7 @@ number(string format) .[filter] Пам'ятайте, що фактичний вигляд чисел може відрізнятися залежно від налаштувань локалі. Наприклад, у деяких країнах замість крапки в якості десяткового роздільника використовується кома. Цей фільтр автоматично враховує це, тому вам не потрібно про це турбуватися. -padLeft(int length, string pad = ' ') .[filter] +padLeft(int $length, string $pad=' ') .[filter] ----------------------------------------------- Доповнює рядок до певної довжини іншим рядком зліва. @@ -606,7 +606,7 @@ padLeft(int length, string pad = ' ') .[filter] ``` -padRight(int length, string pad = ' ') .[filter] +padRight(int $length, string $pad=' ') .[filter] ------------------------------------------------ Заміщає рядок до певної довжини іншим рядком праворуч. @@ -648,8 +648,8 @@ random .[filter] Дивіться також [first |#first], [last |#last]. -repeat(int count) .[filter] ---------------------------- +repeat(int $count) .[filter] +---------------------------- Повторює рядок x разів. ```latte @@ -657,7 +657,7 @@ repeat(int count) .[filter] ``` -replace(string|array search, string replace = '') .[filter] +replace(string|array $search, string $replace='') .[filter] ----------------------------------------------------------- Замінює всі входження пошукового рядка на рядок заміни. @@ -672,7 +672,7 @@ replace(string|array search, string replace = '') .[filter] ``` -replaceRE(string pattern, string replace = '') .[filter] +replaceRE(string $pattern, string $replace='') .[filter] -------------------------------------------------------- Замінює всі входження відповідно до регулярного виразу. @@ -693,8 +693,8 @@ reverse .[filter] ``` -round(int precision = 0) .[filter] ----------------------------------- +round(int $precision=0) .[filter] +--------------------------------- Округляє число до заданої точності. ```latte @@ -707,7 +707,7 @@ round(int precision = 0) .[filter] Див. також [ceil |#ceil], [floor |#floor]. -slice(int start, int length = null, bool preserveKeys = false) .[filter] +slice(int $start, ?int $length=null, bool $preserveKeys=false) .[filter] ------------------------------------------------------------------------ Витягує фрагмент масиву або рядка. @@ -725,8 +725,8 @@ slice(int start, int length = null, bool preserveKeys = false) .[filter] За замовчуванням фільтр перевпорядковує і скидає ключі цілочисельних масивів. Цю поведінку можна змінити, встановивши preserveKeys у true. Рядкові ключі завжди зберігаються, незалежно від цього параметра. -sort(?Closure comparison, string|int|\Closure|null by=null, string|int|\Closure|bool byKey=false) .[filter] ------------------------------------------------------------------------------------------------------------ +sort(?Closure $comparison, string|int|\Closure|null $by=null, string|int|\Closure|bool $byKey=false) .[filter] +-------------------------------------------------------------------------------------------------------------- Фільтр сортує елементи масиву або ітератора зі збереженням їхніх асоціативних ключів. Якщо задано [локаль |develop#locale], сортування відбувається за її правилами, якщо не вказано власну функцію порівняння. ```latte @@ -806,8 +806,8 @@ stripHtml .[filter] Отриманий в результаті звичайний текст може містити символи, які представляють теги HTML, наприклад, `'<p>'|stripHtml` буде перетворено на `

`. Ніколи не виводьте отриманий текст у вигляді `|noescape`, оскільки це може призвести до уразливості. -substr(int offset, int length = null) .[filter] ------------------------------------------------ +substr(int $offset, ?int $length=null) .[filter] +------------------------------------------------ Витягує фрагмент рядка. Цей фільтр було замінено на фільтр [фрагментів |#slice]. ```latte @@ -815,8 +815,8 @@ substr(int offset, int length = null) .[filter] ``` -translate(string message, ...args) .[filter] --------------------------------------------- +translate(string $message, ...$args) .[filter] +---------------------------------------------- Перекладає вирази на інші мови. Щоб зробити фільтр доступним, вам потрібно [налаштувати пере |develop#TranslatorExtension]кладач. Ви також можете використовувати [теги для перекладу |tags#Translation]. ```latte @@ -825,8 +825,8 @@ translate(string message, ...args) .[filter] ``` -trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] -------------------------------------------------------- +trim(string $charlist=" \t\n\r\0\x0B\u{A0}") .[filter] +------------------------------------------------------ Видаляти початкові та кінцеві символи, за замовчуванням пробіли. ```latte @@ -835,7 +835,7 @@ trim(string charlist = " \t\n\r\0\x0B\u{A0}") .[filter] ``` -truncate(int length, string append = '…') .[filter] +truncate(int $length, string $append='…') .[filter] --------------------------------------------------- Скорочує рядок до максимально заданої довжини, але намагається зберегти цілі слова. Якщо рядок укорочено, додає в кінці багатокрапку (це можна змінити за допомогою другого параметра). diff --git a/latte/uk/functions.texy b/latte/uk/functions.texy index 41206565d3..8b272fbd6d 100644 --- a/latte/uk/functions.texy +++ b/latte/uk/functions.texy @@ -138,8 +138,8 @@ odd(int $value): bool .[method] ``` -slice(string|array $value, int $start, int $length=null, bool $preserveKeys=false): string|array .[method] ----------------------------------------------------------------------------------------------------------- +slice(string|array $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array .[method] +----------------------------------------------------------------------------------------------------------- Витягує фрагмент масиву або рядка. ```latte diff --git a/latte/uk/template-inheritance.texy b/latte/uk/template-inheritance.texy index c4fd39ba89..8f16189a33 100644 --- a/latte/uk/template-inheritance.texy +++ b/latte/uk/template-inheritance.texy @@ -423,7 +423,7 @@ Hi, I am Mary. Горизонтальне повторне використання `{import}` .{toc: Horizontal Reuse} ======================================================================= -Горизонтальне повторне використання - це третій механізм повторного використання та успадкування в Latte. Він дозволяє завантажувати блоки з інших шаблонів. Це схоже на створення PHP-файлу з допоміжними функціями або трейтом. +Горизонтальне повторне використання - це третій механізм повторного використання та успадкування в Latte. Він дозволяє завантажувати блоки з інших шаблонів. Це схоже на створення файлу з допоміжними функціями в PHP, а потім завантаження його за допомогою `require`. Хоча успадкування шаблонів є однією з найпотужніших функцій Latte, воно обмежується простим успадкуванням - шаблон може розширювати лише один інший шаблон. Горизонтальне повторне використання - це спосіб досягти множинного успадкування. @@ -455,7 +455,7 @@ Hi, I am Mary. Ви можете використовувати стільки виразів `{import}`, скільки хочете, у будь-якому даному шаблоні. Якщо два імпортованих шаблони визначають один і той самий блок, перемагає перший. Однак найвищий пріоритет віддається головному шаблону, який може перезаписати будь-який імпортований блок. -Усі перевизначені блоки можна включати поступово, вставляючи їх як [батьківський блок |#Parent-Block]: +Вміст перезаписаних блоків можна зберегти, вставивши його так само, як і [батьківський блок |#parent block]: ```latte {layout 'layout.latte'} diff --git a/mail/bg/@home.texy b/mail/bg/@home.texy index 5424d32152..337a611aef 100644 --- a/mail/bg/@home.texy +++ b/mail/bg/@home.texy @@ -74,7 +74,7 @@ $mail->setHtmlBody( Прикачени файлове .[#toc-attachments] ------------------------------------- -Разбира се, можете да прикачвате прикачени файлове към имейли. Използвайте командата `addAttachment(string $file, string $content = null, string $contentType = null)`. +Разбира се, можете да прикачвате прикачени файлове към имейли. Използвайте командата `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php //вмъкнете файла /path/to/example.zip в имейла като example.zip diff --git a/mail/cs/@home.texy b/mail/cs/@home.texy index bf63b65369..45a1700470 100644 --- a/mail/cs/@home.texy +++ b/mail/cs/@home.texy @@ -74,7 +74,7 @@ E-mail je něco jako pohlednice. Nikdy e-mailem neposílejte hesla ani jiné př Přílohy ------- -Do e-mailu lze samozřejmě vkládat přílohy. Slouží k tomu metoda `addAttachment(string $file, string $content = null, string $contentType = null)`. +Do e-mailu lze samozřejmě vkládat přílohy. Slouží k tomu metoda `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // vloží do e-mailu soubor /path/to/example.zip pod názvem example.zip diff --git a/mail/de/@home.texy b/mail/de/@home.texy index 4c01d1821c..418365dc32 100644 --- a/mail/de/@home.texy +++ b/mail/de/@home.texy @@ -74,7 +74,7 @@ E-Mails sind wie Postkarten. Senden Sie niemals Passwörter oder andere Anmeldei Anhänge .[#toc-attachments] --------------------------- -Sie können natürlich auch Anhänge an E-Mails anhängen. Verwenden Sie dazu die `addAttachment(string $file, string $content = null, string $contentType = null)`. +Sie können natürlich auch Anhänge an E-Mails anhängen. Verwenden Sie dazu die `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // fügt die Datei /path/to/example.zip in die E-Mail unter dem Namen example.zip ein diff --git a/mail/el/@home.texy b/mail/el/@home.texy index c5ff6af3c1..b0b2e906bc 100644 --- a/mail/el/@home.texy +++ b/mail/el/@home.texy @@ -74,7 +74,7 @@ $mail->setHtmlBody( Συνημμένα αρχεία .[#toc-attachments] ------------------------------------ -Μπορείτε, φυσικά, να επισυνάπτετε συνημμένα αρχεία στο ηλεκτρονικό ταχυδρομείο. Χρησιμοποιήστε το `addAttachment(string $file, string $content = null, string $contentType = null)`. +Μπορείτε, φυσικά, να επισυνάπτετε συνημμένα αρχεία στο ηλεκτρονικό ταχυδρομείο. Χρησιμοποιήστε το `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // εισάγει το αρχείο /path/to/example.zip στο email με το όνομα example.zip diff --git a/mail/en/@home.texy b/mail/en/@home.texy index fbf75e52f8..02d90c4555 100644 --- a/mail/en/@home.texy +++ b/mail/en/@home.texy @@ -74,7 +74,7 @@ Emails are like postcards. Never send passwords or other credentials via email. Attachments ----------- -You can, of course, attach attachments to email. Use the `addAttachment(string $file, string $content = null, string $contentType = null)`. +You can, of course, attach attachments to email. Use the `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // inserts the file /path/to/example.zip into the email under the name example.zip diff --git a/mail/es/@home.texy b/mail/es/@home.texy index daa3af6859..120119c43d 100644 --- a/mail/es/@home.texy +++ b/mail/es/@home.texy @@ -74,7 +74,7 @@ Los correos electrónicos son como postales. Nunca envíes contraseñas u otras Archivos adjuntos .[#toc-attachments] ------------------------------------- -Por supuesto, puedes adjuntar archivos al correo electrónico. Utilice la dirección `addAttachment(string $file, string $content = null, string $contentType = null)`. +Por supuesto, puedes adjuntar archivos al correo electrónico. Utilice la dirección `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // inserts the file /path/to/example.zip into the email under the name example.zip diff --git a/mail/fr/@home.texy b/mail/fr/@home.texy index be9d696844..9ae629ee8b 100644 --- a/mail/fr/@home.texy +++ b/mail/fr/@home.texy @@ -74,7 +74,7 @@ Les courriels sont comme des cartes postales. N'envoyez jamais de mots de passe Pièces jointes .[#toc-attachments] ---------------------------------- -Vous pouvez, bien entendu, joindre des pièces jointes à un courriel. Utilisez l'adresse `addAttachment(string $file, string $content = null, string $contentType = null)`. +Vous pouvez, bien entendu, joindre des pièces jointes à un courriel. Utilisez l'adresse `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // insère le fichier /path/to/example.zip dans l'email sous le nom example.zip diff --git a/mail/hu/@home.texy b/mail/hu/@home.texy index 4d2ce88d14..fcd1279e2d 100644 --- a/mail/hu/@home.texy +++ b/mail/hu/@home.texy @@ -74,7 +74,7 @@ Az e-mailek olyanok, mint a képeslapok. Soha ne küldjön jelszavakat vagy más Csatolmányok .[#toc-attachments] -------------------------------- -Természetesen csatolhat csatolmányokat is az e-mailhez. Használja a `addAttachment(string $file, string $content = null, string $contentType = null)`. +Természetesen csatolhat csatolmányokat is az e-mailhez. Használja a `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // beilleszti a /path/to/example.zip fájlt az e-mailbe a example.zip név alatt. diff --git a/mail/it/@home.texy b/mail/it/@home.texy index 55fb089c07..f59bf45fda 100644 --- a/mail/it/@home.texy +++ b/mail/it/@home.texy @@ -74,7 +74,7 @@ Le e-mail sono come cartoline. Non inviate mai password o altre credenziali via Allegati .[#toc-attachments] ---------------------------- -Naturalmente è possibile allegare allegati alle e-mail. Utilizzate l'indirizzo `addAttachment(string $file, string $content = null, string $contentType = null)`. +Naturalmente è possibile allegare allegati alle e-mail. Utilizzate l'indirizzo `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // inserisce il file /path/to/example.zip nella mail con il nome example.zip diff --git a/mail/pl/@home.texy b/mail/pl/@home.texy index 54ac4c1bec..0e60b4a989 100644 --- a/mail/pl/@home.texy +++ b/mail/pl/@home.texy @@ -74,7 +74,7 @@ E-mail jest jak pocztówka. Nigdy nie wysyłaj haseł ani innych danych dostępo Załączniki .[#toc-attachments] ------------------------------ -Do maila można oczywiście dodać załączniki. Odbywa się to za pomocą metody `addAttachment(string $file, string $content = null, string $contentType = null)`. +Do maila można oczywiście dodać załączniki. Odbywa się to za pomocą metody `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // wstawia do maila plik /path/to/example.zip pod nazwą example.zip diff --git a/mail/pt/@home.texy b/mail/pt/@home.texy index 6644a35da1..d3dc3475e5 100644 --- a/mail/pt/@home.texy +++ b/mail/pt/@home.texy @@ -74,7 +74,7 @@ Os e-mails são como cartões postais. Nunca envie senhas ou outras credenciais Anexos .[#toc-attachments] -------------------------- -Você pode, é claro, anexar anexos ao e-mail. Use o site `addAttachment(string $file, string $content = null, string $contentType = null)`. +Você pode, é claro, anexar anexos ao e-mail. Use o site `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // insere o arquivo /caminho/para/exemplo.zip no e-mail com o nome exemplo.zip diff --git a/mail/ro/@home.texy b/mail/ro/@home.texy index 11e5882075..52c544da38 100644 --- a/mail/ro/@home.texy +++ b/mail/ro/@home.texy @@ -74,7 +74,7 @@ E-mailurile sunt ca niște cărți poștale. Nu trimiteți niciodată parole sau Atașamente .[#toc-attachments] ------------------------------ -Puteți, desigur, să atașați atașamente la e-mail. Folosiți opțiunea `addAttachment(string $file, string $content = null, string $contentType = null)`. +Puteți, desigur, să atașați atașamente la e-mail. Folosiți opțiunea `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // inserează fișierul /path/to/example.zip în e-mail sub numele example.zip diff --git a/mail/ru/@home.texy b/mail/ru/@home.texy index f782650c0f..a4ba4398ca 100644 --- a/mail/ru/@home.texy +++ b/mail/ru/@home.texy @@ -74,7 +74,7 @@ $mail->setHtmlBody( Вложения .[#toc-attachments] ---------------------------- -Разумеется, вы можете прикреплять вложения к электронным письмам. Используйте команду `addAttachment(string $file, string $content = null, string $contentType = null)`. +Разумеется, вы можете прикреплять вложения к электронным письмам. Используйте команду `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // вставляет файл /path/to/example.zip в электронное письмо под именем example.zip diff --git a/mail/sl/@home.texy b/mail/sl/@home.texy index a322297f39..8c042f65b7 100644 --- a/mail/sl/@home.texy +++ b/mail/sl/@home.texy @@ -74,7 +74,7 @@ Elektronska sporočila so kot razglednice. Nikoli ne pošiljajte gesel ali drugi Priponke .[#toc-attachments] ---------------------------- -Elektronskemu sporočilu lahko seveda priložite priponke. Uporabite `addAttachment(string $file, string $content = null, string $contentType = null)`. +Elektronskemu sporočilu lahko seveda priložite priponke. Uporabite `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // vstavi datoteko /path/to/example.zip v e-pošto pod imenom example.zip diff --git a/mail/tr/@home.texy b/mail/tr/@home.texy index 55691e530d..9d77e6a2b3 100644 --- a/mail/tr/@home.texy +++ b/mail/tr/@home.texy @@ -74,7 +74,7 @@ E-postalar kartpostal gibidir. Parolaları veya diğer kimlik bilgilerini asla e Ekler .[#toc-attachments] ------------------------- -Elbette e-postaya ekler de ekleyebilirsiniz. `addAttachment(string $file, string $content = null, string $contentType = null)` adresini kullanın. +Elbette e-postaya ekler de ekleyebilirsiniz. `addAttachment(string $file, ?string $content = null, ?string $contentType = null)` adresini kullanın. ```php // /path/to/example.zip dosyasını example.zip adı altında e-postaya ekler diff --git a/mail/uk/@home.texy b/mail/uk/@home.texy index ee34d14c1c..802b918506 100644 --- a/mail/uk/@home.texy +++ b/mail/uk/@home.texy @@ -74,7 +74,7 @@ $mail->setHtmlBody( Вкладення .[#toc-attachments] ----------------------------- -Зрозуміло, ви можете прикріплювати вкладення до електронних листів. Використовуйте команду `addAttachment(string $file, string $content = null, string $contentType = null)`. +Зрозуміло, ви можете прикріплювати вкладення до електронних листів. Використовуйте команду `addAttachment(string $file, ?string $content = null, ?string $contentType = null)`. ```php // вставляє файл /path/to/example.zip в електронний лист під ім'ям example.zip diff --git a/migrations/en/to-3-1.texy b/migrations/en/to-3-1.texy index 157e4e5ea4..f651b897da 100644 --- a/migrations/en/to-3-1.texy +++ b/migrations/en/to-3-1.texy @@ -65,7 +65,7 @@ Http - `Nette\Http\Request::getFile()` accepts array of keys and returns FileUpload|null - `Nette\Http\Session::getCookieParameters()` is deprecated - `Nette\Http\FileUpload::getName()` renamed to `getUntrustedName()` -- `Nette\Http\Url`: deprecated getBasePath(), getBaseUrl(), getRelativeUrl() (tyto metody jsou součástí `UrlScript`) +- `Nette\Http\Url`: deprecated `getBasePath()`, `getBaseUrl()`, `getRelativeUrl()` (these methods are part of `UrlScript`) - `Nette\Http\Response::$cookieHttpOnly` is deprecated - `Nette\Http\FileUpload::getImageSize()` returns pair `[width, height]` diff --git a/quickstart/bg/@home.texy b/quickstart/bg/@home.texy index 7938c891e0..f7bec3d2ea 100644 --- a/quickstart/bg/@home.texy +++ b/quickstart/bg/@home.texy @@ -88,8 +88,7 @@ Tracy (дебъгер) .[#toc-tracy-debugger] ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/bg/comments.texy b/quickstart/bg/comments.texy index d401e0eb9c..e8925ef9d7 100644 --- a/quickstart/bg/comments.texy +++ b/quickstart/bg/comments.texy @@ -93,10 +93,10 @@ $form->onSuccess[] = $this->commentFormSucceeded(...); ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer използва чужди ключове, за да о Както си спомняте, предадохме променливата `$post` на шаблона в `PostPresenter::renderShow()` и сега искаме да изброим всички коментари, които имат колона `post_id`, равна на нашата `$post->id`. Можете да направите това, като се обадите на `$post->related('comments')`. Всичко е толкова просто. Разгледайте получения код. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/bg/creating-posts.texy b/quickstart/bg/creating-posts.texy index a43b1fbb84..a65eb4f1bd 100644 --- a/quickstart/bg/creating-posts.texy +++ b/quickstart/bg/creating-posts.texy @@ -120,11 +120,11 @@ private function postFormSucceeded(array $data): void Ще добавим нова страница `edit` към `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Пост не найден'); @@ -149,12 +149,12 @@ public function renderEdit(int $postId): void ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Ако е посочен `postId`, това означава, че публикацията се редактира. В този случай ще проверим дали публикацията действително съществува и ако е така, ще я актуализираме в базата данни. Ако не е посочен `postId`, това означава, че ще бъде добавена нова публикация. +Ако е посочен `id`, това означава, че публикацията се редактира. В този случай ще проверим дали публикацията действително съществува и ако е така, ще я актуализираме в базата данни. Ако не е посочен `id`, това означава, че ще бъде добавена нова публикация. -Но откъде идва `postId`? Това е параметърът, който се предава на метода `renderEdit`. +Но откъде идва `id`? Това е параметърът, който се предава на метода `renderEdit`. Сега можете да добавите връзка за промяна на публикацията в шаблона `app/UI/Post/show.latte`: diff --git a/quickstart/bg/single-post.texy b/quickstart/bg/single-post.texy index 884487aa65..4a35ac958d 100644 --- a/quickstart/bg/single-post.texy +++ b/quickstart/bg/single-post.texy @@ -97,7 +97,7 @@ final class PostPresenter extends Nette\Application\UI\Presenter Проверка на ID на публикацията .[#toc-checking-post-id] ======================================================= -Какво ще стане, ако някой промени URL адреса и вмъкне несъществуващ `postId`? Трябва да предоставим на потребителя хубава страница за грешка "Страницата не е намерена". Нека да актуализираме метода `render` във файла `PostPresenter.php`: +Какво ще стане, ако някой промени URL адреса и вмъкне несъществуващ `id`? Трябва да предоставим на потребителя хубава страница за грешка "Страницата не е намерена". Нека да актуализираме метода `render` във файла `PostPresenter.php`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/cs/@home.texy b/quickstart/cs/@home.texy index e8b7683edd..83220197bc 100644 --- a/quickstart/cs/@home.texy +++ b/quickstart/cs/@home.texy @@ -88,8 +88,7 @@ V produkčním módu je Tracy samozřejmě vypnuta a nezobrazuje žádné citliv ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/cs/comments.texy b/quickstart/cs/comments.texy index 6d6f40ed0c..1792588cd8 100644 --- a/quickstart/cs/comments.texy +++ b/quickstart/cs/comments.texy @@ -93,10 +93,10 @@ Předchozí zápis znamená "po úspěšném odeslání formuláře zavolej meto ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer používá cizí klíče pro vyřešení vzájemného vz Jak si jistě pamatujete, do šablony jsme předali proměnnou `$post` pomocí metody `PostPresenter::renderShow()` a nyní chceme iterovat přes všechny komentáře, které mají hodnotu sloupce `post_id` shodnou s `$post->id`. Toho můžeme docílit voláním `$post->related('comments')`. Ano, takhle jednoduše. Podívejme se na výsledný kód: ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/cs/creating-posts.texy b/quickstart/cs/creating-posts.texy index d50b6d9a11..649e1c8674 100644 --- a/quickstart/cs/creating-posts.texy +++ b/quickstart/cs/creating-posts.texy @@ -120,11 +120,11 @@ Nyní přidáme také možnost editace příspěvku. Bude to velmi jednoduché. Přidáme novou stránku `edit` do presenteru `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ A upravíme metodu `postFormSucceeded`, která bude schopna jednak přidat nový ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Pokud je k dispozici parametr `postId`, znamená to, že budeme upravovat příspěvek. V tom případě ověříme, že požadovaný příspěvek opravdu existuje a pokud ano, aktualizujeme jej v databázi. Pokud parametr `postId` není k dispozici, pak to znamená, že by měl být nový příspěvek přidán. +Pokud je k dispozici parametr `id`, znamená to, že budeme upravovat příspěvek. V tom případě ověříme, že požadovaný příspěvek opravdu existuje a pokud ano, aktualizujeme jej v databázi. Pokud parametr `id` není k dispozici, pak to znamená, že by měl být nový příspěvek přidán. -Kde se však onen parametr `postId` vezme? Jedná se o parametr, který byl vložen do metody `renderEdit`. +Kde se však onen parametr `id` vezme? Jedná se o parametr, který byl vložen do metody `renderEdit`. Nyní můžeme přidat odkaz do šablony `app/UI/Post/show.latte`: diff --git a/quickstart/cs/single-post.texy b/quickstart/cs/single-post.texy index 9fcecbc952..9ff3f3dcd2 100644 --- a/quickstart/cs/single-post.texy +++ b/quickstart/cs/single-post.texy @@ -97,7 +97,7 @@ Pátá a poslední řádka šablony zobrazuje celý obsah jednoho konkrétního Kontrola ID příspěvku ===================== -Co se stane, když někdo změní ID v URL a vloží nějaké neexistující `postId`? Měli bychom uživateli nabídnout pěknou chybu typu "stránka nebyla nalezena". Pozměníme tedy trošku render metodu v `PostPresenter`: +Co se stane, když někdo změní ID v URL a vloží nějaké neexistující `id`? Měli bychom uživateli nabídnout pěknou chybu typu "stránka nebyla nalezena". Pozměníme tedy trošku render metodu v `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/de/@home.texy b/quickstart/de/@home.texy index 29ca05932a..61c7f0bea2 100644 --- a/quickstart/de/@home.texy +++ b/quickstart/de/@home.texy @@ -88,8 +88,7 @@ Im Produktionsmodus ist Tracy natürlich deaktiviert und gibt keine sensiblen In ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/de/comments.texy b/quickstart/de/comments.texy index be70000ab3..73bd45886b 100644 --- a/quickstart/de/comments.texy +++ b/quickstart/de/comments.texy @@ -93,10 +93,10 @@ Sie bedeutet "nachdem das Formular erfolgreich abgeschickt wurde, rufe die Metho ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Der Nette Database Explorer verwendet die Fremdschlüssel, um die Beziehungen zw Wie Sie sich vielleicht erinnern, haben wir die Variable `$post` an die Vorlage in `PostPresenter::renderShow()` übergeben, und jetzt wollen wir alle Kommentare durchgehen, deren Spalte `post_id` gleich unserer `$post->id` ist. Sie können dies tun, indem Sie `$post->related('comments')` aufrufen. So einfach ist das. Sehen Sie sich den resultierenden Code an. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/de/creating-posts.texy b/quickstart/de/creating-posts.texy index 2809596958..2c3b1955f6 100644 --- a/quickstart/de/creating-posts.texy +++ b/quickstart/de/creating-posts.texy @@ -120,11 +120,11 @@ Lassen Sie uns auch die Möglichkeit hinzufügen, bestehende Beiträge zu bearbe Wir fügen eine neue Seite `edit` zu `EditPresenter` hinzu: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ Und aktualisieren Sie die Methode `postFormSucceeded`, mit der Sie entweder eine ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Wenn der Parameter `postId` angegeben wird, bedeutet dies, dass ein Beitrag bearbeitet wird. In diesem Fall wird überprüft, ob der Beitrag wirklich existiert, und wenn ja, wird er in der Datenbank aktualisiert. Wenn der Parameter `postId` nicht angegeben wird, bedeutet dies, dass ein neuer Beitrag hinzugefügt wird. +Wenn der Parameter `id` angegeben wird, bedeutet dies, dass ein Beitrag bearbeitet wird. In diesem Fall wird überprüft, ob der Beitrag wirklich existiert, und wenn ja, wird er in der Datenbank aktualisiert. Wenn der Parameter `id` nicht angegeben wird, bedeutet dies, dass ein neuer Beitrag hinzugefügt wird. -Aber woher kommt die `postId`? Es ist der Parameter, der an die Methode `renderEdit` übergeben wird. +Aber woher kommt die `id`? Es ist der Parameter, der an die Methode `renderEdit` übergeben wird. Sie können nun einen Link zur Vorlage `app/UI/Post/show.latte` hinzufügen: diff --git a/quickstart/de/single-post.texy b/quickstart/de/single-post.texy index 4094ddbf4e..1c6f019bfa 100644 --- a/quickstart/de/single-post.texy +++ b/quickstart/de/single-post.texy @@ -97,7 +97,7 @@ In der fünften und letzten Zeile der Vorlage wird der gesamte Inhalt Ihres Beit Überprüfen der Post-ID .[#toc-checking-post-id] =============================================== -Was passiert, wenn jemand die URL ändert und `postId` einfügt, die nicht existiert? Wir sollten dem Benutzer eine schöne Fehlermeldung "Seite nicht gefunden" geben. Aktualisieren wir die Render-Methode in `PostPresenter`: +Was passiert, wenn jemand die URL ändert und `id` einfügt, die nicht existiert? Wir sollten dem Benutzer eine schöne Fehlermeldung "Seite nicht gefunden" geben. Aktualisieren wir die Render-Methode in `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/el/@home.texy b/quickstart/el/@home.texy index eec7edaab8..7261b6a7cc 100644 --- a/quickstart/el/@home.texy +++ b/quickstart/el/@home.texy @@ -88,8 +88,7 @@ Tracy (αποσφαλματωτής) .[#toc-tracy-debugger] ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/el/comments.texy b/quickstart/el/comments.texy index d0f31087eb..fd59190740 100644 --- a/quickstart/el/comments.texy +++ b/quickstart/el/comments.texy @@ -93,10 +93,10 @@ $form->onSuccess[] = $this->commentFormSucceeded(...); ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ private function commentFormSucceeded(\stdClass $data): void Όπως ίσως θυμάστε, έχουμε περάσει τη μεταβλητή `$post` στο πρότυπο στο `PostPresenter::renderShow()` και τώρα θέλουμε να επαναλάβουμε όλα τα σχόλια που έχουν τη στήλη `post_id` ίση με το `$post->id` μας . Μπορείτε να το κάνετε καλώντας το `$post->related('comments')`. Είναι τόσο απλό. Κοιτάξτε τον κώδικα που προκύπτει. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/el/creating-posts.texy b/quickstart/el/creating-posts.texy index ecfa1a3808..59f6ce8e92 100644 --- a/quickstart/el/creating-posts.texy +++ b/quickstart/el/creating-posts.texy @@ -120,11 +120,11 @@ private function postFormSucceeded(array $data): void Θα προσθέσουμε μια νέα σελίδα `edit` στο `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ public function renderEdit(int $postId): void ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Όταν παρέχεται η παράμετρος `postId`, σημαίνει ότι γίνεται επεξεργασία μιας ανάρτησης. Σε μια τέτοια περίπτωση, θα ελέγξουμε ότι η ανάρτηση υπάρχει πραγματικά και αν ναι, θα την ενημερώσουμε στη βάση δεδομένων. Εάν δεν παρέχεται η παράμετρος `postId`, σημαίνει ότι θα προστεθεί μια νέα ανάρτηση. +Όταν παρέχεται η παράμετρος `id`, σημαίνει ότι γίνεται επεξεργασία μιας ανάρτησης. Σε μια τέτοια περίπτωση, θα ελέγξουμε ότι η ανάρτηση υπάρχει πραγματικά και αν ναι, θα την ενημερώσουμε στη βάση δεδομένων. Εάν δεν παρέχεται η παράμετρος `id`, σημαίνει ότι θα προστεθεί μια νέα ανάρτηση. -Αλλά από πού προέρχεται το `postId`; Είναι η παράμετρος που δίνεται στη μέθοδο `renderEdit`. +Αλλά από πού προέρχεται το `id`; Είναι η παράμετρος που δίνεται στη μέθοδο `renderEdit`. Μπορείτε τώρα να προσθέσετε έναν σύνδεσμο στο πρότυπο `app/UI/Post/show.latte`: diff --git a/quickstart/el/single-post.texy b/quickstart/el/single-post.texy index 276c9e388e..e5ebda580e 100644 --- a/quickstart/el/single-post.texy +++ b/quickstart/el/single-post.texy @@ -97,7 +97,7 @@ final class PostPresenter extends Nette\Application\UI\Presenter Έλεγχος του αναγνωριστικού της δημοσίευσης .[#toc-checking-post-id] =================================================================== -Τι συμβαίνει αν κάποιος αλλάξει το URL και εισάγει το `postId` που δεν υπάρχει? Θα πρέπει να παρέχουμε στο χρήστη ένα ωραίο σφάλμα "η σελίδα δεν βρέθηκε". Ας ενημερώσουμε τη μέθοδο render στο `PostPresenter`: +Τι συμβαίνει αν κάποιος αλλάξει το URL και εισάγει το `id` που δεν υπάρχει? Θα πρέπει να παρέχουμε στο χρήστη ένα ωραίο σφάλμα "η σελίδα δεν βρέθηκε". Ας ενημερώσουμε τη μέθοδο render στο `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/en/@home.texy b/quickstart/en/@home.texy index 58e1528192..557b20c8cb 100644 --- a/quickstart/en/@home.texy +++ b/quickstart/en/@home.texy @@ -88,8 +88,7 @@ In the production mode, Tracy is, of course, disabled and does not reveal any se ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/en/comments.texy b/quickstart/en/comments.texy index 9b61ca9e96..b73b355cec 100644 --- a/quickstart/en/comments.texy +++ b/quickstart/en/comments.texy @@ -93,10 +93,10 @@ It means "after the form is successfully submitted, call the method `commentForm ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer uses the foreign keys to resolve relations between table As you may remember, we’ve passed the `$post` variable to the template in `PostPresenter::renderShow()` and now we want to iterate through all the comments that have the column `post_id` equal to our `$post->id`. You can do it by calling `$post->related('comments')`. It’s that simple. Look at the resulting code. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/en/creating-posts.texy b/quickstart/en/creating-posts.texy index f3f56f9704..221aeec2b9 100644 --- a/quickstart/en/creating-posts.texy +++ b/quickstart/en/creating-posts.texy @@ -120,11 +120,11 @@ Let’s also add the capability to edit existing posts. It shall be pretty simpl We’ll add a new `edit` page to the `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ And update the method `postFormSucceeded`, which will be able either to add a ne ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -When `postId` parameter is provided, it means that a post is being edited. In such case, we’ll check that the post really exists and if so, we’ll update it in the database. If the `postId` is not provided, it means that a new post shall be added. +When `id` parameter is provided, it means that a post is being edited. In such case, we’ll check that the post really exists and if so, we’ll update it in the database. If the `id` is not provided, it means that a new post shall be added. -But where does the `postId` come from? It is the parameter passed to `renderEdit` method. +But where does the `id` come from? It is the parameter passed to `renderEdit` method. You can now add a link to the `app/UI/Post/show.latte` template: diff --git a/quickstart/en/single-post.texy b/quickstart/en/single-post.texy index 251d86b7b8..4f34bc1d97 100644 --- a/quickstart/en/single-post.texy +++ b/quickstart/en/single-post.texy @@ -97,7 +97,7 @@ The fifth and the last line of the template displays full content of your post. Checking Post ID ================ -What happens if someone alters the URL and inserts `postId` which does not exist? We should provide the user with a nice "page not found" error. Let’s update the render method in `PostPresenter`: +What happens if someone alters the URL and inserts `id` which does not exist? We should provide the user with a nice "page not found" error. Let’s update the render method in `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/es/@home.texy b/quickstart/es/@home.texy index 32e558a689..bfad494e54 100644 --- a/quickstart/es/@home.texy +++ b/quickstart/es/@home.texy @@ -88,8 +88,7 @@ En el modo de producción, Tracy está, por supuesto, desactivado y no revela ni ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/es/comments.texy b/quickstart/es/comments.texy index 301842606f..7241127788 100644 --- a/quickstart/es/comments.texy +++ b/quickstart/es/comments.texy @@ -93,10 +93,10 @@ Significa "después de que el formulario se envíe correctamente, llama al méto ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer utiliza las claves externas para resolver las relaciones Como recordará, hemos pasado la variable `$post` a la plantilla en `PostPresenter::renderShow()` y ahora queremos iterar por todos los comentarios que tengan la columna `post_id` igual a nuestra `$post->id`. Puedes hacerlo llamando a `$post->related('comments')`. Así de sencillo. Mira el código resultante. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/es/creating-posts.texy b/quickstart/es/creating-posts.texy index d2f50aebdf..0c7bc6b660 100644 --- a/quickstart/es/creating-posts.texy +++ b/quickstart/es/creating-posts.texy @@ -120,11 +120,11 @@ Añadamos también la capacidad de editar entradas existentes. Será bastante si Añadiremos una nueva página `edit` a `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ Y actualizar el método `postFormSucceeded`, que será capaz de añadir un nuevo ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Cuando se proporciona el parámetro `postId`, significa que se está editando un post. En tal caso, comprobaremos que la entrada existe realmente y, si es así, la actualizaremos en la base de datos. Si no se proporciona el parámetro `postId`, significa que se añadirá un nuevo mensaje. +Cuando se proporciona el parámetro `id`, significa que se está editando un post. En tal caso, comprobaremos que la entrada existe realmente y, si es así, la actualizaremos en la base de datos. Si no se proporciona el parámetro `id`, significa que se añadirá un nuevo mensaje. -¿Pero de dónde viene `postId`? Es el parámetro que se pasa al método `renderEdit`. +¿Pero de dónde viene `id`? Es el parámetro que se pasa al método `renderEdit`. Ahora puede añadir un enlace a la plantilla `app/UI/Post/show.latte`: diff --git a/quickstart/es/single-post.texy b/quickstart/es/single-post.texy index 9d8e0f760f..687aedbd96 100644 --- a/quickstart/es/single-post.texy +++ b/quickstart/es/single-post.texy @@ -97,7 +97,7 @@ La quinta y última línea de la plantilla muestra el contenido completo de tu p Comprobando el ID del post .[#toc-checking-post-id] =================================================== -¿Qué pasa si alguien altera la URL e inserta `postId` que no existe? Deberíamos proporcionar al usuario un bonito error de "página no encontrada". Actualicemos el método render en `PostPresenter`: +¿Qué pasa si alguien altera la URL e inserta `id` que no existe? Deberíamos proporcionar al usuario un bonito error de "página no encontrada". Actualicemos el método render en `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/fr/@home.texy b/quickstart/fr/@home.texy index 5c68f72119..5e6ceaeb7e 100644 --- a/quickstart/fr/@home.texy +++ b/quickstart/fr/@home.texy @@ -88,8 +88,7 @@ En mode production, Tracy est, bien entendu, désactivé et ne révèle aucune i ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/fr/comments.texy b/quickstart/fr/comments.texy index 7824b5c274..931f8a36ff 100644 --- a/quickstart/fr/comments.texy +++ b/quickstart/fr/comments.texy @@ -93,10 +93,10 @@ Elle signifie "après que le formulaire ait été soumis avec succès, appelez l ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer utilise les clés étrangères pour résoudre les relati Comme vous vous en souvenez peut-être, nous avons passé la variable `$post` au modèle dans `PostPresenter::renderShow()` et maintenant nous voulons itérer à travers tous les commentaires qui ont la colonne `post_id` égale à notre `$post->id`. Vous pouvez le faire en appelant `$post->related('comments')`. C'est aussi simple que cela. Regardez le code résultant. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/fr/creating-posts.texy b/quickstart/fr/creating-posts.texy index b49c7ce1d3..0717e822ea 100644 --- a/quickstart/fr/creating-posts.texy +++ b/quickstart/fr/creating-posts.texy @@ -120,11 +120,11 @@ Ajoutons également la possibilité de modifier des messages existants. Ce sera Nous allons ajouter une nouvelle page `edit` au site `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ Et mettre à jour la méthode `postFormSucceeded`, qui permettra soit d'ajouter ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Lorsque le paramètre `postId` est fourni, cela signifie qu'un message est en cours de modification. Dans ce cas, nous vérifierons que le message existe réellement et si c'est le cas, nous le mettrons à jour dans la base de données. Si le paramètre `postId` n'est pas fourni, cela signifie qu'un nouveau message sera ajouté. +Lorsque le paramètre `id` est fourni, cela signifie qu'un message est en cours de modification. Dans ce cas, nous vérifierons que le message existe réellement et si c'est le cas, nous le mettrons à jour dans la base de données. Si le paramètre `id` n'est pas fourni, cela signifie qu'un nouveau message sera ajouté. -Mais d'où vient le `postId`? C'est le paramètre passé à la méthode `renderEdit`. +Mais d'où vient le `id`? C'est le paramètre passé à la méthode `renderEdit`. Vous pouvez maintenant ajouter un lien vers le modèle `app/UI/Post/show.latte`: diff --git a/quickstart/fr/single-post.texy b/quickstart/fr/single-post.texy index ab41927bc9..8659f68320 100644 --- a/quickstart/fr/single-post.texy +++ b/quickstart/fr/single-post.texy @@ -97,7 +97,7 @@ La cinquième et dernière ligne du modèle affiche le contenu complet de votre Vérification de l'ID du message .[#toc-checking-post-id] ======================================================== -Que se passe-t-il si quelqu'un modifie l'URL et insère `postId` qui n'existe pas ? Nous devrions fournir à l'utilisateur une belle erreur "page non trouvée". Mettons à jour la méthode de rendu dans `PostPresenter`: +Que se passe-t-il si quelqu'un modifie l'URL et insère `id` qui n'existe pas ? Nous devrions fournir à l'utilisateur une belle erreur "page non trouvée". Mettons à jour la méthode de rendu dans `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/hu/@home.texy b/quickstart/hu/@home.texy index 7bef01b7aa..eee76cf4d6 100644 --- a/quickstart/hu/@home.texy +++ b/quickstart/hu/@home.texy @@ -88,8 +88,7 @@ Termelési üzemmódban a Tracy természetesen le van tiltva, és nem árul el s ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/hu/comments.texy b/quickstart/hu/comments.texy index 7b9d5140fd..63f775794c 100644 --- a/quickstart/hu/comments.texy +++ b/quickstart/hu/comments.texy @@ -93,10 +93,10 @@ Ez azt jelenti, hogy "az űrlap sikeres elküldése után hívja meg az aktuáli ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ A Nette Database Explorer az idegen kulcsokat használja a táblák közötti ka Mint emlékezhetsz, a `$post` változót átadtuk a sablonban a `PostPresenter::renderShow()`, és most szeretnénk végigmenni az összes olyan megjegyzésen, amelynek a `post_id` oszlopa megegyezik a mi `$post->id`-unkkal . Ezt a `$post->related('comments')` meghívásával teheti meg. Ez ilyen egyszerű. Nézze meg a kapott kódot. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/hu/creating-posts.texy b/quickstart/hu/creating-posts.texy index ad8d0031d8..b61c4f1aca 100644 --- a/quickstart/hu/creating-posts.texy +++ b/quickstart/hu/creating-posts.texy @@ -120,11 +120,11 @@ Adjuk hozzá a meglévő hozzászólások szerkesztésének lehetőségét is. E Hozzáadunk egy új `edit` oldalt a `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ public function renderEdit(int $postId): void ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Ha a `postId` paramétert adjuk meg, az azt jelenti, hogy egy hozzászólást szerkesztünk. Ilyen esetben ellenőrizzük, hogy a bejegyzés valóban létezik-e, és ha igen, akkor frissítjük az adatbázisban. Ha a `postId` nincs megadva, akkor ez azt jelenti, hogy egy új bejegyzést kell hozzáadni. +Ha a `id` paramétert adjuk meg, az azt jelenti, hogy egy hozzászólást szerkesztünk. Ilyen esetben ellenőrizzük, hogy a bejegyzés valóban létezik-e, és ha igen, akkor frissítjük az adatbázisban. Ha a `id` nincs megadva, akkor ez azt jelenti, hogy egy új bejegyzést kell hozzáadni. -De honnan származik a `postId`? Ez a `renderEdit` metódusnak átadott paraméter. +De honnan származik a `id`? Ez a `renderEdit` metódusnak átadott paraméter. Most már hozzáadhat egy linket a `app/UI/Post/show.latte` sablonhoz: diff --git a/quickstart/hu/single-post.texy b/quickstart/hu/single-post.texy index ecf3c08193..90fdb96fc5 100644 --- a/quickstart/hu/single-post.texy +++ b/quickstart/hu/single-post.texy @@ -97,7 +97,7 @@ A sablon ötödik és egyben utolsó sorában megjelenik a bejegyzés teljes tar A bejegyzés azonosítójának ellenőrzése .[#toc-checking-post-id] =============================================================== -Mi történik, ha valaki megváltoztatja az URL-t és beilleszti a `postId` címet, ami nem létezik? Egy szép "az oldal nem található" hibaüzenetet kell adnunk a felhasználónak. Frissítsük a renderelési metódust a `PostPresenter`: +Mi történik, ha valaki megváltoztatja az URL-t és beilleszti a `id` címet, ami nem létezik? Egy szép "az oldal nem található" hibaüzenetet kell adnunk a felhasználónak. Frissítsük a renderelési metódust a `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/it/@home.texy b/quickstart/it/@home.texy index 2a13625d21..61fdeeb289 100644 --- a/quickstart/it/@home.texy +++ b/quickstart/it/@home.texy @@ -88,8 +88,7 @@ In modalità di produzione, Tracy è ovviamente disattivato e non rivela alcuna ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/it/comments.texy b/quickstart/it/comments.texy index 2d05d33dd8..3f349facd9 100644 --- a/quickstart/it/comments.texy +++ b/quickstart/it/comments.texy @@ -93,10 +93,10 @@ Significa "dopo che il modulo è stato inviato con successo, chiamare il metodo ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer utilizza le chiavi esterne per risolvere le relazioni tr Come ricorderete, abbiamo passato la variabile `$post` al modello in `PostPresenter::renderShow()` e ora vogliamo iterare tutti i commenti che hanno la colonna `post_id` uguale alla nostra `$post->id`. Per farlo, basta richiamare `$post->related('comments')`. È così semplice. Guardate il codice risultante. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/it/creating-posts.texy b/quickstart/it/creating-posts.texy index 8994fb7446..cb923a07ab 100644 --- a/quickstart/it/creating-posts.texy +++ b/quickstart/it/creating-posts.texy @@ -120,11 +120,11 @@ Aggiungiamo anche la possibilità di modificare i post esistenti. Sarà piuttost Aggiungeremo una nuova pagina `edit` al sito `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ E aggiornare il metodo `postFormSucceeded`, che potrà sia aggiungere un nuovo p ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Quando viene fornito il parametro `postId`, significa che si sta modificando un post. In questo caso, controlleremo che il post esista davvero e, in caso affermativo, lo aggiorneremo nel database. Se il parametro `postId` non viene fornito, significa che verrà aggiunto un nuovo post. +Quando viene fornito il parametro `id`, significa che si sta modificando un post. In questo caso, controlleremo che il post esista davvero e, in caso affermativo, lo aggiorneremo nel database. Se il parametro `id` non viene fornito, significa che verrà aggiunto un nuovo post. -Ma da dove viene `postId`? È il parametro passato al metodo `renderEdit`. +Ma da dove viene `id`? È il parametro passato al metodo `renderEdit`. Ora è possibile aggiungere un link al modello `app/UI/Post/show.latte`: diff --git a/quickstart/it/single-post.texy b/quickstart/it/single-post.texy index 67f67310f8..21d5484d05 100644 --- a/quickstart/it/single-post.texy +++ b/quickstart/it/single-post.texy @@ -97,7 +97,7 @@ La quinta e ultima riga del template mostra il contenuto completo del post. Controllo dell'ID del post .[#toc-checking-post-id] =================================================== -Cosa succede se qualcuno altera l'URL e inserisce `postId` che non esiste? Dovremmo fornire all'utente un simpatico errore di "pagina non trovata". Aggiorniamo il metodo di rendering in `PostPresenter`: +Cosa succede se qualcuno altera l'URL e inserisce `id` che non esiste? Dovremmo fornire all'utente un simpatico errore di "pagina non trovata". Aggiorniamo il metodo di rendering in `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/pl/@home.texy b/quickstart/pl/@home.texy index 945b081924..66f60870f7 100644 --- a/quickstart/pl/@home.texy +++ b/quickstart/pl/@home.texy @@ -88,8 +88,7 @@ Oczywiście w trybie produkcyjnym Tracy jest wyłączona i nie wyświetla żadny ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/pl/comments.texy b/quickstart/pl/comments.texy index 63e1cd9a42..06f203d8fe 100644 --- a/quickstart/pl/comments.texy +++ b/quickstart/pl/comments.texy @@ -93,10 +93,10 @@ Poprzedni zapis oznacza "po udanym przesłaniu formularza wywołaj metodę `comm ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer wykorzystuje klucze obce do rozwiązywania relacji międ Jak pamiętasz, przekazaliśmy zmienną `$post` do szablonu za pomocą metody `PostPresenter::renderShow()`, a teraz chcemy iterować po wszystkich komentarzach, które mają wartość kolumny `post_id` pasującą do `$post->id`. Możemy to zrobić, wywołując `$post->related('comments')`. Tak, to takie proste. Przyjrzyjmy się wynikowemu kodowi: ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/pl/creating-posts.texy b/quickstart/pl/creating-posts.texy index 21c8b57aa1..71cdab992e 100644 --- a/quickstart/pl/creating-posts.texy +++ b/quickstart/pl/creating-posts.texy @@ -120,11 +120,11 @@ Teraz dodamy również możliwość edycji postu. To będzie bardzo proste. Mamy Dodamy nową stronę `edit` do prezentera `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ I zmodyfikuj metodę `postFormSucceeded`, aby można było zarówno dodać nowy ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Jeśli parametr `postId` jest dostępny , oznacza to, że będziemy edytować post. W takim przypadku sprawdzimy, czy żądany post naprawdę istnieje, a jeśli tak, zaktualizuj go w bazie danych. Jeśli parametr `postId` nie jest dostępny, oznacza to, że należy dodać nowy post. +Jeśli parametr `id` jest dostępny , oznacza to, że będziemy edytować post. W takim przypadku sprawdzimy, czy żądany post naprawdę istnieje, a jeśli tak, zaktualizuj go w bazie danych. Jeśli parametr `id` nie jest dostępny, oznacza to, że należy dodać nowy post. -Skąd jednak bierze się parametr `postId`? Jest to parametr, który został wstawiony do metody `renderEdit`. +Skąd jednak bierze się parametr `id`? Jest to parametr, który został wstawiony do metody `renderEdit`. Teraz możemy dodać link do szablonu `app/UI/Post/show.latte`: diff --git a/quickstart/pl/single-post.texy b/quickstart/pl/single-post.texy index c4560ec9d9..d4f35d231c 100644 --- a/quickstart/pl/single-post.texy +++ b/quickstart/pl/single-post.texy @@ -97,7 +97,7 @@ Piąta i ostatnia linia szablonu wyświetla całą zawartość jednego konkretne Sprawdź identyfikator postu .[#toc-checking-post-id] ==================================================== -Co się stanie jeśli ktoś zmieni ID w URL i umieści jakiś nieistniejący `postId`? Powinniśmy zaoferować użytkownikowi ładny błąd "page not found". Zmodyfikujmy więc nieco metodę render w `PostPresenter`: +Co się stanie jeśli ktoś zmieni ID w URL i umieści jakiś nieistniejący `id`? Powinniśmy zaoferować użytkownikowi ładny błąd "page not found". Zmodyfikujmy więc nieco metodę render w `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/pt/@home.texy b/quickstart/pt/@home.texy index db19054540..5a097ade02 100644 --- a/quickstart/pt/@home.texy +++ b/quickstart/pt/@home.texy @@ -88,8 +88,7 @@ No modo de produção, Tracy está, naturalmente, desativada e não revela nenhu ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/pt/comments.texy b/quickstart/pt/comments.texy index fa9a750dcb..127573bc63 100644 --- a/quickstart/pt/comments.texy +++ b/quickstart/pt/comments.texy @@ -93,10 +93,10 @@ Significa "depois que o formulário for enviado com sucesso, ligue para o métod ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ O Nette Database Explorer utiliza as chaves estrangeiras para resolver as relaç Como você deve se lembrar, passamos a variável `$post` para o modelo em `PostPresenter::renderShow()` e agora queremos iterar através de todos os comentários que têm a coluna `post_id` igual ao nosso `$post->id`. Você pode fazer isso ligando para `$post->related('comments')`. É muito simples. Veja o código resultante. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/pt/creating-posts.texy b/quickstart/pt/creating-posts.texy index 9229124dfa..2034dcd60b 100644 --- a/quickstart/pt/creating-posts.texy +++ b/quickstart/pt/creating-posts.texy @@ -120,11 +120,11 @@ Vamos também acrescentar a capacidade de editar os postos existentes. Será mui Vamos adicionar uma nova página `edit` ao `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ E atualizar o método `postFormSucceeded`, que poderá ou adicionar um novo post ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Quando o parâmetro `postId` é fornecido, isso significa que um post está sendo editado. Nesse caso, verificaremos se o post realmente existe e, se for o caso, atualizá-lo-emos no banco de dados. Se o parâmetro `postId` não for fornecido, significa que um novo post será adicionado. +Quando o parâmetro `id` é fornecido, isso significa que um post está sendo editado. Nesse caso, verificaremos se o post realmente existe e, se for o caso, atualizá-lo-emos no banco de dados. Se o parâmetro `id` não for fornecido, significa que um novo post será adicionado. -Mas de onde vem o `postId`? É o parâmetro passado para o método `renderEdit`. +Mas de onde vem o `id`? É o parâmetro passado para o método `renderEdit`. Agora você pode adicionar um link para o modelo `app/UI/Post/show.latte`: diff --git a/quickstart/pt/single-post.texy b/quickstart/pt/single-post.texy index 2877303d12..7ff70300fa 100644 --- a/quickstart/pt/single-post.texy +++ b/quickstart/pt/single-post.texy @@ -97,7 +97,7 @@ A quinta e última linha do modelo exibe o conteúdo completo do seu post. Verificação da identificação do posto .[#toc-checking-post-id] ============================================================== -O que acontece se alguém altera a URL e insere `postId` que não existe? Devemos fornecer ao usuário um bom erro de "página não encontrada". Vamos atualizar o método de renderização em `PostPresenter`: +O que acontece se alguém altera a URL e insere `id` que não existe? Devemos fornecer ao usuário um bom erro de "página não encontrada". Vamos atualizar o método de renderização em `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/ro/@home.texy b/quickstart/ro/@home.texy index 3fad37b9fe..d8df6d0988 100644 --- a/quickstart/ro/@home.texy +++ b/quickstart/ro/@home.texy @@ -88,8 +88,7 @@ Tracy vă va ajuta în mod semnificativ în timpul vânătorii de erori. Reține ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/ro/comments.texy b/quickstart/ro/comments.texy index 4737763cec..554524a9d2 100644 --- a/quickstart/ro/comments.texy +++ b/quickstart/ro/comments.texy @@ -93,10 +93,10 @@ Aceasta înseamnă "după ce formularul este trimis cu succes, apelați metoda ` ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer folosește cheile străine pentru a rezolva relațiile d După cum probabil vă amintiți, am trecut variabila `$post` în șablonul din `PostPresenter::renderShow()` și acum dorim să iterăm prin toate comentariile care au coloana `post_id` egală cu a noastră `$post->id`. Puteți face acest lucru apelând `$post->related('comments')`. Este atât de simplu. Priviți codul rezultat. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/ro/creating-posts.texy b/quickstart/ro/creating-posts.texy index 3ac62b0041..b4276da862 100644 --- a/quickstart/ro/creating-posts.texy +++ b/quickstart/ro/creating-posts.texy @@ -120,11 +120,11 @@ Să adăugăm, de asemenea, posibilitatea de a edita posturile existente. Va fi Vom adăuga o nouă pagină `edit` la `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ public function renderEdit(int $postId): void ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Atunci când este furnizat parametrul `postId`, înseamnă că se editează o postare. În acest caz, vom verifica dacă postul există cu adevărat și, dacă da, îl vom actualiza în baza de date. În cazul în care parametrul `postId` nu este furnizat, înseamnă că se va adăuga o nouă postare. +Atunci când este furnizat parametrul `id`, înseamnă că se editează o postare. În acest caz, vom verifica dacă postul există cu adevărat și, dacă da, îl vom actualiza în baza de date. În cazul în care parametrul `id` nu este furnizat, înseamnă că se va adăuga o nouă postare. -Dar de unde provine `postId`? Este parametrul transmis metodei `renderEdit`. +Dar de unde provine `id`? Este parametrul transmis metodei `renderEdit`. Acum puteți adăuga un link la șablonul `app/UI/Post/show.latte`: diff --git a/quickstart/ro/single-post.texy b/quickstart/ro/single-post.texy index 8750ff2e50..79c6d784f3 100644 --- a/quickstart/ro/single-post.texy +++ b/quickstart/ro/single-post.texy @@ -97,7 +97,7 @@ A cincea și ultima linie a șablonului afișează conținutul complet al postă Verificarea ID-ului postului .[#toc-checking-post-id] ===================================================== -Ce se întâmplă dacă cineva modifică URL-ul și inserează `postId` care nu există? Ar trebui să oferim utilizatorului o eroare frumoasă de tipul "pagina nu a fost găsită". Să actualizăm metoda de redare din `PostPresenter`: +Ce se întâmplă dacă cineva modifică URL-ul și inserează `id` care nu există? Ar trebui să oferim utilizatorului o eroare frumoasă de tipul "pagina nu a fost găsită". Să actualizăm metoda de redare din `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/ru/@home.texy b/quickstart/ru/@home.texy index 57c90fd832..2efef9f2bc 100644 --- a/quickstart/ru/@home.texy +++ b/quickstart/ru/@home.texy @@ -88,8 +88,7 @@ Tracy существенно поможет вам в поиске ошибок. ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/ru/comments.texy b/quickstart/ru/comments.texy index dceae86048..35c55425db 100644 --- a/quickstart/ru/comments.texy +++ b/quickstart/ru/comments.texy @@ -93,10 +93,10 @@ $form->onSuccess[] = $this->commentFormSucceeded(...); ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer использует внешние ключи для р Как вы помните, мы передали переменную `$post` шаблону в `PostPresenter::renderShow()` и теперь хотим перебрать все комментарии, у которых столбец `post_id` равен нашему `$post->id`. Вы можете сделать это, вызвав `$post->related('comments')`. Это так просто. Посмотрите на полученный код. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/ru/creating-posts.texy b/quickstart/ru/creating-posts.texy index f58473b438..bba63afe95 100644 --- a/quickstart/ru/creating-posts.texy +++ b/quickstart/ru/creating-posts.texy @@ -120,11 +120,11 @@ private function postFormSucceeded(array $data): void Мы добавим новую страницу `edit` в `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Пост не найден'); @@ -149,12 +149,12 @@ public function renderEdit(int $postId): void ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Если указан параметр `postId`, это означает, что пост редактируется. В этом случае мы проверим, действительно ли пост существует, и если да, то обновим его в базе данных. Если `postId` не указан, это означает, что будет добавлен новый пост. +Если указан параметр `id`, это означает, что пост редактируется. В этом случае мы проверим, действительно ли пост существует, и если да, то обновим его в базе данных. Если `id` не указан, это означает, что будет добавлен новый пост. -Но откуда берется `postId`? Это параметр, передаваемый методу `renderEdit`. +Но откуда берется `id`? Это параметр, передаваемый методу `renderEdit`. Теперь вы можете добавить ссылку для изменения поста в шаблон `app/UI/Post/show.latte`: diff --git a/quickstart/ru/single-post.texy b/quickstart/ru/single-post.texy index d0bd56c199..a4529bc779 100644 --- a/quickstart/ru/single-post.texy +++ b/quickstart/ru/single-post.texy @@ -97,7 +97,7 @@ final class PostPresenter extends Nette\Application\UI\Presenter Проверка идентификатора поста .[#toc-checking-post-id] ====================================================== -Что произойдет, если кто-то изменит URL и вставит несуществующий `postId`? Мы должны предоставить пользователю красивую страницу ошибки «страница не найдена». Давайте обновим метод `render` в файле `PostPresenter.php`: +Что произойдет, если кто-то изменит URL и вставит несуществующий `id`? Мы должны предоставить пользователю красивую страницу ошибки «страница не найдена». Давайте обновим метод `render` в файле `PostPresenter.php`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/sl/@home.texy b/quickstart/sl/@home.texy index 4eb8c41cf2..de950f0bcc 100644 --- a/quickstart/sl/@home.texy +++ b/quickstart/sl/@home.texy @@ -88,8 +88,7 @@ V produkcijskem načinu je Tracy seveda onemogočen in ne razkriva nobenih obču ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/sl/comments.texy b/quickstart/sl/comments.texy index b192449353..029604c0e1 100644 --- a/quickstart/sl/comments.texy +++ b/quickstart/sl/comments.texy @@ -93,10 +93,10 @@ Pomeni "po uspešni oddaji obrazca pokliči metodo `commentFormSucceeded` trenut ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer uporablja tuje ključe za reševanje razmerij med tabela Kot se morda spomnite, smo spremenljivko `$post` posredovali predlogi v `PostPresenter::renderShow()`, zdaj pa želimo iterirati po vseh komentarjih, ki imajo stolpec `post_id` enak našemu `$post->id`. To lahko storite tako, da pokličete `$post->related('comments')`. Tako preprosto je. Oglejte si nastalo kodo. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/sl/creating-posts.texy b/quickstart/sl/creating-posts.texy index 7625168428..c539705faf 100644 --- a/quickstart/sl/creating-posts.texy +++ b/quickstart/sl/creating-posts.texy @@ -120,11 +120,11 @@ Dodajmo tudi možnost urejanja obstoječih objav. To bo precej preprosto - že i Na spletno stran `EditPresenter` bomo dodali novo stran `edit`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ In posodobite metodo `postFormSucceeded`, s katero bo mogoče dodati novo objavo ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Če je podan parameter `postId`, to pomeni, da se prispevek ureja. V takem primeru bomo preverili, ali objava res obstaja, in če je tako, jo bomo posodobili v zbirki podatkov. Če parameter `postId` ni naveden, to pomeni, da bo dodana nova objava. +Če je podan parameter `id`, to pomeni, da se prispevek ureja. V takem primeru bomo preverili, ali objava res obstaja, in če je tako, jo bomo posodobili v zbirki podatkov. Če parameter `id` ni naveden, to pomeni, da bo dodana nova objava. -Toda od kod prihaja podatek `postId`? To je parameter, ki ga posredujemo metodi `renderEdit`. +Toda od kod prihaja podatek `id`? To je parameter, ki ga posredujemo metodi `renderEdit`. Zdaj lahko dodate povezavo do predloge `app/UI/Post/show.latte`: diff --git a/quickstart/sl/single-post.texy b/quickstart/sl/single-post.texy index 64ef66ab2b..303475203a 100644 --- a/quickstart/sl/single-post.texy +++ b/quickstart/sl/single-post.texy @@ -97,7 +97,7 @@ V peti in zadnji vrstici predloge je prikazana celotna vsebina vašega prispevka Preverjanje ID objave .[#toc-checking-post-id] ============================================== -Kaj se zgodi, če nekdo spremeni naslov URL in vstavi `postId`, ki ne obstaja? Uporabniku moramo zagotoviti lepo napako "stran ni bila najdena". Posodobimo metodo upodabljanja v `PostPresenter`: +Kaj se zgodi, če nekdo spremeni naslov URL in vstavi `id`, ki ne obstaja? Uporabniku moramo zagotoviti lepo napako "stran ni bila najdena". Posodobimo metodo upodabljanja v `PostPresenter`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/tr/@home.texy b/quickstart/tr/@home.texy index 75b9349a31..96f177f22a 100644 --- a/quickstart/tr/@home.texy +++ b/quickstart/tr/@home.texy @@ -88,8 +88,7 @@ Tracy, hataları ararken size önemli ölçüde yardımcı olacaktır. Ayrıca, ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/tr/comments.texy b/quickstart/tr/comments.texy index e7913724aa..214660744a 100644 --- a/quickstart/tr/comments.texy +++ b/quickstart/tr/comments.texy @@ -93,10 +93,10 @@ $form->onSuccess[] = $this->commentFormSucceeded(...); ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer, tablolar arasındaki ilişkileri çözmek için yabanc Hatırlayabileceğiniz gibi, `$post` değişkenini `PostPresenter::renderShow()` adresindeki şablona aktardık ve şimdi `post_id` sütunu `$post->id` sütunumuza eşit olan tüm yorumları yinelemek istiyoruz. Bunu `$post->related('comments')` adresini çağırarak yapabilirsiniz. Bu kadar basit. Ortaya çıkan koda bakın. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/tr/creating-posts.texy b/quickstart/tr/creating-posts.texy index 31e814f137..f64470ab9f 100644 --- a/quickstart/tr/creating-posts.texy +++ b/quickstart/tr/creating-posts.texy @@ -120,11 +120,11 @@ Mevcut gönderileri düzenleme özelliğini de ekleyelim. Oldukça basit olacak `EditPresenter` adresine yeni bir `edit` sayfası ekleyeceğiz: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Post not found'); @@ -149,12 +149,12 @@ Ve yeni bir gönderi ekleyebilecek (şimdi olduğu gibi) veya mevcut olanları d ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -`postId` parametresi sağlandığında, bir gönderinin düzenlenmekte olduğu anlamına gelir. Böyle bir durumda, gönderinin gerçekten var olup olmadığını kontrol edeceğiz ve eğer varsa, veritabanında güncelleyeceğiz. `postId` parametresi sağlanmazsa, yeni bir yazı ekleneceği anlamına gelir. +`id` parametresi sağlandığında, bir gönderinin düzenlenmekte olduğu anlamına gelir. Böyle bir durumda, gönderinin gerçekten var olup olmadığını kontrol edeceğiz ve eğer varsa, veritabanında güncelleyeceğiz. `id` parametresi sağlanmazsa, yeni bir yazı ekleneceği anlamına gelir. -Peki `postId` nereden geliyor? `renderEdit` yöntemine aktarılan parametredir. +Peki `id` nereden geliyor? `renderEdit` yöntemine aktarılan parametredir. Artık `app/UI/Post/show.latte` şablonuna bir bağlantı ekleyebilirsiniz: diff --git a/quickstart/tr/single-post.texy b/quickstart/tr/single-post.texy index d28353c6d6..7d88554b48 100644 --- a/quickstart/tr/single-post.texy +++ b/quickstart/tr/single-post.texy @@ -97,7 +97,7 @@ Basit bir ifadeyle, `title` adlı bir bloğu *yeniden tanımlar*. Bu blok *düze Gönderi Kimliğini Kontrol Etme .[#toc-checking-post-id] ======================================================= -Birisi URL'yi değiştirir ve mevcut olmayan `postId` adresini eklerse ne olur? Kullanıcıya güzel bir "sayfa bulunamadı" hatası vermeliyiz. `PostPresenter` adresindeki render yöntemini güncelleyelim: +Birisi URL'yi değiştirir ve mevcut olmayan `id` adresini eklerse ne olur? Kullanıcıya güzel bir "sayfa bulunamadı" hatası vermeliyiz. `PostPresenter` adresindeki render yöntemini güncelleyelim: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/quickstart/uk/@home.texy b/quickstart/uk/@home.texy index ca976b7cc7..916b207e10 100644 --- a/quickstart/uk/@home.texy +++ b/quickstart/uk/@home.texy @@ -88,8 +88,7 @@ Tracy суттєво допоможе вам у пошуку помилок. Т ```php .{file:app/Bootstrap.php} ... -$configurator->setDebugMode(false); -$configurator->enableTracy($rootDir . '/log'); +$this->configurator->setDebugMode(false); ... ``` diff --git a/quickstart/uk/comments.texy b/quickstart/uk/comments.texy index d75c31fac1..7fb670496e 100644 --- a/quickstart/uk/comments.texy +++ b/quickstart/uk/comments.texy @@ -93,10 +93,10 @@ $form->onSuccess[] = $this->commentFormSucceeded(...); ```php .{file:app/UI/Post/PostPresenter.php} private function commentFormSucceeded(\stdClass $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); $this->database->table('comments')->insert([ - 'post_id' => $postId, + 'post_id' => $id, 'name' => $data->name, 'email' => $data->email, 'content' => $data->content, @@ -134,7 +134,7 @@ Nette Database Explorer використовує зовнішні ключі д Як ви пам'ятаєте, ми передали змінну `$post` шаблону в `PostPresenter::renderShow()` і тепер хочемо перебрати всі коментарі, у яких стовпець `post_id` дорівнює нашому `$post->id`. Ви можете зробити це, викликавши `$post->related('comments')`. Це так просто. Подивіться на отриманий код. ```php .{file:app/UI/Post/PostPresenter.php} -public function renderShow(int $postId): void +public function renderShow(int $id): void { ... $this->template->post = $post; diff --git a/quickstart/uk/creating-posts.texy b/quickstart/uk/creating-posts.texy index 8922d3137b..b74174d402 100644 --- a/quickstart/uk/creating-posts.texy +++ b/quickstart/uk/creating-posts.texy @@ -120,11 +120,11 @@ private function postFormSucceeded(array $data): void Ми додамо нову сторінку `edit` до `EditPresenter`: ```php .{file:app/UI/Edit/EditPresenter.php} -public function renderEdit(int $postId): void +public function renderEdit(int $id): void { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); if (!$post) { $this->error('Пост не найден'); @@ -149,12 +149,12 @@ public function renderEdit(int $postId): void ```php .{file:app/UI/Edit/EditPresenter.php} private function postFormSucceeded(array $data): void { - $postId = $this->getParameter('postId'); + $id = $this->getParameter('id'); - if ($postId) { + if ($id) { $post = $this->database ->table('posts') - ->get($postId); + ->get($id); $post->update($data); } else { @@ -168,9 +168,9 @@ private function postFormSucceeded(array $data): void } ``` -Якщо вказано параметр `postId`, це означає, що пост редагується. У цьому випадку ми перевіримо, чи дійсно пост існує, і якщо так, то оновимо його в базі даних. Якщо `postId` не вказано, це означає, що буде додано новий пост. +Якщо вказано параметр `id`, це означає, що пост редагується. У цьому випадку ми перевіримо, чи дійсно пост існує, і якщо так, то оновимо його в базі даних. Якщо `id` не вказано, це означає, що буде додано новий пост. -Але звідки береться `postId`? Це параметр, що передається методу `renderEdit`. +Але звідки береться `id`? Це параметр, що передається методу `renderEdit`. Тепер ви можете додати посилання для зміни поста в шаблон `app/UI/Post/show.latte`: diff --git a/quickstart/uk/single-post.texy b/quickstart/uk/single-post.texy index 718c508745..1434782539 100644 --- a/quickstart/uk/single-post.texy +++ b/quickstart/uk/single-post.texy @@ -97,7 +97,7 @@ final class PostPresenter extends Nette\Application\UI\Presenter Перевірка ідентифікатора поста .[#toc-checking-post-id] ======================================================= -Що станеться, якщо хтось змінить URL і вставить неіснуючий `postId`? Ми повинні надати користувачеві красиву сторінку помилки "сторінку не знайдено". Давайте оновимо метод `render` у файлі `PostPresenter.php`: +Що станеться, якщо хтось змінить URL і вставить неіснуючий `id`? Ми повинні надати користувачеві красиву сторінку помилки "сторінку не знайдено". Давайте оновимо метод `render` у файлі `PostPresenter.php`: ```php .{file:app/UI/Post/PostPresenter.php} public function renderShow(int $id): void diff --git a/schema/bg/@home.texy b/schema/bg/@home.texy index 06400a7c5b..a86efec30c 100644 --- a/schema/bg/@home.texy +++ b/schema/bg/@home.texy @@ -197,7 +197,7 @@ Expect::anyOf(Expect::string('hello'), true, null)->firstIsDefault(); Структурите са обекти с определени ключове. Всяка от тези двойки ключ => стойност се нарича "свойство": -Структурите приемат масиви и обекти и връщат обекти `stdClass` (освен ако не ги промените с `castTo('array')` и т.н.). +Структурите приемат масиви и обекти и връщат обекти `stdClass`. По подразбиране всички свойства са незадължителни и имат стойност по подразбиране `null`. Можете да дефинирате задължителни свойства, като използвате `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // ОК, връща {'optional' => null, 'nullable' => null} ``` +Масивът от всички свойства на структурата се връща от метода `getShape()`. + По подразбиране във входните данни не може да има допълнителни елементи: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ОШИБКА ``` +Можете да създадете нова структура, като я извлечете от друга с помощта на `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Масив .[#toc-array] +------------------- + +Масив с дефинирани ключове. Прилагат се същите правила като за [структурите |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Можете да дефинирате и индексиран масив, известен като кортеж: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Остарели елементи .[#toc-ustarevsie-elementy] --------------------------------------------- diff --git a/schema/cs/@home.texy b/schema/cs/@home.texy index b2d8b4b01f..5adb759b64 100644 --- a/schema/cs/@home.texy +++ b/schema/cs/@home.texy @@ -197,7 +197,7 @@ Struktury Struktury jsou objekty s definovanými klíči. Každá z dvojic klíč => hodnota je označována jako „vlastnost“: -Struktury přijímají pole a objekty a vrací objekty `stdClass` (pokud to nezměníte pomocí `castTo('array')` apod). +Struktury přijímají pole a objekty a vrací objekty `stdClass`. Ve výchozím nastavení jsou všechny vlastnosti volitelné a mají výchozí hodnotu `null`. Povinné vlastnosti můžete definovat pomocí `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, vrací {'optional' => null, 'nullable' => null} ``` +Pole všech vlastností struktury vrací metoda `getShape()`. + Ve výchozím nastavení nemohou být ve vstupních datech žádné položky navíc: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // CHYBA ``` +Novou strukturu můžete vytvořit odvozením od jiné pomocí `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Pole .{data-version:1.3.2} +-------------------------- + +Pole s definovanými klíči. Platí pro něj vše co [struktury|#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // výchozí hodnota je null +]); +``` + +Lze definovat také indexované pole, známé jako tuple: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Zastaralé vlastnosti -------------------- diff --git a/schema/de/@home.texy b/schema/de/@home.texy index e9493a67c2..19bc03279b 100644 --- a/schema/de/@home.texy +++ b/schema/de/@home.texy @@ -197,7 +197,7 @@ Strukturen .[#toc-structures] Strukturen sind Objekte mit definierten Schlüsseln. Jedes dieser Schlüssel => Wert-Paare wird als "Eigenschaft" bezeichnet: -Strukturen akzeptieren Arrays und Objekte und geben Objekte zurück `stdClass` (es sei denn, Sie ändern dies mit `castTo('array')`, etc.). +Strukturen akzeptieren Arrays und Objekte und geben Objekte zurück `stdClass`. Standardmäßig sind alle Eigenschaften optional und haben einen Standardwert von `null`. Obligatorische Eigenschaften können Sie mit `required()` definieren: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, liefert {'optional' => null, 'nullable' => null} ``` +Das Array mit allen Struktureigenschaften wird von der Methode `getShape()` zurückgegeben. + Standardmäßig können keine zusätzlichen Elemente in den Eingabedaten enthalten sein: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ERROR ``` +Sie können eine neue Struktur erstellen, indem Sie mit `extend()` von einer anderen ableiten: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Array .[#toc-array] +------------------- + +Ein Array mit definierten Schlüsseln. Es gelten die gleichen Regeln wie für [Strukturen |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Sie können auch ein indiziertes Array, ein sogenanntes Tupel, definieren: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Verwerfungen .[#toc-deprecations] --------------------------------- diff --git a/schema/el/@home.texy b/schema/el/@home.texy index 73d579437b..d8e72302de 100644 --- a/schema/el/@home.texy +++ b/schema/el/@home.texy @@ -197,7 +197,7 @@ Expect::anyOf(Expect::string('hello'), true, null)->firstIsDefault(); Οι δομές είναι αντικείμενα με καθορισμένα κλειδιά. Κάθε ένα από αυτά τα ζεύγη κλειδί => τιμή αναφέρεται ως "ιδιότητα": -Οι δομές δέχονται πίνακες και αντικείμενα και επιστρέφουν αντικείμενα `stdClass` (εκτός αν το αλλάξετε με το `castTo('array')`, κ.λπ.). +Οι δομές δέχονται πίνακες και αντικείμενα και επιστρέφουν αντικείμενα `stdClass`. Από προεπιλογή, όλες οι ιδιότητες είναι προαιρετικές και έχουν προεπιλεγμένη τιμή `null`. Μπορείτε να ορίσετε υποχρεωτικές ιδιότητες χρησιμοποιώντας το `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, επιστρέφει {'optional' => null, 'nullable' => null} ``` +Ο πίνακας όλων των ιδιοτήτων της δομής επιστρέφεται από τη μέθοδο `getShape()`. + Από προεπιλογή, δεν μπορούν να υπάρχουν επιπλέον στοιχεία στα δεδομένα εισόδου: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ΣΦΑΛΜΑ ``` +Μπορείτε να δημιουργήσετε μια νέα δομή παράγοντας από μια άλλη χρησιμοποιώντας το `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Συστοιχία .[#toc-array] +----------------------- + +Ένας πίνακας με καθορισμένα κλειδιά. Ισχύουν οι ίδιοι κανόνες όπως και για [τις δομές |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Μπορείτε επίσης να ορίσετε έναν δεικτοδοτούμενο πίνακα, γνωστό ως πλειάδα: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Αποσβέσεις .[#toc-deprecations] ------------------------------- diff --git a/schema/en/@home.texy b/schema/en/@home.texy index e9da6d083a..5a47157acd 100644 --- a/schema/en/@home.texy +++ b/schema/en/@home.texy @@ -197,7 +197,7 @@ Structures Structures are objects with defined keys. Each of these key => value pairs is referred to as a "property": -Structures accept arrays and objects and return objects `stdClass` (unless you change it with `castTo('array')`, etc.). +Structures accept arrays and objects and return objects `stdClass`. By default, all properties are optional and have a default value of `null`. You can define mandatory properties using `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, returns {'optional' => null, 'nullable' => null} ``` +The array of all structure properties is returned by the `getShape()` method. + By default, there can be no extra items in the input data: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ERROR ``` +You can create a new structure by deriving from another using `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Array .{data-version:1.3.2} +--------------------------- + +An array with defined keys. The same rules apply as for [structures|#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +You can also define an indexed array, known as a tuple: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Deprecations ------------ diff --git a/schema/es/@home.texy b/schema/es/@home.texy index 5610a275b7..4334202fcc 100644 --- a/schema/es/@home.texy +++ b/schema/es/@home.texy @@ -197,7 +197,7 @@ Estructuras .[#toc-structures] Las estructuras son objetos con claves definidas. Cada uno de estos pares clave => valor se denomina "propiedad": -Las estructuras aceptan arrays y objetos y devuelven objetos `stdClass` (a menos que lo cambies con `castTo('array')`, etc.). +Las estructuras aceptan matrices y objetos y devuelven objetos `stdClass`. Por defecto, todas las propiedades son opcionales y tienen un valor por defecto de `null`. Puede definir propiedades obligatorias utilizando `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, devuelve {'optional' => null, 'nullable' => null} ``` +El array de todas las propiedades de la estructura es devuelto por el método `getShape()`. + Por defecto, no puede haber elementos adicionales en los datos de entrada: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ERROR ``` +Puede crear una nueva estructura derivando de otra mediante `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Matriz .[#toc-array] +-------------------- + +Un array con claves definidas. Se aplican las mismas reglas que para [las estructuras |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +También puedes definir una matriz indexada, conocida como tupla: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Depreciaciones .[#toc-deprecations] ----------------------------------- diff --git a/schema/fr/@home.texy b/schema/fr/@home.texy index 036493c90a..0019032c5e 100644 --- a/schema/fr/@home.texy +++ b/schema/fr/@home.texy @@ -197,7 +197,7 @@ Structures .[#toc-structures] Les structures sont des objets avec des clés définies. Chacune de ces paires clé => valeur est appelée "propriété" : -Les structures acceptent des tableaux et des objets et renvoient des objets `stdClass` (sauf si vous le changez avec `castTo('array')`, etc.). +Les structures acceptent des tableaux et des objets et renvoient des objets `stdClass`. Par défaut, toutes les propriétés sont facultatives et ont une valeur par défaut de `null`. Vous pouvez définir des propriétés obligatoires en utilisant `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, retourne {'optional' => null, 'nullable' => null}. ``` +Le tableau de toutes les propriétés de la structure est renvoyé par la méthode `getShape()`. + Par défaut, il ne peut y avoir aucun élément supplémentaire dans les données d'entrée : ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ERREUR ``` +Vous pouvez créer une nouvelle structure en dérivant d'une autre à l'aide de `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Tableau .[#toc-array] +--------------------- + +Un tableau dont les clés sont définies. Les mêmes règles que pour les [structures |#structure] s'appliquent. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Vous pouvez également définir un tableau indexé, appelé tuple : + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Dépréciations .[#toc-deprecations] ---------------------------------- diff --git a/schema/hu/@home.texy b/schema/hu/@home.texy index c98bb38845..1c9423063c 100644 --- a/schema/hu/@home.texy +++ b/schema/hu/@home.texy @@ -197,7 +197,7 @@ Struktúrák .[#toc-structures] A struktúrák meghatározott kulcsokkal rendelkező objektumok. A kulcs => érték párok mindegyikét "tulajdonságnak" nevezzük: -A struktúrák tömböket és objektumokat fogadnak el, és objektumokat adnak vissza `stdClass` (hacsak nem változtatjuk meg a `castTo('array')`, stb. segítségével). +A struktúrák tömböket és objektumokat fogadnak, és objektumokat adnak vissza `stdClass`. Alapértelmezés szerint minden tulajdonság opcionális, és alapértelmezett értéke `null`. Kötelező tulajdonságokat a `required()` segítségével lehet definiálni: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, visszatér {'optional' => null, 'nullable' => null} ``` +A `getShape()` módszer a struktúra összes tulajdonságát tartalmazó tömböt adja vissza. + Alapértelmezés szerint a bemeneti adatokban nem lehetnek extra elemek: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // HIBA ``` +Új struktúrát hozhat létre egy másik struktúrából származtatva a `extend()` segítségével: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Array .[#toc-array] +------------------- + +Meghatározott kulcsokkal rendelkező tömb. Ugyanazok a szabályok vonatkoznak rá, mint a [struktúrákra |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Definiálhatunk indexelt tömböt is, amelyet tuple-nek nevezünk: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Deprecations .[#toc-deprecations] --------------------------------- diff --git a/schema/it/@home.texy b/schema/it/@home.texy index 01c04d05c8..3b1faef1c6 100644 --- a/schema/it/@home.texy +++ b/schema/it/@home.texy @@ -197,7 +197,7 @@ Strutture .[#toc-structures] Le strutture sono oggetti con chiavi definite. Ciascuna di queste coppie chiave => valore viene definita "proprietà": -Le strutture accettano array e oggetti e restituiscono oggetti `stdClass` (a meno che non si cambi con `castTo('array')`, ecc.). +Le strutture accettano array e oggetti e restituiscono oggetti `stdClass`. Per impostazione predefinita, tutte le proprietà sono opzionali e hanno un valore predefinito di `null`. È possibile definire proprietà obbligatorie utilizzando `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, restituisce {'optional' => null, 'nullable' => null} ``` +L'array di tutte le proprietà della struttura viene restituito dal metodo `getShape()`. + Per impostazione predefinita, non ci possono essere elementi extra nei dati di input: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ERRORE ``` +È possibile creare una nuova struttura derivandola da un'altra utilizzando `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Schieramento .[#toc-array] +-------------------------- + +Un array con chiavi definite. Si applicano le stesse regole delle [strutture |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +È anche possibile definire un array indicizzato, noto come tupla: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Deprecazioni .[#toc-deprecations] --------------------------------- diff --git a/schema/ja/@home.texy b/schema/ja/@home.texy index a29b9a1617..fba7d1b25e 100644 --- a/schema/ja/@home.texy +++ b/schema/ja/@home.texy @@ -197,7 +197,7 @@ Expect::anyOf(Expect::string('hello'), true, null)->firstIsDefault(); 構造体は、定義されたキーを持つオブジェクトである。このキー => 値のペアをそれぞれ「プロパティ」と呼びます。 -構造体は配列やオブジェクトを受け入れ、オブジェクトを返す`stdClass` (`castTo('array')`, などで変更しない限り)。 +構造体は配列やオブジェクトを受け入れ、オブジェクトを返す`stdClass` 。 デフォルトでは、すべてのプロパティはオプションであり、デフォルト値は`null` です。必須プロパティは`required()` を使って定義できます。 @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, returns {'optional' => null, 'nullable' => null} ``` +すべての構造体プロパティの配列は、`getShape()` メソッドによって返される。 + デフォルトでは、入力データに余分な項目は存在できない。 ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ERROR ``` +`extend()` を使って別の構造から派生させることで、新しい構造を作成できます: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +配列.[#toc-array] +--------------- + +定義されたキーを持つ配列。[構造 |#structure]体と同じルールが適用されます。 + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +タプルと呼ばれるインデックス付き配列を定義することもできます: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + 非推奨事項 .[#toc-deprecations] -------------------------- diff --git a/schema/pl/@home.texy b/schema/pl/@home.texy index c05548476b..28adaf5933 100644 --- a/schema/pl/@home.texy +++ b/schema/pl/@home.texy @@ -197,7 +197,7 @@ Struktury .[#toc-structures] Struktury to obiekty o zdefiniowanych kluczach. Każda z par klucz => wartość jest określana jako "właściwość": -Struktury przyjmują tablice i obiekty i zwracają `stdClass` obiekty (chyba że zmienisz to za pomocą `castTo('array')` itp.). +Struktury akceptują tablice i obiekty oraz zwracają obiekty `stdClass`. Domyślnie wszystkie właściwości są opcjonalne i domyślnie ustawione na `null`. Możesz zdefiniować właściwości obowiązkowe używając `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, vrací {'optional' => null, 'nullable' => null} ``` +Tablica wszystkich właściwości struktury jest zwracana przez metodę `getShape()`. + Domyślnie w danych wejściowych nie może być żadnych dodatkowych elementów: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // CHYBA ``` +Nową strukturę można utworzyć poprzez wyprowadzenie jej z innej za pomocą `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Tablica .[#toc-array] +--------------------- + +Tablica ze zdefiniowanymi kluczami. Obowiązują te same zasady, co w przypadku [struktur |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Można również zdefiniować tablicę indeksowaną, znaną jako krotka: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Właściwości przestarzałe .[#toc-deprecations] --------------------------------------------- diff --git a/schema/pt/@home.texy b/schema/pt/@home.texy index 76b78e5a6e..71c816a2bb 100644 --- a/schema/pt/@home.texy +++ b/schema/pt/@home.texy @@ -197,7 +197,7 @@ Estruturas .[#toc-structures] As estruturas são objetos com chaves definidas. Cada uma destas chaves => pares de valores é chamada de "propriedade": -As estruturas aceitam matrizes e objetos e retornam objetos `stdClass` (a menos que você altere com `castTo('array')`, etc.). +As estruturas aceitam matrizes e objetos e retornam objetos `stdClass`. Por padrão, todas as propriedades são opcionais e têm um valor padrão de `null`. Você pode definir propriedades obrigatórias usando `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, retorna {'opcional' => nulo, 'anulável' => nulo} ``` +A matriz de todas as propriedades da estrutura é retornada pelo método `getShape()`. + Por padrão, não pode haver itens extras nos dados de entrada: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ERROR ``` +Você pode criar uma nova estrutura derivando de outra usando `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Matriz .[#toc-array] +-------------------- + +Uma matriz com chaves definidas. Aplicam-se as mesmas regras das [estruturas |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Você também pode definir uma matriz indexada, conhecida como tupla: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Depreciações .[#toc-deprecations] --------------------------------- diff --git a/schema/ro/@home.texy b/schema/ro/@home.texy index 16cb3060f3..2e0b9582ad 100644 --- a/schema/ro/@home.texy +++ b/schema/ro/@home.texy @@ -197,7 +197,7 @@ Structuri .[#toc-structures] Structurile sunt obiecte cu chei definite. Fiecare dintre aceste perechi cheie => valoare este denumită "proprietate": -Structurile acceptă matrici și obiecte și returnează obiecte `stdClass` (dacă nu se modifică cu `castTo('array')`, etc.). +Structurile acceptă matrici și obiecte și returnează obiecte `stdClass`. În mod implicit, toate proprietățile sunt opționale și au o valoare implicită de `null`. Puteți defini proprietățile obligatorii utilizând `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, returnează {'optional' => null, 'nullable' => null} ``` +Matricea tuturor proprietăților structurii este returnată de metoda `getShape()`. + În mod implicit, nu pot exista elemente suplimentare în datele de intrare: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ERROR ``` +Puteți crea o structură nouă derivând din alta folosind `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Array .[#toc-array] +------------------- + +Un array cu chei definite. Se aplică aceleași reguli ca pentru [structuri |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +De asemenea, puteți defini un array indexat, cunoscut sub numele de tuple: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Deprecieri .[#toc-deprecations] ------------------------------- diff --git a/schema/ru/@home.texy b/schema/ru/@home.texy index e01893dc5a..7f87c34c55 100644 --- a/schema/ru/@home.texy +++ b/schema/ru/@home.texy @@ -197,7 +197,7 @@ Expect::anyOf(Expect::string('hello'), true, null)->firstIsDefault(); Структуры — это объекты с определенными ключами. Каждая из этих пар ключ => значение называется "свойством": -Структуры принимают массивы и объекты и возвращают объекты `stdClass` (если вы не измените его с помощью `castTo('array')` и т. д.). +Структуры принимают массивы и объекты и возвращают объекты `stdClass`. По умолчанию все свойства являются необязательными и имеют значение по умолчанию `null`. Вы можете определить обязательные свойства, используя `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, возвращает {'optional' => null, 'nullable' => null} ``` +Массив всех свойств структуры возвращается методом `getShape()`. + По умолчанию, во входных данных не может быть лишних элементов: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ОШИБКА ``` +Вы можете создать новую структуру, производя ее от другой с помощью `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Массив .[#toc-array] +-------------------- + +Массив с определенными ключами. Применяются те же правила, что и для [структур |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Вы также можете определить индексированный массив, известный как кортеж: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Устаревшие элементы ------------------- diff --git a/schema/sl/@home.texy b/schema/sl/@home.texy index c8c5e6eea5..0c432ad504 100644 --- a/schema/sl/@home.texy +++ b/schema/sl/@home.texy @@ -197,7 +197,7 @@ Strukture .[#toc-structures] Strukture so predmeti z določenimi ključi. Vsak od teh parov ključ => vrednost se imenuje "lastnost": -Strukture sprejemajo polja in predmete ter vračajo predmete `stdClass` (razen če jih spremenite s `castTo('array')`, itd.). +Strukture sprejemajo polja in predmete ter vračajo predmete `stdClass`. Privzeto so vse lastnosti neobvezne in imajo privzeto vrednost `null`. Obvezne lastnosti lahko določite z uporabo `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // V redu, vrne {'optional' => null, 'nullable' => null} ``` +Metoda `getShape()` vrne polje vseh lastnosti strukture. + Privzeto je, da v vhodnih podatkih ne sme biti nobenih dodatnih elementov: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // V REDU $processor->process($schema, ['additional' => true]); // ERROR ``` +Novo strukturo lahko ustvarite tako, da jo izpeljete iz druge strukture z uporabo `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Polje .[#toc-array] +------------------- + +Polje z določenimi ključi. Veljajo enaka pravila kot za [strukture |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Opredelite lahko tudi indeksirano polje, znano kot tuple: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Deprecations .[#toc-deprecations] --------------------------------- diff --git a/schema/tr/@home.texy b/schema/tr/@home.texy index a2be4b7dbb..47ba016283 100644 --- a/schema/tr/@home.texy +++ b/schema/tr/@home.texy @@ -197,7 +197,7 @@ Yapılar .[#toc-structures] Yapılar, tanımlanmış anahtarları olan nesnelerdir. Bu anahtar => değer çiftlerinin her biri "özellik" olarak adlandırılır: -Yapılar dizileri ve nesneleri kabul eder ve `stdClass` nesnelerini döndürür ( `castTo('array')`, vb. ile değiştirmediğiniz sürece). +Yapılar dizileri ve nesneleri kabul eder ve nesneleri döndürür `stdClass`. Varsayılan olarak, tüm özellikler isteğe bağlıdır ve varsayılan değerleri `null` şeklindedir. `required()` adresini kullanarak zorunlu özellikleri tanımlayabilirsiniz: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // Tamam, {'optional' => null, 'nullable' => null} döndürür ``` +Tüm yapı özelliklerinin dizisi `getShape()` yöntemi tarafından döndürülür. + Varsayılan olarak, giriş verilerinde fazladan öğe bulunamaz: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // Tamam $processor->process($schema, ['additional' => true]); // ERROR ``` +`extend()` adresini kullanarak başka bir yapıdan türeterek yeni bir yapı oluşturabilirsiniz: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Dizi .[#toc-array] +------------------ + +Tanımlanmış anahtarları olan bir dizi. [Yapılar |#structure] için geçerli olan kuralların aynısı geçerlidir. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Ayrıca tuple olarak bilinen indeksli bir dizi de tanımlayabilirsiniz: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Kullanımdan kaldırmalar .[#toc-deprecations] -------------------------------------------- diff --git a/schema/uk/@home.texy b/schema/uk/@home.texy index 44e37d9b68..fa6b9d5b4c 100644 --- a/schema/uk/@home.texy +++ b/schema/uk/@home.texy @@ -197,7 +197,7 @@ Expect::anyOf(Expect::string('hello'), true, null)->firstIsDefault(); Структури - це об'єкти з певними ключами. Кожна з цих пар ключ => значення називається "властивістю": -Структури приймають масиви та об'єкти і повертають об'єкти `stdClass` (якщо ви не зміните його за допомогою `castTo('array')` тощо). +Структури приймають масиви та об'єкти і повертають об'єкти `stdClass`. За замовчуванням усі властивості є необов'язковими і мають значення за замовчуванням `null`. Ви можете визначити обов'язкові властивості, використовуючи `required()`: @@ -241,6 +241,8 @@ $processor->process($schema, ['nullable' => null]); // OK, повертає {'optional' => null, 'nullable' => null} ``` +Масив усіх властивостей структури повертається методом `getShape()`. + За замовчуванням, у вхідних даних не може бути зайвих елементів: ```php @@ -263,6 +265,44 @@ $processor->process($schema, ['additional' => 1]); // OK $processor->process($schema, ['additional' => true]); // ПОМИЛКА ``` +Ви можете створити нову структуру, виводячи її з іншої за допомогою `extend()`: + +```php +$dog = Expect::structure([ + 'name' => Expect::string(), + 'age' => Expect::int(), +]); + +$dogWithBreed = $dog->extend([ + 'breed' => Expect::string(), +]); +``` + + +Масив .[#toc-array] +------------------- + +Масив з визначеними ключами. Застосовуються ті ж правила, що і для [структур |#structure]. + +```php +$schema = Expect::array([ + 'required' => Expect::string()->required(), + 'optional' => Expect::string(), // default value is null +]); +``` + +Ви також можете визначити індексований масив, відомий як кортеж: + +```php +$schema = Expect::array([ + Expect::int(), + Expect::string(), + Expect::bool(), +]); + +$processor->process($schema, [1, 'hello', true]); // OK +``` + Застарілі елементи .[#toc-ustarevsie-elementy] ---------------------------------------------- diff --git a/tester/bg/assertions.texy b/tester/bg/assertions.texy index c4171e0e92..419e093c88 100644 --- a/tester/bg/assertions.texy +++ b/tester/bg/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` трябва да бъде същото като `$actual`. Това е същото като оператора на PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Противоположен на `Assert::same()`, така че е същият като оператора на PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` трябва да бъде същото като `$actual`. За разлика от `Assert::same()`, идентичността на обектите, редът на двойките ключ => стойност в масивите и леко различаващите се десетични числа се игнорират, което може да се промени чрез задаване на `$matchIdentity` и `$matchOrder`. Следните случаи са идентични за `equal()`, но не и за `same()`: @@ -45,73 +45,73 @@ Assert::equal( Можете да използвате и т.нар. [изчакване |#Expectations] в `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Контраст `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Ако `$actual` е низ, той трябва да съдържа подниз от `$needle`. Ако е масив, той трябва да съдържа елемент `$needle` (сравнява се стриктно). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Обратното на `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` трябва да бъде масив и да съдържа ключа `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` трябва да бъде масив и да не съдържа ключа `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` трябва да бъде `true`, така че `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` трябва да е вярно, така че то отговаря на условието `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` трябва да бъде `false`, следователно `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` трябва да е false, така че то отговаря на условието `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` трябва да бъде `null`, така че `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` не следва да бъде `null`, следователно `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` трябва да бъде Не е число. Използвайте `Assert::nan()` само за тестване на NAN. Стойността на NAN е много специфична и изявленията `Assert::same()` или `Assert::equal()` могат да се държат непредсказуемо. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Броят на елементите в `$value` трябва да е равен на `$count`. Това е същото като `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` трябва да е от посочения тип. Като `$type` можем да използваме символа: - `array` - `list` е масив, индексиран във възходящ цифров ред на ключовете от нула. @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - директно име на клас или обект, тогава трябва да предадете `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- При извикване на `$callable` трябва да се хвърли изключение за `$class`. Ако подадем `$message`, съобщението за изключение трябва да [съвпадне |#Assert-match]. И ако подадем `$code`, кодът на изключението трябва да е същият. Например този тест не успява, защото съобщението за изключение не съвпада: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Проверява дали извикването на `$callable` генерира очакваните грешки (т.е. предупреждения, известия и т.н.). Като `$type` посочваме една от константите `E_...`, например `E_WARNING`. А ако подадем `$message`, съобщението за грешка също трябва да [съответства на |#Assert-match] шаблона. Например: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Проверява дали `$callable` не изхвърля никакви предупреждения/бележки/грешки или изключения на PHP. Това е полезно за проверка на части от кода, в които няма други оператори. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` трябва да съвпада с `$pattern`. Можем да използваме две опции за шаблони: регулярни изрази или заместващи символи. Ако подадем регулярен израз като `$pattern`, трябва да използваме `~` or `#`, за да го отделим. Други разделители не се поддържат. Например тест, в който `$var` трябва да съдържа само шестнадесетични цифри: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- Изпълнението е идентично с това на [Assert::match() |#Assert-match], но шаблонът е зареден от `$file`. Това е полезно за тестване на много дълги низове. Тестовият файл става четим. diff --git a/tester/cs/assertions.texy b/tester/cs/assertions.texy index b574efdac7..b1d3bc635e 100644 --- a/tester/cs/assertions.texy +++ b/tester/cs/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` musí být totožný s `$actual`. To samé jako PHP operátor `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Opak `Assert::same()`, tedy to samé jako PHP operátor `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` musí být stejný s `$actual`. Na rozdíl od `Assert::same()` se ignoruje identita objektů, pořadí dvojic klíčů => hodnota v polích a marginálně odlišná desetinná čísla, což lze změnit nastavením `$matchIdentity` a `$matchOrder`. Následující případy jsou shodné z pohledu `equal()`, ale nikoliv `same()`: @@ -45,73 +45,73 @@ Ovšem pozor, pole `[1, 2]` a `[2, 1]` stejné nejsou, protože se liší jen po Dále lze v `$expected` použít tzv. [#očekávání]. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Opak `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Pokud je `$actual` řetězec, musí obsahovat podřetězec `$needle`. Pokud je pole, musí obsahovat prvek `$needle` (porovnává se striktně). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Opak `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` musí být pole a musí obsahovat klíč `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` musí být pole a nesmí obsahovat klíč `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` musí být `true`, tedy `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` musí být pravdivý, tedy splní podmínku `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` musí být `false`, tedy `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` musí být nepravdivý, tedy splní podmínku `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` musí být `null`, tedy `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` nesmí být `null`, tedy `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` musí být Not a Number. Pro testování NAN hodnoty používejte vyhradně `Assert::nan()`. Hodnota NAN je velmi specifická a aserce `Assert::same()` nebo `Assert::equal()` mohou fungovat neočekávaně. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Počet prvků ve `$value` musí být `$count`. Tedy to samé jako `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` musí být daného typu. Jako `$type` můžeme použít řetězec: - `array` - `list` - pole indexované podle vzestupné řady numerických klíčů od nuly @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - název třídy nebo přímo objekt, potom musí být `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- Při zavolání `$callable` musí být vyhozena výjimka třídy `$class`. Pokud uvedeme `$message`, musí [odpovídat vzoru|#assert-match] i zpráva výjimky a pokud uvedeme `$code`, musí se striktně shodovat i kódy. Následující test selže, protože neodpovídá zpráva výjimky: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Kontroluje, že funkce `$callable` vygenerovala očekávané chyby (tj. varování, notices atd). Jako `$type` uvedeme jednu z konstant `E_...`, tedy například `E_WARNING`. A pokud uvedeme `$message`, musí [odpovídat vzoru|#assert-match] i chybová zpráva. Například: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Kontroluje, že funkce `$callable` nevygenerovala žádné varování, chybu nebo výjimku. Hodí se pro testování kousků kódu, kde není žádná další aserce. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` musí vyhovět vzoru `$pattern`. Můžeme použít dvě varianty vzorů: regulární výrazy nebo zástupné znaky. Pokud jako `$pattern` předáme regulární výraz, k jeho ohraničení musíme použít `~` nebo `#`, jiné oddělovače nejsou podporovány. Například test, kdy `$var` musí obsahovat pouze hexadecimální číslice: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- Aserce je totožná s [Assert::match() |#assert-match], ale vzor se načítá ze souboru `$file`. To je užitečné pro testování velmi dlouhých řetězců. Soubor s testem zůstane přehledný. diff --git a/tester/de/assertions.texy b/tester/de/assertions.texy index 18e2daa58c..be512a570a 100644 --- a/tester/de/assertions.texy +++ b/tester/de/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` muss mit `$actual` identisch sein. Er ist identisch mit dem PHP-Operator `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Das Gegenteil von `Assert::same()`, also dasselbe wie der PHP-Operator `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` muss mit `$actual` identisch sein. Im Gegensatz zu `Assert::same()` werden Objektidentität, Reihenfolge von Schlüsselpaaren => Wert in Arrays und geringfügig unterschiedliche Dezimalzahlen ignoriert, was durch Setzen von `$matchIdentity` und `$matchOrder` geändert werden kann. Die folgenden Fälle sind aus der Sicht von `equal()` identisch, aber nicht für `same()`: @@ -45,73 +45,73 @@ Beachten Sie jedoch, dass das Array `[1, 2]` und `[2, 1]` sind nicht gleich, da Sie können auch die sogenannten [Erwartungen |#expectations] in `$expected` verwenden. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Im Gegensatz zu `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Wenn `$actual` eine Zeichenkette ist, muss sie die Teilzeichenkette `$needle` enthalten. Wenn es sich um ein Array handelt, muss es das Element `$needle` enthalten (es wird streng verglichen). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Im Gegensatz zu `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` muss ein Array sein und den Schlüssel `$needle` enthalten. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` muss ein Array sein und darf den Schlüssel `$needle` nicht enthalten. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` muss `true` sein, also `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` muss wahrheitsgemäß sein, also erfüllt es die Bedingung `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` muss `false` sein, also `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` muss falsch sein, also erfüllt es die Bedingung `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` muss `null` sein, also `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` darf nicht `null` sein, also `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` muss Not a Number sein. Verwenden Sie für NAN-Tests nur die `Assert::nan()`. Der NAN-Wert ist sehr spezifisch und die Assertions `Assert::same()` oder `Assert::equal()` können sich unvorhersehbar verhalten. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Die Anzahl der Elemente in `$value` muss `$count` sein. Also dasselbe wie `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` muss von einem bestimmten Typ sein. Als `$type` können wir String verwenden: - `array` - `list` - Array, das in aufsteigender Reihenfolge der numerischen Schlüssel von Null an indiziert ist @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - Klassenname oder Objekt direkt, dann müssen `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- Beim Aufruf von `$callable` muss eine Ausnahme der Instanz `$class` ausgelöst werden. Wenn wir `$message` übergeben, muss die Nachricht der Ausnahme [übereinstimmen |#assert-match]. Und wenn wir `$code` übergeben, muss der Code der Ausnahme derselbe sein. Dieser Test schlägt zum Beispiel fehl, weil die Meldung der Ausnahme nicht übereinstimmt: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Überprüft, ob der `$callable` -Aufruf die erwarteten Fehler erzeugt (d.h. Warnungen, Hinweise usw.). Als `$type` geben wir eine der Konstanten `E_...` an, zum Beispiel `E_WARNING`. Und wenn wir `$message` übergeben, muss die Fehlermeldung auch [dem |#assert-match] Muster [entsprechen |#assert-match]. Zum Beispiel: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Überprüft, dass die Funktion `$callable` keine PHP-Warnung/Hinweis/Fehler oder Ausnahme auslöst. Sie ist nützlich, um ein Stück Code zu testen, für das es keine andere Assertion gibt. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` muss mit `$pattern` übereinstimmen. Wir können zwei Varianten von Mustern verwenden: reguläre Ausdrücke oder Wildcards. Wenn wir einen regulären Ausdruck als `$pattern` übergeben, müssen wir `~` or `#` verwenden, um ihn abzugrenzen. Andere Begrenzungszeichen werden nicht unterstützt. Zum Beispiel test, bei dem `$var` nur hexadezimale Ziffern enthalten darf: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- Die Assertion ist identisch mit [Assert::match() |#assert-match], aber das Muster wird von `$file` geladen. Sie ist nützlich für das Testen sehr langer Strings. Die Testdatei ist lesbar. diff --git a/tester/el/assertions.texy b/tester/el/assertions.texy index 9bba24f7aa..58739eb2e8 100644 --- a/tester/el/assertions.texy +++ b/tester/el/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` πρέπει να είναι το ίδιο με το `$actual`. Είναι το ίδιο με τον τελεστή PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Αντίθετος του `Assert::same()`, άρα είναι ίδιος με τον τελεστή PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` πρέπει να είναι το ίδιο με το `$actual`. Σε αντίθεση με το `Assert::same()`, η ταυτότητα αντικειμένων, η σειρά των ζευγών κλειδιών => τιμή σε πίνακες και οι οριακά διαφορετικοί δεκαδικοί αριθμοί αγνοούνται, οι οποίοι μπορούν να αλλάξουν με τη ρύθμιση των `$matchIdentity` και `$matchOrder`. Οι ακόλουθες περιπτώσεις είναι ταυτόσημες από την άποψη του `equal()`, αλλά όχι για το `same()`: @@ -45,73 +45,73 @@ Assert::equal( Μπορείτε επίσης να χρησιμοποιήσετε τις λεγόμενες [προσδοκίες |#expectations] στο `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Σε αντίθεση με το `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Εάν το `$actual` είναι μια συμβολοσειρά, πρέπει να περιέχει την υποσυμβολοσειρά `$needle`. Εάν είναι πίνακας, πρέπει να περιέχει το στοιχείο `$needle` (συγκρίνεται αυστηρά). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Αντίθετο από το `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` πρέπει να είναι ένας πίνακας και να περιέχει το κλειδί `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` πρέπει να είναι πίνακας και να μην περιέχει το κλειδί `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` πρέπει να είναι `true`, οπότε `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` πρέπει να είναι αληθές, άρα ικανοποιεί τη συνθήκη `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` πρέπει να είναι `false`, άρα `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` πρέπει να είναι ψευδής, άρα ικανοποιεί τη συνθήκη `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` πρέπει να είναι `null`, άρα `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` δεν πρέπει να είναι `null`, οπότε `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` πρέπει να είναι Not a Number. Χρησιμοποιήστε μόνο το `Assert::nan()` για δοκιμές NAN. Η τιμή NAN είναι πολύ συγκεκριμένη και οι ισχυρισμοί `Assert::same()` ή `Assert::equal()` μπορεί να συμπεριφέρονται απρόβλεπτα. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Ο αριθμός των στοιχείων στο `$value` πρέπει να είναι `$count`. Άρα το ίδιο με το `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` πρέπει να είναι συγκεκριμένου τύπου. Ως `$type` μπορούμε να χρησιμοποιήσουμε το string: - `array` - `list` - πίνακας με ευρετήριο σε αύξουσα σειρά αριθμητικών κλειδιών από το μηδέν @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - το όνομα της κλάσης ή του αντικειμένου απευθείας, τότε πρέπει να περάσει `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- Κατά την κλήση του `$callable` πρέπει να εκπέμπεται μια εξαίρεση της περίπτωσης `$class`. Αν περάσουμε το `$message`, το μήνυμα της εξαίρεσης πρέπει να [ταιριάζει |#assert-match]. Και αν περάσουμε το `$code`, ο κωδικός της εξαίρεσης πρέπει να είναι ο ίδιος. Για παράδειγμα, αυτή η δοκιμή αποτυγχάνει επειδή το μήνυμα της εξαίρεσης δεν ταιριάζει: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Ελέγχει ότι η κλήση του `$callable` παράγει τα αναμενόμενα σφάλματα (δηλαδή προειδοποιήσεις, ειδοποιήσεις κ.λπ.). Ως `$type` καθορίζουμε μία από τις σταθερές `E_...`, για παράδειγμα `E_WARNING`. Και αν περάσει το `$message`, το μήνυμα σφάλματος πρέπει επίσης να [ταιριάζει με |#assert-match] το πρότυπο. Για παράδειγμα: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Ελέγχει ότι η συνάρτηση `$callable` δεν πετάει καμία προειδοποίηση/ειδοποίηση/σφάλμα ή εξαίρεση της PHP. Είναι χρήσιμη για τον έλεγχο ενός κομματιού κώδικα όπου δεν υπάρχει άλλος ισχυρισμός. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` πρέπει να ταιριάζει με το `$pattern`. Μπορούμε να χρησιμοποιήσουμε δύο παραλλαγές προτύπων: κανονικές εκφράσεις ή μπαλαντέρ. Εάν περάσουμε μια κανονική έκφραση ως `$pattern`, πρέπει να χρησιμοποιήσουμε το `~` or `#` για να την οριοθετήσουμε. Άλλα διαχωριστικά δεν υποστηρίζονται. Για παράδειγμα, το test όπου το `$var` πρέπει να περιέχει μόνο δεκαεξαδικά ψηφία: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- Ο ισχυρισμός είναι πανομοιότυπος με την [Assert::match() |#assert-match] αλλά το μοτίβο φορτώνεται από το `$file`. Είναι χρήσιμος για τον έλεγχο πολύ μεγάλων συμβολοσειρών. Το αρχείο δοκιμής είναι αναγνώσιμο. diff --git a/tester/en/assertions.texy b/tester/en/assertions.texy index 6a6b61f1f3..7b702da041 100644 --- a/tester/en/assertions.texy +++ b/tester/en/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` must be the same as `$actual`. It is the same as PHP operator `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Opposite to `Assert::same()`, so it is the same as PHP operator `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` must be the same as `$actual`. Unlike `Assert::same()`, object identity, order of key pairs => value in arrays, and marginally different decimal numbers are ignored, which can be changed by setting `$matchIdentity` and `$matchOrder`. The following cases are identical from the point of view of `equal()`, but not for `same()`: @@ -45,73 +45,73 @@ However, beware, the array `[1, 2]` and `[2, 1]` are not equal, because only the You can also use the so-called [#expectations] in `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Opposite to `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ If `$actual` is a string, it must contain the substring `$needle`. If it is an array, it must contain the element `$needle` (it is compared strictly). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Opposite to `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` must be an array and must contain the key `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` must be an array and must not contain the key `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` must be `true`, so `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` must be truthy, so it satisfies the condition `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` must be `false`, so `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` must be falsey, so it satisfies the condition `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` must be `null`, so `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` must not be `null`, so `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` must be Not a Number. Use only the `Assert::nan()` for NAN testing. NAN value is very specific and assertions `Assert::same()` or `Assert::equal()` can behave unpredictably. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Number of elements in `$value` must be `$count`. So the same as `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` must be of a given type. As `$type` we can use string: - `array` - `list` - array indexed in ascending order of numeric keys from zero @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - class name or object directly then must pass `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- On `$callable` invocation an exception of `$class` instance must be thrown. If we pass `$message`, the message of the exception must [match|#assert-match]. And if we pass `$code`, code of the exception must be the same. For example, this test fails because message of the exception does not match: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Checks that the `$callable` invocation generates the expected errors (ie warnings, notices, etc.). As `$type` we specify one of the constants `E_...`, for example `E_WARNING`. And if pass `$message`, the error message must also [match|#assert-match] pattern. For example: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Checks that the function `$callable` does not throw any PHP warning/notice/error or exception. It is useful for testing a piece of code where is no other assertion. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` must match to `$pattern`. We can use two variants of patterns: regular expressions or wildcards. If we pass a regular expression as `$pattern`, we must use `~` or `#` to delimit it. Other delimiters are not supported. For example test where `$var` must contain only hexadecimal digits: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- The assertion is identical to [Assert::match() |#assert-match] but the pattern is loaded from `$file`. It is useful for very long strings testing. Test file stands readable. diff --git a/tester/es/assertions.texy b/tester/es/assertions.texy index 5774fdb256..abf62f2e1b 100644 --- a/tester/es/assertions.texy +++ b/tester/es/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` debe ser el mismo que `$actual`. Es el mismo que el operador PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Opuesto a `Assert::same()`, por lo que es el mismo que el operador PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` debe ser igual a `$actual`. A diferencia de `Assert::same()`, se ignoran la identidad del objeto, el orden de los pares clave => valor en matrices, y los números decimales marginalmente diferentes, que pueden cambiarse configurando `$matchIdentity` y `$matchOrder`. Los siguientes casos son idénticos desde el punto de vista de `equal()`, pero no para `same()`: @@ -45,73 +45,73 @@ Sin embargo, cuidado, la matriz `[1, 2]` y `[2, 1]` no son iguales, porque sólo También puede utilizar las llamadas [expectativas |#expectations] en `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Opuesto a `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Si `$actual` es una cadena, debe contener la subcadena `$needle`. Si es una matriz, debe contener el elemento `$needle` (se compara estrictamente). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Opuesto a `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` debe ser un array y debe contener la clave `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` debe ser una matriz y no debe contener la clave `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` debe ser `true`, por lo que `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` debe ser verdadero, por lo que satisface la condición `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` debe ser `false`, por lo que `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` debe ser falsa, por lo que satisface la condición `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` debe ser `null`, por lo que `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` no debe ser `null`, entonces `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` debe ser Not a Number. Utilice únicamente `Assert::nan()` para las pruebas NAN. El valor NAN es muy específico y las aserciones `Assert::same()` o `Assert::equal()` pueden comportarse de forma impredecible. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- El número de elementos en `$value` debe ser `$count`. Por tanto, igual que `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` debe ser de un tipo determinado. Como `$type` podemos utilizar string: - `array` - `list` - array indexado en orden ascendente de claves numéricas desde cero @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - nombre de clase u objeto directamente entonces debe pasar `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- Al invocar `$callable` debe lanzarse una excepción de instancia `$class`. Si pasamos `$message`, el mensaje de la excepción debe [coincidir |#assert-match]. Y si pasamos `$code`, código de la excepción debe ser el mismo. Por ejemplo, esta prueba falla porque el mensaje de la excepción no coincide: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Comprueba que la invocación `$callable` genera los errores esperados (es decir, advertencias, avisos, etc.). Como `$type` especificamos una de las constantes `E_...`, por ejemplo `E_WARNING`. Y si pasamos `$message`, el mensaje de error también debe [coincidir |#assert-match] con el patrón. Por ejemplo ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Comprueba que la función `$callable` no lanza ningún warning/notice/error o excepción de PHP. Es útil para probar un fragmento de código en el que no hay ninguna otra aserción. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` debe coincidir con `$pattern`. Podemos utilizar dos variantes de patrones: expresiones regulares o comodines. Si pasamos una expresión regular como `$pattern`, debemos utilizar `~` or `#` para delimitarla. No se admiten otros delimitadores. Por ejemplo test donde `$var` debe contener sólo dígitos hexadecimales: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- La aserción es idéntica a [Assert::match() |#assert-match] pero el patrón se carga desde `$file`. Es útil para probar cadenas muy largas. El archivo de prueba es legible. diff --git a/tester/fr/assertions.texy b/tester/fr/assertions.texy index 550cec2931..a7bd5afb42 100644 --- a/tester/fr/assertions.texy +++ b/tester/fr/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` doit être le même que `$actual`. Il est identique à l'opérateur PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Opposé à `Assert::same()`, il est donc identique à l'opérateur PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` doit être le même que `$actual`. Contrairement à `Assert::same()`, l'identité de l'objet, l'ordre des paires de clés => valeur dans les tableaux, et les nombres décimaux légèrement différents sont ignorés, ce qui peut être modifié en paramétrant `$matchIdentity` et `$matchOrder`. Les cas suivants sont identiques du point de vue de `equal()`, mais pas pour `same()`: @@ -45,73 +45,73 @@ Cependant, attention, le tableau `[1, 2]` et `[2, 1]` ne sont pas égaux, car se Vous pouvez également utiliser ce que l'on appelle les [attentes |#expectations] dans `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- A l'opposé de `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Si `$actual` est une chaîne de caractères, elle doit contenir la sous-chaîne `$needle`. Si c'est un tableau, il doit contenir l'élément `$needle` (il est comparé strictement). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Opposé à `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` doit être un tableau et doit contenir la clé `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` doit être un tableau et ne doit pas contenir la clé `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` doit être `true`, donc `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` doit être véridique, donc il satisfait la condition `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` doit être `false`, donc `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` doit être faux, donc il remplit la condition `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` doit être `null`, donc `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` ne doit pas être `null`, donc `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` doit être Not a Number. Utilisez uniquement le site `Assert::nan()` pour les tests NAN. La valeur NAN est très spécifique et les assertions `Assert::same()` ou `Assert::equal()` peuvent se comporter de manière imprévisible. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Le nombre d'éléments dans `$value` doit être `$count`. Donc identique à `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` doit être d'un type donné. Comme `$type` nous pouvons utiliser une chaîne de caractères : - `array` - `list` - tableau indexé dans l'ordre croissant des clés numériques à partir de zéro. @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - nom de la classe ou de l'objet directement, alors il faut passer `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- Lors de l'invocation de `$callable`, une exception de l'instance `$class` doit être levée. Si nous passons `$message`, le message de l'exception doit [correspondre |#assert-match]. Et si nous passons `$code`, le code de l'exception doit être le même. Par exemple, ce test échoue car le message de l'exception ne correspond pas : @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Vérifie que l'invocation de `$callable` génère les erreurs attendues (c'est-à-dire les avertissements, les avis, etc.). Comme `$type` nous spécifions une des constantes `E_...`, par exemple `E_WARNING`. Et si on passe `$message`, le message d'erreur doit également [correspondre au |#assert-match] modèle. Par exemple : ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Vérifie que la fonction `$callable` ne lève aucun avertissement/notice/erreur ou exception PHP. Elle est utile pour tester un morceau de code où il n'y a pas d'autre assertion. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` doit correspondre à `$pattern`. Nous pouvons utiliser deux variantes de motifs : les expressions régulières ou les caractères génériques. Si nous transmettons une expression régulière à `$pattern`, nous devons utiliser `~` or `#` pour la délimiter. Les autres délimiteurs ne sont pas pris en charge. Par exemple, test où `$var` ne doit contenir que des chiffres hexadécimaux : @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- L'assertion est identique à [Assert::match() |#assert-match] mais le motif est chargé depuis `$file`. Elle est utile pour tester des chaînes très longues. Le fichier de test est lisible. diff --git a/tester/hu/assertions.texy b/tester/hu/assertions.texy index 5ca1ceecb2..a341f51295 100644 --- a/tester/hu/assertions.texy +++ b/tester/hu/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` azonosnak kell lennie a `$actual` címmel. Ez megegyezik a `===` PHP-operátorral. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Ellentétes a `Assert::same()`-val , tehát megegyezik a `!==` PHP-operátorral. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` ugyanannak kell lennie, mint a `$actual`. A `Assert::same()`-től eltérően az objektum azonosságát, a kulcspárok => érték sorrendjét a tömbökben, valamint a minimálisan eltérő decimális számokat figyelmen kívül hagyja, ami a `$matchIdentity` és a `$matchOrder` beállításával módosítható. A következő esetek a `equal()` szempontjából azonosak, de a `same()` szempontjából nem: @@ -45,73 +45,73 @@ Azonban vigyázat, a tömb `[1, 2]` és a `[2, 1]` nem egyenlőek, mert csak az Használhatjuk az úgynevezett [elvárásokat |#expectations] is a `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Ellentétben a `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Ha a `$actual` egy karakterlánc, akkor tartalmaznia kell a `$needle` részláncot. Ha tömb, akkor a `$needle` elemet kell tartalmaznia (szigorúan összehasonlításra kerül). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- A `Assert::contains()` ellentéte. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` tömbnek kell lennie, és tartalmaznia kell a `$needle` kulcsot. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` tömbnek kell lennie, és nem tartalmazhatja a `$needle` kulcsot. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` a `true` kell, hogy legyen, tehát `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` igaznak kell lennie, tehát teljesíti a `if ($value) ...` feltételt. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` kell lennie `false`, tehát `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` hamisnak kell lennie, tehát teljesíti a `if (!$value) ...` feltételt. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` a `null` kell, hogy legyen, tehát `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` nem lehet `null`, tehát `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` nem lehet szám. A NAN teszteléshez csak a `Assert::nan()` címet használja. A NAN érték nagyon specifikus, és a `Assert::same()` vagy a `Assert::equal()` állítások kiszámíthatatlanul viselkedhetnek. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- A `$value` elemszámának a `$count` kell lennie. Tehát ugyanaz, mint a `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` adott típusúnak kell lennie. Mint `$type` használhatjuk a stringet: - `array` - `list` - nullától kezdve a numerikus kulcsok növekvő sorrendjében indexelt tömb. @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - osztály nevét vagy objektumot közvetlenül, akkor át kell adnia `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- A `$callable` meghívásakor egy `$class` példányú kivételt kell dobni. Ha átadjuk a `$message` címet, a kivétel üzenetének [meg |#assert-match] kell [egyeznie |#assert-match]. És ha átadjuk a `$code`, a kivétel kódjának meg kell egyeznie. Például ez a teszt sikertelen, mert a kivétel üzenete nem egyezik: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Ellenőrzi, hogy a `$callable` meghívása a várt hibákat (azaz figyelmeztetéseket, értesítéseket stb.) generálja. Mint `$type` megadjuk a `E_...`, például a `E_WARNING` konstansok egyikét. És ha átadjuk a `$message`, a hibaüzenetnek is [meg |#assert-match] kell [felelnie |#assert-match] a mintának. Például: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Ellenőrzi, hogy a `$callable` függvény nem dob-e PHP figyelmeztetést/értesítést/hibát vagy kivételt. Hasznos egy olyan kódrészlet teszteléséhez, ahol nincs más állítás. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` kell, hogy egyezzen a `$pattern`. A minták két változatát használhatjuk: a reguláris kifejezéseket vagy a vadkártyákat. Ha egy reguláris kifejezést adunk át a `$pattern` címen, akkor a `~` or `#` címet kell használnunk az elhatároláshoz. Más elválasztójelek nem támogatottak. Például a teszt, ahol a `$var` csak hexadecimális számjegyeket tartalmazhat: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- Az állítás megegyezik az [Assert::match()-vel |#assert-match], de a minta a `$file` oldalról töltődik be. Nagyon hosszú karakterláncok teszteléséhez hasznos. A tesztfájl olvashatóan áll. diff --git a/tester/it/assertions.texy b/tester/it/assertions.texy index f7b9b7859a..d26882630e 100644 --- a/tester/it/assertions.texy +++ b/tester/it/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` deve essere uguale a `$actual`. È uguale all'operatore PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Opposto a `Assert::same()`, quindi uguale all'operatore PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` deve essere uguale a `$actual`. A differenza di `Assert::same()`, vengono ignorati l'identità degli oggetti, l'ordine delle coppie chiave => valore negli array e i numeri decimali marginalmente diversi, che possono essere modificati impostando `$matchIdentity` e `$matchOrder`. I casi seguenti sono identici dal punto di vista di `equal()`, ma non per `same()`: @@ -45,73 +45,73 @@ Tuttavia, attenzione, l'array `[1, 2]` e `[2, 1]` non sono uguali, perché solo È inoltre possibile utilizzare le cosiddette [aspettative |#expectations] in `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Opposto a `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Se `$actual` è una stringa, deve contenere la sottostringa `$needle`. Se è una matrice, deve contenere l'elemento `$needle` (viene confrontato strettamente). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Opposto a `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` deve essere un array e deve contenere la chiave `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` deve essere un array e non deve contenere la chiave `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` deve essere `true`, quindi `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` deve essere vero, quindi soddisfa la condizione `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` deve essere `false`, quindi `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` deve essere falso, quindi soddisfa la condizione `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` deve essere `null`, quindi `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` non deve essere `null`, quindi `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` deve essere Not a Number. Utilizzare solo `Assert::nan()` per i test NAN. Il valore NAN è molto specifico e le asserzioni `Assert::same()` o `Assert::equal()` possono comportarsi in modo imprevedibile. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Il numero di elementi in `$value` deve essere `$count`. Quindi lo stesso di `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` deve essere di un determinato tipo. Come `$type` possiamo usare stringa: - `array` - `list` - array indicizzato in ordine crescente di chiavi numeriche a partire da zero @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - nome della classe o dell'oggetto direttamente, allora deve passare `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- All'invocazione di `$callable` deve essere lanciata un'eccezione dell'istanza `$class`. Se si passa `$message`, il messaggio dell'eccezione deve [corrispondere |#assert-match]. E se si passa `$code`, il codice dell'eccezione deve essere lo stesso. Ad esempio, questo test fallisce perché il messaggio dell'eccezione non corrisponde: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Controlla che l'invocazione di `$callable` generi gli errori previsti (cioè avvisi, notifiche, ecc.). Come `$type` si specifica una delle costanti `E_...`, ad esempio `E_WARNING`. E se si supera `$message`, anche il messaggio di errore deve [corrispondere al |#assert-match] modello. Ad esempio: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Controlla che la funzione `$callable` non lanci alcun avviso/nota/errore o eccezione PHP. È utile per testare un pezzo di codice in cui non ci sono altre asserzioni. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` deve corrispondere a `$pattern`. Si possono usare due varianti di pattern: espressioni regolari o caratteri jolly. Se si passa un'espressione regolare come `$pattern`, si deve usare `~` or `#` per delimitarla. Altri delimitatori non sono supportati. Ad esempio, il test in cui `$var` deve contenere solo cifre esadecimali: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- L'asserzione è identica a [Assert::match() |#assert-match], ma il modello viene caricato da `$file`. È utile per testare stringhe molto lunghe. Il file di test è leggibile. diff --git a/tester/pl/assertions.texy b/tester/pl/assertions.texy index 04e9b5e33a..b7208cf7ff 100644 --- a/tester/pl/assertions.texy +++ b/tester/pl/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` musi być identyczny z `$actual`. Identyczny jak operator PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Przeciwieństwo `Assert::same()`, czyli to samo co operator PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` musi być taka sama jak `$actual`. W przeciwieństwie do `Assert::same()`, tożsamość obiektu, kolejność par kluczy => wartości w polach i marginalnie różne liczby dziesiętne są ignorowane, co można zmienić poprzez ustawienie `$matchIdentity` i `$matchOrder`. Poniższe przypadki są identyczne z perspektywy `equal()`, ale nie `same()`: @@ -45,73 +45,73 @@ Jednakże, uważaj, pole `[1, 2]` a `[2, 1]` nie są takie same, ponieważ tylko Ponadto w `$expected` można wykorzystać tzw. [oczekiwania |#Expectations]. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Przeciwieństwo `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Jeśli `$actual` jest ciągiem, musi zawierać podłańcuch `$needle`. Jeśli jest to tablica, musi zawierać element `$needle` (dopasowany ściśle). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Przeciwieństwo `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` musi być tablicą i musi zawierać klucz `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` musi być tablicą i nie może zawierać klucza `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` musi być `true`, czyli `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` musi być prawdziwa, czyli spełnia warunek `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` musi być `false`, czyli `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` musi być fałszywy, czyli spełnia warunek `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` musi być `null`, czyli `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` nie może być `null`, czyli `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` musi być "Not a Number". Do testowania wartości NAN używaj wyłącznie `Assert::nan()` Wartość NAN jest bardzo specyficzna i asercje `Assert::same()` lub `Assert::equal()` mogą działać nieoczekiwanie. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Liczba elementów w `$value` musi być `$count`. Zatem taka sama jak `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` musi być danego typu. Jako `$type` możemy użyć ciągu znaków: - `array` - `list` - tablica indeksowana rosnącym szeregiem kluczy numerycznych od zera @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - nazwa klasy lub samego obiektu, to musi być `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- Po wywołaniu `$callable` musi zostać rzucony wyjątek klasowy `$class` Jeśli podamy `$message`, komunikat wyjątku musi [pasować do wzorca |#Assert-match], a jeśli podamy `$code`, kody muszą być ściśle [dopasowane |#Assert-match]. Poniższy test kończy się niepowodzeniem, ponieważ komunikat wyjątku nie pasuje: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Sprawdza, czy funkcja `$callable` wygenerowała oczekiwane błędy (tj. Ostrzeżenia, powiadomienia itp.). Jako `$type` podajemy jedną ze stałych `E_...`, czyli np. `E_WARNING`. A jeśli określimy `$message`, to komunikat o błędzie musi [pasować do wzorca |#Assert-match]. Na przykład: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Sprawdza, czy funkcja `$callable` nie wygenerowała żadnych ostrzeżeń, błędów lub wyjątków. Jest to przydatne do testowania fragmentów kodu, w których nie ma innej asercji. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` musi pasować do wzorca `$pattern`. Możemy użyć dwóch wariantów wzorców: wyrażeń regularnych lub symboli wieloznacznych. Jeśli przekażemy wyrażenie regularne jako `$pattern`, musimy użyć `~` nebo `#` do jego delimitacji, inne delimitery nie są obsługiwane. Na przykład test, w którym `$var` musi zawierać tylko cyfry szesnastkowe: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- Asercja jest identyczna jak [Assert::match() |#Assert-match], ale wzór jest odczytywany z `$file`. Jest to przydatne do testowania bardzo długich łańcuchów. Plik testowy pozostaje przezroczysty. diff --git a/tester/pt/assertions.texy b/tester/pt/assertions.texy index 8cf920b3b5..013893af06 100644 --- a/tester/pt/assertions.texy +++ b/tester/pt/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` deve ser o mesmo que `$actual`. É o mesmo que o operador de PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Ao contrário de `Assert::same()`, então é o mesmo que o operador PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` deve ser o mesmo que `$actual`. Ao contrário de `Assert::same()`, a identidade do objeto, a ordem dos pares de chaves => valor em arrays e números decimais marginalmente diferentes são ignorados, o que pode ser alterado através da configuração `$matchIdentity` e `$matchOrder`. Os seguintes casos são idênticos do ponto de vista de `equal()`, mas não para `same()`: @@ -45,73 +45,73 @@ Entretanto, tenha cuidado, a matriz `[1, 2]` e `[2, 1]` não são iguais, porque Você também pode usar as chamadas [expectativas |#expectations] em `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Oposto a `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Se `$actual` for um fio, ele deve conter o substrato `$needle`. Se for uma matriz, deve conter o elemento `$needle` (é comparado estritamente). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Oposto a `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` deve ser uma matriz e deve conter a chave `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` deve ser uma matriz e não deve conter a chave `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` deve ser `true`, portanto `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` deve ser verdadeira, portanto satisfaz a condição `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` deve ser `false`, portanto `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` deve ser falso, por isso satisfaz a condição `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` deve ser `null`, portanto `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` não deve ser `null`, portanto `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` não deve ser um número. Use apenas o `Assert::nan()` para testes NAN. O valor do NAN é muito específico e as afirmações `Assert::same()` ou `Assert::equal()` podem se comportar de forma imprevisível. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- O número de elementos em `$value` deve ser `$count`. Portanto, o mesmo que `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` deve ser de um determinado tipo. Como `$type`, podemos usar cordel: - `array` - `list` - matriz indexada em ordem ascendente de chaves numéricas a partir de zero @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - nome da classe ou objeto deve então passar diretamente `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- Em `$callable` deve ser lançada uma exceção de instância `$class`. Se passarmos `$message`, a mensagem da exceção deve [coincidir |#assert-match]. E se passarmos `$code`, o código da exceção deve ser o mesmo. Por exemplo, este teste falha porque a mensagem da exceção não corresponde: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Verifica se a invocação `$callable` gera os erros esperados (ou seja, avisos, avisos, etc.). Como `$type`, especificamos uma das constantes `E_...`, por exemplo `E_WARNING`. E, se passar `$message`, a mensagem de erro também deve [corresponder |#assert-match] ao padrão. Por exemplo: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Verifica se a função `$callable` não lança nenhum aviso/notificação/erro ou exceção em PHP. É útil para testar um pedaço de código onde não há outra asserção. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` Devemos corresponder a `$pattern`. Podemos utilizar duas variantes de padrões: expressões regulares ou wildcards. Se passarmos uma expressão regular como `$pattern`, devemos usar `~` or `#` para delimitá-la. Outros delimitadores não são suportados. Por exemplo, teste onde `$var` deve conter apenas dígitos hexadecimais: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- A afirmação é idêntica a [Assert::match() |#assert-match] mas o padrão é carregado a partir de `$file`. É útil para testes de cordas muito longas. Os arquivos de teste podem ser lidos. diff --git a/tester/ro/assertions.texy b/tester/ro/assertions.texy index ac720308aa..e986b7bfa7 100644 --- a/tester/ro/assertions.texy +++ b/tester/ro/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` trebuie să fie aceeași cu `$actual`. Este același lucru cu operatorul PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Opusul lui `Assert::same()`, deci este același lucru cu operatorul PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` trebuie să fie același cu `$actual`. Spre deosebire de `Assert::same()`, identitatea obiectului, ordinea perechilor cheie => valoare în array-uri și numerele zecimale marginal diferite sunt ignorate, care pot fi modificate prin setarea `$matchIdentity` și `$matchOrder`. Următoarele cazuri sunt identice din punctul de vedere al `equal()`, dar nu și pentru `same()`: @@ -45,73 +45,73 @@ Cu toate acestea, atenție, matricea `[1, 2]` și `[2, 1]` nu sunt egale, deoare Puteți utiliza, de asemenea, așa-numitele [așteptări |#expectations] în `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Opusul lui `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Dacă `$actual` este un șir de caractere, acesta trebuie să conțină subșirul `$needle`. Dacă este o matrice, trebuie să conțină elementul `$needle` (acesta este comparat strict). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Opusul lui `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` trebuie să fie o matrice și să conțină cheia `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` trebuie să fie o matrice și să nu conțină cheia `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` trebuie să fie `true`, deci `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` trebuie să fie adevărat, deci satisface condiția `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` trebuie să fie `false`, deci `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` trebuie să fie falsey, deci îndeplinește condiția `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` trebuie să fie `null`, deci `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` nu trebuie să fie `null`, deci `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` trebuie să nu fie un număr. Utilizați numai `Assert::nan()` pentru testarea NAN. Valoarea NAN este foarte specifică, iar afirmațiile `Assert::same()` sau `Assert::equal()` se pot comporta în mod imprevizibil. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Numărul de elemente din `$value` trebuie să fie `$count`. Deci la fel ca `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` trebuie să fie de un anumit tip. La fel ca `$type` putem folosi string: - `array` - `list` - matrice indexată în ordine crescătoare a cheilor numerice de la zero. @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - numele clasei sau obiectul direct, atunci trebuie să treacă `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- La invocarea `$callable` trebuie să se arunce o excepție de instanță `$class`. Dacă se trece `$message`, mesajul excepției trebuie să [corespundă |#assert-match]. Iar dacă se trece `$code`, codul excepției trebuie să fie același. De exemplu, acest test eșuează deoarece mesajul excepției nu se potrivește: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Verifică dacă invocarea `$callable` generează erorile așteptate (adică avertismente, notificări etc.). Ca `$type` se specifică una dintre constantele `E_...`, de exemplu `E_WARNING`. Iar dacă se trece `$message`, mesajul de eroare trebuie să [corespundă |#assert-match] și el modelului. De exemplu: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Verifică dacă funcția `$callable` nu aruncă niciun avertisment/notificare/error sau excepție PHP. Este utilă pentru testarea unei bucăți de cod în care nu există nicio altă afirmație. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` trebuie să se potrivească cu `$pattern`. Putem utiliza două variante de tipare: expresii regulate sau caractere sălbatice. Dacă trecem o expresie regulată ca `$pattern`, trebuie să folosim `~` or `#` pentru a o delimita. Alte delimitatoare nu sunt acceptate. De exemplu, testul în care `$var` trebuie să conțină numai cifre hexazecimale: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- Afirmația este identică cu [Assert::match() |#assert-match], dar modelul este încărcat din `$file`. Este utilă pentru testarea șirurilor foarte lungi. Fișierul de test stă în picioare lizibil. diff --git a/tester/ru/assertions.texy b/tester/ru/assertions.texy index 493cb21305..0694bff7c8 100644 --- a/tester/ru/assertions.texy +++ b/tester/ru/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` должно быть то же самое, что и `$actual`. Это то же самое, что и оператор PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Противоположен оператору `Assert::same()`, поэтому совпадает с оператором PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` должно быть таким же, как `$actual`. В отличие от `Assert::same()`, идентичность объектов, порядок пар ключ => значение в массивах и незначительно отличающиеся десятичные числа игнорируются, что можно изменить, задав `$matchIdentity` и `$matchOrder`. Следующие случаи идентичны с точки зрения `equal()`, но не для `same()`: @@ -45,73 +45,73 @@ Assert::equal( Вы также можете использовать так называемые [ожидания |#Expectations] в `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Противоположность `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Если `$actual` - строка, то она должна содержать подстроку `$needle`. Если это массив, то он должен содержать элемент `$needle` (он сравнивается строго). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Противоположность `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` должен быть массивом и содержать ключ `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` должен быть массивом и не должен содержать ключ `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` должен быть `true`, поэтому `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` должно быть истинным, поэтому оно удовлетворяет условию `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` должно быть `false`, поэтому `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` должен быть ложным, поэтому он удовлетворяет условию `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` должно быть `null`, поэтому `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` не должно быть `null`, поэтому `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` должен быть Not a Number. Используйте только `Assert::nan()` для тестирования NAN. Значение NAN очень специфично, и утверждения `Assert::same()` или `Assert::equal()` могут повести себя непредсказуемо. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Количество элементов в `$value` должно быть равно `$count`. То есть то же самое, что и `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` должен быть заданного типа. В качестве `$type` мы можем использовать строку: - `array` - `list` - массив, индексированный в порядке возрастания числовых ключей от нуля. @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - имя класса или объекта напрямую, то необходимо передать `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- При вызове `$callable` должно быть выброшено исключение экземпляра `$class`. Если мы передаем `$message`, то сообщение исключения должно [совпадать |#Assert-match]. А если мы передаем `$code`, то код исключения должен быть таким же. Например, этот тест не пройден, потому что сообщение исключения не совпадает: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Проверяет, что вызов `$callable` генерирует ожидаемые ошибки (т.е. предупреждения, уведомления и т.д.). В качестве `$type` мы указываем одну из констант `E_...`, например `E_WARNING`. И если передаем `$message`, то сообщение об ошибке также должно [соответствовать |#Assert-match] шаблону. Например: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Проверяет, что функция `$callable` не выбрасывает никаких предупреждений/замечаний/ошибок или исключений PHP. Это полезно для проверки части кода, где нет других утверждений. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` должен соответствовать `$pattern`. Мы можем использовать два варианта шаблонов: регулярные выражения или подстановочные знаки. Если мы передаем регулярное выражение как `$pattern`, мы должны использовать `~` or `#` для его разделения. Другие разделители не поддерживаются. Например, тест, где `$var` должен содержать только шестнадцатеричные цифры: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- Утверждение идентично [Assert::match() |#Assert-match], но шаблон загружается из `$file`. Это полезно для тестирования очень длинных строк. Тестовый файл становится читабельным. diff --git a/tester/sl/assertions.texy b/tester/sl/assertions.texy index 1b1c792bae..a0092de8ce 100644 --- a/tester/sl/assertions.texy +++ b/tester/sl/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` mora biti enak kot `$actual`. Je enak kot operator PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Nasproten kot `Assert::same()`, zato je enak operatorju PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` mora biti enak kot `$actual`. Za razliko od `Assert::same()` se identiteta predmetov, vrstni red parov ključ => vrednost v poljih in mejno različna decimalna števila ne upoštevajo, kar je mogoče spremeniti z nastavitvijo `$matchIdentity` in `$matchOrder`. Naslednji primeri so enaki z vidika `equal()`, ne pa tudi za `same()`: @@ -45,73 +45,73 @@ Vendar pazite, da se polje `[1, 2]` in `[2, 1]` nista enaki, saj se razlikuje le Uporabite lahko tudi tako imenovana [pričakovanja |#expectations] v `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Nasprotno od `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Če je `$actual` niz, mora vsebovati podredni niz `$needle`. Če je polje, mora vsebovati element `$needle` (primerja se strogo). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Nasprotje `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` mora biti polje in mora vsebovati ključ `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` mora biti polje in ne sme vsebovati ključa `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` mora biti `true`, torej `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` mora biti resničen, zato izpolnjuje pogoj `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` mora biti `false`, torej `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` mora biti falsey, zato izpolnjuje pogoj `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` mora biti `null`, torej `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` ne sme biti `null`, torej `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` ne sme biti številka. Za testiranje NAN uporabite samo `Assert::nan()`. Vrednost NAN je zelo specifična in trditve `Assert::same()` ali `Assert::equal()` se lahko obnašajo nepredvidljivo. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Število elementov v `$value` mora biti `$count`. Torej enako kot `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` mora biti določene vrste. Kot `$type` lahko uporabimo niz: - `array` - `list` - polje, indeksirano v naraščajočem vrstnem redu številskih ključev od nič @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - ime razreda ali predmeta neposredno, potem mora posredovati `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- Ob klicu `$callable` je treba zavreči izjemo primera `$class`. Če posredujemo `$message`, [se |#assert-match] mora sporočilo izjeme [ujemati |#assert-match]. In če posredujemo `$code`, mora biti koda izjeme enaka. Na primer, ta preskus ni uspešen, ker se sporočilo izjeme ne ujema: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Preveri, ali klic `$callable` ustvari pričakovane napake (tj. opozorila, obvestila itd.). Kot `$type` navedemo eno od konstant `E_...`, na primer `E_WARNING`. In če predamo `$message`, mora tudi sporočilo o napaki [ustrezati |#assert-match] vzorcu. For example: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Preveri, ali funkcija `$callable` ne vrže nobenega opozorila/opozorila/pomote ali izjeme PHP. Uporabna je za testiranje dela kode, v katerem ni nobene druge trditve. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` se mora ujemati z `$pattern`. Uporabimo lahko dve različici vzorcev: regularne izraze ali nadomestne znake. Če posredujemo regularni izraz kot `$pattern`, moramo za njegovo razmejitev uporabiti `~` or `#`. Drugi delilniki niso podprti. Na primer test, pri katerem mora `$var` vsebovati samo šestnajstiške številke: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- Trditev je enaka kot [Assert::match( |#assert-match] ), vendar se vzorec naloži iz `$file`. Uporabna je za testiranje zelo dolgih nizov. Testna datoteka stoji berljivo. diff --git a/tester/tr/assertions.texy b/tester/tr/assertions.texy index 41e50c6e0f..aa997c7081 100644 --- a/tester/tr/assertions.texy +++ b/tester/tr/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` `$actual` ile aynı olmalıdır. PHP operatörü ile aynıdır `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ `Assert::same()`'un tersidir, bu nedenle PHP operatörü `!==` ile aynıdır. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` `$actual` ile aynı olmalıdır. `Assert::same()` adresinden farklı olarak, nesne kimliği, dizilerdeki anahtar çiftleri => değer sırası ve marjinal olarak farklı ondalık sayılar göz ardı edilir; bunlar `$matchIdentity` ve `$matchOrder` adresleri ayarlanarak değiştirilebilir. Aşağıdaki durumlar `equal()` açısından aynıdır, ancak `same()` için aynı değildir: @@ -45,73 +45,73 @@ Ancak, dikkat edin, dizi `[1, 2]` ve `[2, 1]` eşit değildir, çünkü anahtar Sözde [beklentileri |#expectations] `$expected` adresinde de kullanabilirsiniz. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Karşısında `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ `$actual` bir dizeyse, `$needle` alt dizesini içermelidir. Bir dizi ise, `$needle` öğesini içermelidir (kesinlikle karşılaştırılır). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Karşısında `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` bir dizi olmalı ve `$needle` anahtarını içermelidir. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` bir dizi olmalı ve `$needle` anahtarını içermemelidir. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` `true` , yani `$value === true` olmalıdır. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` doğru olmalıdır, bu nedenle `if ($value) ...` koşulunu karşılar. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` `false` , yani `$value === false` olmalıdır. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` falsey olmalıdır, bu nedenle `if (!$value) ...` koşulunu karşılar. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` `null` , yani `$value === null` olmalıdır. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` `null` olmamalıdır, bu yüzden `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` Bir Numara Değil olmalıdır. NAN testi için yalnızca `Assert::nan()` adresini kullanın. NAN değeri çok spesifiktir ve `Assert::same()` veya `Assert::equal()` iddiaları tahmin edilemeyecek şekilde davranabilir. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- `$value` adresindeki öğe sayısı `$count` olmalıdır. Yani `count($value) === $count` ile aynı. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` belirli bir tipte olmalıdır. `$type` olarak string kullanabiliriz: - `array` - `list` - sıfırdan itibaren sayısal anahtarların artan sırasına göre dizinlenmiş dizi @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - sınıf adını veya nesnesini doğrudan geçmelidir. `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- `$callable` çağrıldığında `$class` örneğinin bir istisnası fırlatılmalıdır. Eğer `$message` adresini geçersek, istisnanın mesajı [eşleşmelidir |#assert-match]. Ve eğer `$code` adresini geçersek, istisnanın kodu aynı olmalıdır. Örneğin, istisnanın mesajı eşleşmediği için bu test başarısız olur: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- `$callable` çağrısının beklenen hataları (yani uyarılar, bildirimler, vb.) oluşturup oluşturmadığını kontrol eder. `$type` olarak `E_...` sabitlerinden birini belirtiriz, örneğin `E_WARNING`. Ve eğer `$message` geçilirse, hata mesajı da kalıpla [eşleşmelidir |#assert-match]. Örneğin: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] `$callable` işlevinin herhangi bir PHP uyarısı/bildirimi/hatası veya istisnası atmadığını kontrol eder. Başka bir iddianın olmadığı bir kod parçasını test etmek için kullanışlıdır. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` `$pattern` ile eşleşmelidir. İki çeşit kalıp kullanabiliriz: düzenli ifadeler veya joker karakterler. Bir düzenli ifadeyi `$pattern` olarak geçirirsek, sınırlandırmak için `~` or `#` kullanmalıyız. Diğer sınırlayıcılar desteklenmez. Örneğin, `$var` adresinin yalnızca onaltılık basamaklar içermesi gereken test: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- [Assert::match() |#assert-match] ile aynıdır ancak kalıp `$file` adresinden yüklenir. Çok uzun dizeleri test etmek için kullanışlıdır. Test dosyası okunabilir duruyor. diff --git a/tester/uk/assertions.texy b/tester/uk/assertions.texy index 8d29bcdd6d..68d8122dba 100644 --- a/tester/uk/assertions.texy +++ b/tester/uk/assertions.texy @@ -15,18 +15,18 @@ use Tester\Assert; ``` -Assert::same($expected, $actual, string $description=null) .[method] --------------------------------------------------------------------- +Assert::same($expected, $actual, ?string $description=null) .[method] +--------------------------------------------------------------------- `$expected` має бути те саме, що й `$actual`. Це те саме, що й оператор PHP `===`. -Assert::notSame($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------ +Assert::notSame($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------ Протилежний оператору `Assert::same()`, тому збігається з оператором PHP `!==`. -Assert::equal($expected, $actual, string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] ------------------------------------------------------------------------------------------------------------------------- +Assert::equal($expected, $actual, ?string $description=null, bool $matchOrder=false, bool $matchIdentity=false) .[method] +------------------------------------------------------------------------------------------------------------------------- `$expected` має бути таким самим, як `$actual`. На відміну від `Assert::same()`, ідентичність об'єктів, порядок пар ключ => значення в масивах і незначно відмінні десяткові числа ігноруються, що можна змінити, задавши `$matchIdentity` і `$matchOrder`. Наступні випадки ідентичні з точки зору `equal()`, але не для `same()`: @@ -45,73 +45,73 @@ Assert::equal( Ви також можете використовувати так звані [очікування |#Expectations] в `$expected`. -Assert::notEqual($expected, $actual, string $description=null) .[method] ------------------------------------------------------------------------- +Assert::notEqual($expected, $actual, ?string $description=null) .[method] +------------------------------------------------------------------------- Протилежність `Assert::equal()`. -Assert::contains($needle, string|array $actual, string $description=null) .[method] ------------------------------------------------------------------------------------ +Assert::contains($needle, string|array $actual, ?string $description=null) .[method] +------------------------------------------------------------------------------------ Якщо `$actual` - рядок, то він повинен містити підрядок `$needle`. Якщо це масив, то він має містити елемент `$needle` (він порівнюється строго). -Assert::notContains($needle, string|array $actual, string $description=null) .[method] --------------------------------------------------------------------------------------- +Assert::notContains($needle, string|array $actual, ?string $description=null) .[method] +--------------------------------------------------------------------------------------- Протилежність `Assert::contains()`. -Assert::hasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} -------------------------------------------------------------------------------------------------------- +Assert::hasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +-------------------------------------------------------------------------------------------------------- `$actual` має бути масивом і містити ключ `$needle`. -Assert::notHasKey(string|int $needle, array $actual, string $description=null) .[method]{data-version:2.4} ----------------------------------------------------------------------------------------------------------- +Assert::notHasKey(string|int $needle, array $actual, ?string $description=null) .[method]{data-version:2.4} +----------------------------------------------------------------------------------------------------------- `$actual` має бути масивом і не повинен містити ключ `$needle`. -Assert::true($value, string $description=null) .[method] --------------------------------------------------------- +Assert::true($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` має бути `true`, тому `$value === true`. -Assert::truthy($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::truthy($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` має бути істинним, тому воно задовольняє умову `if ($value) ...`. -Assert::false($value, string $description=null) .[method] ---------------------------------------------------------- +Assert::false($value, ?string $description=null) .[method] +---------------------------------------------------------- `$value` має бути `false`, тому `$value === false`. -Assert::falsey($value, string $description=null) .[method] ----------------------------------------------------------- +Assert::falsey($value, ?string $description=null) .[method] +----------------------------------------------------------- `$value` має бути хибним, тому він задовольняє умову `if (!$value) ...`. -Assert::null($value, string $description=null) .[method] --------------------------------------------------------- +Assert::null($value, ?string $description=null) .[method] +--------------------------------------------------------- `$value` має бути `null`, тому `$value === null`. -Assert::notNull($value, string $description=null) .[method] ------------------------------------------------------------ +Assert::notNull($value, ?string $description=null) .[method] +------------------------------------------------------------ `$value` не повинно бути `null`, тому `$value !== null`. -Assert::nan($value, string $description=null) .[method] -------------------------------------------------------- +Assert::nan($value, ?string $description=null) .[method] +-------------------------------------------------------- `$value` має бути Not a Number. Використовуйте тільки `Assert::nan()` для тестування NAN. Значення NAN дуже специфічне, і твердження `Assert::same()` або `Assert::equal()` можуть повести себе непередбачувано. -Assert::count($count, Countable|array $value, string $description=null) .[method] ---------------------------------------------------------------------------------- +Assert::count($count, Countable|array $value, ?string $description=null) .[method] +---------------------------------------------------------------------------------- Кількість елементів у `$value` має дорівнювати `$count`. Тобто те саме, що й `count($value) === $count`. -Assert::type(string|object $type, $value, string $description=null) .[method] ------------------------------------------------------------------------------ +Assert::type(string|object $type, $value, ?string $description=null) .[method] +------------------------------------------------------------------------------ `$value` має бути заданого типу. Як `$type` ми можемо використовувати рядок: - `array` - `list` - масив, індексований у порядку зростання числових ключів від нуля. @@ -127,8 +127,8 @@ Assert::type(string|object $type, $value, string $description=null) .[method] - ім'я класу або об'єкта безпосередньо, то необхідно передати `$value instanceof $type` -Assert::exception(callable $callable, string $class, string $message=null, $code=null) .[method] ------------------------------------------------------------------------------------------------- +Assert::exception(callable $callable, string $class, ?string $message=null, $code=null) .[method] +------------------------------------------------------------------------------------------------- При виклику `$callable` має бути викинуто виключення екземпляра `$class`. Якщо ми передаємо `$message`, то повідомлення виключення має [збігатися |#Assert-match]. А якщо ми передаємо `$code`, то код виключення має бути таким самим. Наприклад, цей тест не пройдено, тому що повідомлення виключення не збігається: @@ -154,8 +154,8 @@ Assert::type(RuntimeException::class, $e->getPrevious()); ``` -Assert::error(string $callable, int|string|array $type, string $message=null) .[method] ---------------------------------------------------------------------------------------- +Assert::error(string $callable, int|string|array $type, ?string $message=null) .[method] +---------------------------------------------------------------------------------------- Перевіряє, що виклик `$callable` генерує очікувані помилки (тобто попередження, повідомлення тощо). Як `$type` ми вказуємо одну з констант `E_...`, наприклад `E_WARNING`. І якщо передаємо `$message`, то повідомлення про помилку також має [відповідати |#Assert-match] шаблону. Наприклад: ```php @@ -187,8 +187,8 @@ Assert::noError(callable $callable) .[method] Перевіряє, що функція `$callable` не викидає жодних попереджень/зауважень/помилок або виключень PHP. Це корисно для перевірки частини коду, де немає інших тверджень. -Assert::match(string $pattern, $actual, string $description=null) .[method] ---------------------------------------------------------------------------- +Assert::match(string $pattern, $actual, ?string $description=null) .[method] +---------------------------------------------------------------------------- `$actual` повинен відповідати `$pattern`. Ми можемо використовувати два варіанти шаблонів: регулярні вирази або знаки підстановки. Якщо ми передаємо регулярний вираз як `$pattern`, ми повинні використовувати `~` or `#` для його поділу. Інші роздільники не підтримуються. Наприклад, тест, де `$var` повинен містити тільки шістнадцяткові цифри: @@ -227,8 +227,8 @@ Assert::match('Error in file %a% on line %i%', $errorMessage); ``` -Assert::matchFile(string $file, $actual, string $description=null) .[method] ----------------------------------------------------------------------------- +Assert::matchFile(string $file, $actual, ?string $description=null) .[method] +----------------------------------------------------------------------------- Твердження ідентичне [Assert::match() |#Assert-match], але шаблон завантажується з `$file`. Це корисно для тестування дуже довгих рядків. Тестовий файл стає читабельним. diff --git a/utils/bg/arrays.texy b/utils/bg/arrays.texy index c7ba13c152..d0942f4322 100644 --- a/utils/bg/arrays.texy +++ b/utils/bg/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Връща елемент `$array[$key]`. Ако той не съществува, се изписва изключение `Nette\InvalidArgumentException` или, ако е зададен трети параметър `$default`, се връща този параметър. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Стойностите от втория масив винаги се добавят към края на първия масив. Изчезването на стойността `10` от второто поле може да изглежда малко объркващо. Обърнете внимание, че тази стойност е същата като стойността `5` v poli prvním mají přiřazený stejný numerický klíč `0`, така че само елементът от първото поле влиза в получения масив. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Нормализира масива до асоциативен масив. Заменя ключовете с числа с техните стойности, като новата стойност е `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Връща и премахва стойността на елемент от масива. Ако не съществува, се хвърля изключение или се връща стойността `$default`, ако съществува. diff --git a/utils/bg/datetime.texy b/utils/bg/datetime.texy index 7c98e521c0..21c5c119fb 100644 --- a/utils/bg/datetime.texy +++ b/utils/bg/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Разширява функцията [DateTime::createFromFormat( |https://www.php.net/manual/en/datetime.createfromformat.php] ) с възможност за въвеждане на часовата зона като низ. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); diff --git a/utils/bg/images.texy b/utils/bg/images.texy index ba22eb6872..053c5bf5da 100644 --- a/utils/bg/images.texy +++ b/utils/bg/images.texy @@ -250,8 +250,8 @@ $blank->place($image, '80%', '80%', 25); // прозрачността е 25% =============================================== -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Създава ново истинско цветно изображение със зададени размери. Цветът по подразбиране е черен. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Изчислява размерите на правоъгълника, който огражда текст с определен шрифт и размер. Връща асоциативен масив, съдържащ ключовете `left`, `top`, `width`, `height`. Лявото поле може да бъде отрицателно, ако текстът започва с ляв надвес. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Връща изображение, съдържащо афинно-трансформирано src изображение, като се използва опционална област на изрязване. ([повече информация |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Връща конкатенацията на две матрици за афинна трансформация, което е полезно, ако трябва да се приложат няколко трансформации към едно и също изображение. ([повече подробности |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Връща матричната трансформационна матрица. ([повече подробности |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Връща броя на цветовете в палитрата на изображението. ([повече подробности |https://www.php.net/manual/en/function.imagecolorstotal]) -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Получава или задава прозрачен цвят за изображението. ([повече подробности |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Връща ширината на изображението. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Включва или изключва режима с преливане. Ако е зададен режим с преплитане и изображението е записано във формат JPEG, изображението ще бъде записано като прогресивен JPEG. ([повече подробности |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Промяна на размера на изображението, [допълнителна информация |#Image-Resize]. Размерите могат да бъдат зададени като цели числа в пиксели или като низове в проценти (напр. `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Задава или връща разделителната способност на изображението в DPI (точки на инч). Ако не е посочен нито един от незадължителните параметри, текущата резолюция се връща като индексирано поле. Ако е посочен само `$resX`, хоризонталната и вертикалната разделителна способност се задава на тази стойност. Ако са зададени и двата незадължителни параметъра, хоризонталната и вертикалната разделителна способност се настройват на тези стойности. Разделителната способност се използва като метаинформация само при четене и запис на изображения във формати, които поддържат такава информация (понастоящем PNG и JPEG). Тя не оказва влияние върху операциите по боядисване. Разделителната способност по подразбиране за нови изображения е 96 DPI. ([прочети повече) |https://www.php.net/manual/en/function.imageresolution] @@ -628,8 +628,8 @@ rotate(float $angle, int $backgroundColor): Image .[method] Изисква *Пълен GD разширение*, така че може да не работи навсякъде. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Записва изображението във файл. Качеството на компресията е в диапазона 0..100 за JPEG (по подразбиране 85), WEBP (по подразбиране 80) и AVIF (по подразбиране 30) и 0..9 за PNG (по подразбиране 9). Ако типът не е очевиден от разширението на файла, можете да го посочите, като използвате една от константите на `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Мащабирайте изображението, като използвате зададения алгоритъм за интерполация. ([повече подробности |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Извежда изображението в браузъра. Качеството на компресията е в диапазона 0..100 за JPEG (по подразбиране 85), WEBP (по подразбиране 80) и AVIF (по подразбиране 30) и 0..9 за PNG (по подразбиране 9). @@ -699,8 +699,8 @@ sharpen(): Image .[method] Изисква *Пълен GD разширение*, така че може да не работи навсякъде. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Записва изображението в низ. Качеството на компресията е в диапазона 0..100 за JPEG (по подразбиране 85), WEBP (по подразбиране 80) и AVIF (по подразбиране 30) и 0..9 за PNG (по подразбиране 9). diff --git a/utils/bg/json.texy b/utils/bg/json.texy index ae3f5f104c..170f2117f4 100644 --- a/utils/bg/json.texy +++ b/utils/bg/json.texy @@ -77,7 +77,7 @@ decode(string $json, bool $forceArray=false): mixed .[method] ```php Json::decode('{"variable": true}'); // връща обект от тип stdClass -Json::decode('{"variable": true}', forceArray: true); // return array +Json::decode('{"variable": true}', forceArrays: true); // return array ``` Ако възникне грешка, се изхвърля изключение на адрес `Nette\Utils\JsonException`. diff --git a/utils/bg/strings.texy b/utils/bg/strings.texy index 2a4e3d6d98..787b4fa6e9 100644 --- a/utils/bg/strings.texy +++ b/utils/bg/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Променя низът UTF-8 до формата, използван в URL адресите, т.е. премахва диакритичните знаци и заменя всички символи с изключение на английските букви и цифри с дефис. @@ -129,8 +129,8 @@ Strings::webalize('Dobrý den', null, false); // 'Dobry-den' Изисква разширението на PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Орязва белите символи (или други символи, посочени от втория параметър) от началото и края на низ в UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Връща UTF-8 частта на низа `$s`, зададена от началната позиция `$start` и дължината `$length`. Ако `$start` е отрицателна стойност, върнатият низ ще започне със символа -`$start` символа от края. @@ -266,8 +266,8 @@ Strings::length('červená'); // 7 \-- -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Сравняване на два низа в UTF-8 или части от низове, които не се различават по размер. Ако `$length` съдържа null, се сравняват цели низове, ако е отрицателен, се сравняват съответния брой символи от края на низовете, в противен случай се сравняват съответния брой символи от началото. diff --git a/utils/bg/validators.texy b/utils/bg/validators.texy index 15acdcebd1..d1d45bc29c 100644 --- a/utils/bg/validators.texy +++ b/utils/bg/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Проверява се дали елементът под ключа `$key` в полето `$array` е един от [очакваните типове |#Expected-Types], разделени със звездичка. В противен случай се изхвърля изключение [api:Nette\Utils\AssertionException]. Реда `item '%' in array` в текста на изключението може да бъде заменен с друг параметър `$label`. diff --git a/utils/cs/arrays.texy b/utils/cs/arrays.texy index 65a19adc57..7e93b2a73d 100644 --- a/utils/cs/arrays.texy +++ b/utils/cs/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Vrací prvek `$array[$key]`. Pokud neexistuje, vyhodí buď výjimku `Nette\InvalidArgumentException`, nebo je-li uveden třetí parametr `$default`, vrátí ten. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Hodnoty z druhého pole jsou vždy přidány na konec prvního. Jako trošku matoucí se může zdát zmizení hodnoty `10` z druhého pole. Je třeba si uvědomit, že tato hodnota a stejně tak hodnota `5` v poli prvním mají přiřazený stejný numerický klíč `0`, proto ve výsledném poli je jen prvek z prvního pole. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normalizuje pole na asociativní pole. Numerické klíče nahradí jejich hodnotami, novou hodnotou bude `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Vrátí a odstraní hodnotu prvku z pole. Pokud neexistuje, vyhodí výjimku, nebo vrátí hodnotu `$default`, pokud je uvedena. diff --git a/utils/cs/datetime.texy b/utils/cs/datetime.texy index ea1c626e56..6b2788d3e1 100644 --- a/utils/cs/datetime.texy +++ b/utils/cs/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Rozšiřuje [DateTime::createFromFormat()|https://www.php.net/manual/en/datetime.createfromformat.php] o možnost zadat timezone jako řetězec. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); diff --git a/utils/cs/images.texy b/utils/cs/images.texy index 213eb24804..2b6411eebd 100644 --- a/utils/cs/images.texy +++ b/utils/cs/images.texy @@ -250,8 +250,8 @@ Přehled metod ============= -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Vytvoří nový true color obrázek daných rozměrů. Výchozí barva je černá. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Spočítá rozměry obdélníku, který obepne text v určitém písmu a velikosti. Vrací asociativní pole obsahující klíče `left`, `top`, `width`, `height`. Levý okraj může být i záporný, pokud text začíná levým podřezáváním. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Vraťte obrázek obsahující afinně transformovaný obraz src pomocí volitelné oblasti oříznutí. ([více |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Vrací zřetězení dvou afinních transformačních matic, což je užitečné, pokud by se na stejný obrázek mělo najednou použít více transformací. ([více |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Vrátí maticovou transformační matici. ([více |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Vrátí počet barev v obrazové paletě. ([více |https://www.php.net/manual/en/function.imagecolorstotal]) -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Získá nebo nastaví průhlednou barvu v obrázku. ([více |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Vrátí šířku obrázku. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Zapíná nebo vypíná prokládaný režim. Pokud je prokládaný režim nastaven a obrázek je uložen jako JPEG, bude uložen jako progresivní JPEG. ([více |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Změní velikost obrázku, [více informací|#Změna velikosti]. Rozměry je možné zadávat jako integery v pixelech nebo řetězce v procentech (například `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Nastaví nebo vrátí rozlišení obrázku v DPI (tečky na palec). Pokud není zadán žádný z volitelných parametrů, je aktuální rozlišení vráceno jako indexované pole. Pokud je zadáno pouze `$resX`, horizontální a vertikální rozlišení se nastaví na tuto hodnotu. Pokud jsou zadány oba volitelné parametry, horizontální a vertikální rozlišení se nastaví na tyto hodnoty. Rozlišení se používá pouze jako meta informace, když jsou obrázky čteny a zapisovány do formátů podporujících tento druh informací (aktuálně PNG a JPEG). Nemá to vliv na žádné operace kreslení. Výchozí rozlišení nových snímků je 96 DPI. ([více |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Otočí obrázek pomocí zadaného `$angle` ve stupních. Střed otáčení je s Vyžaduje přítomnost *Bundled GD extension*, nemusí tedy fungovat všude. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Uloží obrázek do souboru. Kvalita komprese je v rozsahu 0..100 pro JPEG (výchozí 85), WEBP (výchozí 80) a AVIF (výchozí 30) a 0..9 pro PNG (výchozí 9). Pokud typ není zřejmý z přípony souboru, můžete jej zadat pomocí jedné z konstant `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Měřítko obrázku pomocí daného interpolačního algoritmu. ([více |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Vypíše obrázek do prohlížeče. Kvalita komprese je v rozsahu 0..100 pro JPEG (výchozí 85), WEBP (výchozí 80) a AVIF (výchozí 30) a 0..9 pro PNG (výchozí 9). @@ -699,8 +699,8 @@ Doostří obrázek. Vyžaduje přítomnost *Bundled GD extension*, nemusí tedy fungovat všude. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Uloží obrázek do řetezce. Kvalita komprese je v rozsahu 0..100 pro JPEG (výchozí 85), WEBP (výchozí 80) a AVIF (výchozí 30) a 0..9 pro PNG (výchozí 9). diff --git a/utils/cs/json.texy b/utils/cs/json.texy index 4d8cf928a5..e35420ef55 100644 --- a/utils/cs/json.texy +++ b/utils/cs/json.texy @@ -77,7 +77,7 @@ Nastavení `$forceArray` vynutí vrácení polí místo objektů: ```php Json::decode('{"variable": true}'); // vrací objekt typu stdClass -Json::decode('{"variable": true}', forceArray: true); // vrací pole +Json::decode('{"variable": true}', forceArrays: true); // vrací pole ``` Při chybě vyhazuje výjimku `Nette\Utils\JsonException`. diff --git a/utils/cs/strings.texy b/utils/cs/strings.texy index c3a0a35a2c..83d63a73d2 100644 --- a/utils/cs/strings.texy +++ b/utils/cs/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Upraví UTF-8 řetězec do tvaru používaného v URL, tj. odstraní diakritiku a všechny znaky, kromě písmen anglické abecedy a číslic, nahradí spojovníkem. @@ -129,8 +129,8 @@ Strings::webalize('Dobrý den', null, false); // 'Dobry-den' Vyžaduje PHP rozšíření `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Ořízne mezery (nebo jiné znaky určené druhým parametrem) ze začátku a konce UTF-8 řetězce. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Vrátí část UTF-8 řetězce `$s` zadanou počáteční pozicí `$start` a délkou `$length`. Pokud je `$start` záporný, bude vrácený řetězec začínat znakem -`$start` znakem od konce. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Používejte nativní `str_contains()`:https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Porovnání dvou UTF-8 řetězců nebo jejich částí bez ohledu na velikost písmen. Pokud `$length` obsahuje null, porovnávají se celé řetězce, pokud je záporný, porovnává se příslušný počet znaků od konce řetězců, jinak se porovnává příslušný počet znaků od začátku. diff --git a/utils/cs/upgrading.texy b/utils/cs/upgrading.texy index 3a3d1f69e7..e69260c8f7 100644 --- a/utils/cs/upgrading.texy +++ b/utils/cs/upgrading.texy @@ -30,3 +30,5 @@ V předchozí verzi platilo, že metody `exclude()` a `filter()` fungovaly jinak Finder již neimplementuje rozhraní Countable. Řetězec začínající lomítkem ve `Finder::findFiles('/f*')` se nově považuje za absolutní cestu, je potřeba ho nahradit např. za `Finder::findFiles('./f*')`. + +Pokud adresář, ve kterém hledáte, neexistuje, vyhodí se `Nette\InvalidStateException` (místo `UnexpectedValueException`). diff --git a/utils/cs/validators.texy b/utils/cs/validators.texy index f29e003c3f..6be0c1a0bd 100644 --- a/utils/cs/validators.texy +++ b/utils/cs/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Ověřuje, zda prvek pod klíčem `$key` v poli `$array` je jedním z [očekávaných typů|#Očekávané typy] oddělených svislítkem. Pokud ne, vyhodí výjimku [api:Nette\Utils\AssertionException]. Řetězec `item '%' in array` v textu výjimky lze nahradit za jiný parametrem `$label`. diff --git a/utils/de/arrays.texy b/utils/de/arrays.texy index 1475a210ca..9b7a2b8b77 100644 --- a/utils/de/arrays.texy +++ b/utils/de/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Gibt `$array[$key]` Element. Wenn es nicht existiert, wird `Nette\InvalidArgumentException` ausgelöst, es sei denn, ein Standardwert wird als drittes Argument angegeben. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Werte aus dem zweiten Array werden immer an das erste angehängt. Das Verschwinden des Wertes `10` aus dem zweiten Array mag ein wenig verwirrend erscheinen. Es sollte beachtet werden, dass dieser Wert sowie der Wert `5` in the first array have the same numeric key `0`, also im resultierenden Feld nur ein Element aus dem ersten Array vorhanden ist. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normalisiert ein Array zu einem assoziativen Array. Ersetzen Sie numerische Schlüssel durch ihre Werte, der neue Wert wird `$filling` sein. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Liefert und entfernt den Wert eines Elements aus einem Array. Wenn es nicht existiert, wird eine Exception geworfen oder `$default` zurückgegeben, falls angegeben. diff --git a/utils/de/datetime.texy b/utils/de/datetime.texy index 18d573bc6b..d2f5776e62 100644 --- a/utils/de/datetime.texy +++ b/utils/de/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Extends [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] with the ability to specify a timezone as a string. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // Erstellung mit benutzerdefinierter Zeitzone diff --git a/utils/de/images.texy b/utils/de/images.texy index 861dda114b..2f913e5f65 100644 --- a/utils/de/images.texy +++ b/utils/de/images.texy @@ -250,8 +250,8 @@ Eine solche API ist wirklich ein Vergnügen, nicht wahr? ======================================================= -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Erzeugt ein neues Echtfarbbild mit den angegebenen Abmessungen. Die Standardfarbe ist Schwarz. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Berechnet die Abmessungen des Rechtecks, das den Text in einer bestimmten Schriftart und -größe umschließt. Sie gibt ein assoziatives Array zurück, das die Schlüssel `left`, `top`, `width`, `height` enthält. Der linke Rand kann negativ sein, wenn der Text mit einem linken Überhang beginnt. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Gibt ein Bild zurück, das das affin transformierte Ausgangsbild enthält, wobei ein optionaler Beschneidungsbereich verwendet wird. ([mehr |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Gibt die Verkettung von zwei affinen Transformationsmatrizen zurück, was nützlich ist, wenn mehrere Transformationen in einem Durchgang auf dasselbe Bild angewendet werden sollen. ([mehr |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Gibt eine affine Transformationsmatrix zurück. ([mehr |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Gibt die Anzahl der Farben in einer Bildpalette zurück ([mehr |https://www.php.net/manual/en/function.imagecolorstotal]). -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Liest oder setzt die transparente Farbe des Bildes. ([mehr |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Gibt die Breite des Bildes zurück. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Schaltet das Zeilensprungbit ein oder aus. Wenn das Interlace-Bit gesetzt ist und das Bild als JPEG-Bild verwendet wird, wird das Bild als progressives JPEG erstellt. ([mehr |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Skaliert ein Bild, siehe [weitere Informationen |#Image Resize]. Die Abmessungen können als ganze Zahlen in Pixeln oder als Strings in Prozent (z. B. `'50%'`) übergeben werden. -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Ermöglicht das Einstellen und Abrufen der Auflösung eines Bildes in DPI (dots per inch). Wenn keiner der optionalen Parameter angegeben wird, wird die aktuelle Auflösung als indiziertes Array zurückgegeben. Wenn nur `$resX` angegeben wird, werden die horizontale und vertikale Auflösung auf diesen Wert gesetzt. Wenn beide optionalen Parameter angegeben werden, werden die horizontale und vertikale Auflösung auf diese Werte gesetzt. Die Auflösung wird nur als Metainformation verwendet, wenn Bilder aus Formaten gelesen und in Formate geschrieben werden, die diese Art von Information unterstützen (derzeit PNG und JPEG). Sie hat keinen Einfluss auf die Zeichenoperationen. Die Standardauflösung für neue Bilder beträgt 96 DPI. ([mehr |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Dreht das Bild unter Verwendung der angegebenen `$angle` in Grad. Das Zentrum de Erfordert *GD-Erweiterung*, daher ist nicht sicher, dass sie überall funktioniert. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Speichert ein Bild in einer Datei. Die Kompressionsqualität liegt im Bereich 0..100 für JPEG (Standard 85), WEBP (Standard 80) und AVIF (Standard 30) und 0..9 für PNG (Standard 9). Wenn der Typ nicht aus der Dateierweiterung ersichtlich ist, können Sie ihn mit einer der Konstanten `ImageType` angeben. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Skaliert ein Bild unter Verwendung des angegebenen Interpolationsalgorithmus. ([mehr |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Gibt ein Bild an den Browser aus. Die Kompressionsqualität liegt im Bereich 0..100 für JPEG (Standard 85), WEBP (Standard 80) und AVIF (Standard 30) und 0..9 für PNG (Standard 9). @@ -699,8 +699,8 @@ Schärft das Bild ein wenig. Erfordert *GD-Erweiterung*, daher ist nicht sicher, dass sie überall funktioniert. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Gibt ein Bild als String aus. Die Kompressionsqualität liegt im Bereich 0..100 für JPEG (Standard 85), WEBP (Standard 80) und AVIF (Standard 30) und 0..9 für PNG (Standard 9). diff --git a/utils/de/json.texy b/utils/de/json.texy index 75a70b407e..e17543165f 100644 --- a/utils/de/json.texy +++ b/utils/de/json.texy @@ -77,7 +77,7 @@ Die Einstellung `$forceArray` erzwingt die Rückgabe von Arrays anstelle von Obj ```php Json::decode('{"variable": true}'); // liefert ein Objekt vom Typ stdClass -Json::decode('{"variable": true}', forceArray: true); // gibt ein Array zurück +Json::decode('{"variable": true}', forceArrays: true); // gibt ein Array zurück ``` Im Fehlerfall wird eine `Nette\Utils\JsonException` Exception ausgelöst. diff --git a/utils/de/strings.texy b/utils/de/strings.texy index ed93c323ca..da18d37dfd 100644 --- a/utils/de/strings.texy +++ b/utils/de/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Ändert die UTF-8-Zeichenkette in die Form, die in der URL verwendet wird, d. h. entfernt diakritische Zeichen und ersetzt alle Zeichen außer Buchstaben des englischen Alphabets und Zahlen durch einen Bindestrich. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' Erfordert die PHP-Erweiterung `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Entfernt alle links- und rechtsseitigen Leerzeichen (oder die als zweites Argument übergebenen Zeichen) aus einer UTF-8-kodierten Zeichenkette. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Gibt einen Teil der UTF-8-Zeichenkette zurück, der durch die Startposition `$start` und die Länge `$length` angegeben wird. Wenn `$start` negativ ist, beginnt die zurückgegebene Zeichenkette am `$start`'ten Zeichen vom Ende der Zeichenkette. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Verwenden Sie die native `str_contains()`:https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Vergleicht zwei UTF-8-Zeichenketten oder deren Teile, ohne Berücksichtigung der Groß- und Kleinschreibung. Ist `$length` gleich null, werden ganze Zeichenketten verglichen, ist er negativ, wird die entsprechende Anzahl von Zeichen vom Ende der Zeichenketten verglichen, andernfalls die entsprechende Anzahl von Zeichen vom Anfang. diff --git a/utils/de/validators.texy b/utils/de/validators.texy index 7128ff2c8e..6ec5fb1fa3 100644 --- a/utils/de/validators.texy +++ b/utils/de/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Überprüft, ob das Element `$key` im Array `$array` die [erwarteten |#expected types], durch Pipe getrennten [Typen |#expected types] enthält. Wenn nicht, wird die Ausnahme [api:Nette\Utils\AssertionException] ausgelöst. Die Zeichenkette `item '%' in array` in der Ausnahmemeldung kann durch den Parameter `$label` ersetzt werden. diff --git a/utils/el/arrays.texy b/utils/el/arrays.texy index be7098e40f..788f31ed6d 100644 --- a/utils/el/arrays.texy +++ b/utils/el/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Επιστρέφει `$array[$key]` item. Εάν δεν υπάρχει, απορρίπτεται το `Nette\InvalidArgumentException`, εκτός εάν έχει οριστεί μια προεπιλεγμένη τιμή ως τρίτο όρισμα. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Οι τιμές από τον δεύτερο πίνακα προστίθενται πάντα στον πρώτο. Η εξαφάνιση της τιμής `10` από τον δεύτερο πίνακα μπορεί να φαίνεται λίγο συγκεχυμένη. Θα πρέπει να σημειωθεί ότι αυτή η τιμή καθώς και η τιμή `5` in the first array have the same numeric key `0`, οπότε στο πεδίο που προκύπτει υπάρχει μόνο ένα στοιχείο από τον πρώτο πίνακα. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Κανονικοποιεί τον πίνακα σε συσχετιστικό πίνακα. Αντικαθιστά τα αριθμητικά κλειδιά με τις τιμές τους, η νέα τιμή θα είναι `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Επιστρέφει και αφαιρεί την τιμή ενός στοιχείου από έναν πίνακα. Εάν δεν υπάρχει, πετάει μια εξαίρεση ή επιστρέφει `$default`, εάν παρέχεται. diff --git a/utils/el/datetime.texy b/utils/el/datetime.texy index b024149658..f9ebeb7d9c 100644 --- a/utils/el/datetime.texy +++ b/utils/el/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Επεκτείνει την [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] με τη δυνατότητα καθορισμού μιας ζώνης ώρας ως συμβολοσειρά. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // δημιουργία με προσαρμοσμένη ζώνη ώρας diff --git a/utils/el/images.texy b/utils/el/images.texy index c90e750c2d..07865c9ff2 100644 --- a/utils/el/images.texy +++ b/utils/el/images.texy @@ -250,8 +250,8 @@ $blank->place($image, '80%', '80%', 25); // η διαφάνεια είναι 25 ================================================== -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Δημιουργεί μια νέα έγχρωμη εικόνα με τις δεδομένες διαστάσεις. Το προεπιλεγμένο χρώμα είναι το μαύρο. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Υπολογίζει τις διαστάσεις του ορθογωνίου που περικλείει το κείμενο σε καθορισμένη γραμματοσειρά και μέγεθος. Επιστρέφει έναν συσχετιστικό πίνακα που περιέχει τα κλειδιά `left`, `top`, `width`, `height`. Το αριστερό περιθώριο μπορεί να είναι αρνητικό εάν το κείμενο ξεκινά με αριστερή προεξοχή. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Επιστρέφει μια εικόνα που περιέχει την affine μετασχηματισμένη εικόνα src, χρησιμοποιώντας μια προαιρετική περιοχή αποκοπής. ([περισσότερα |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Επιστρέφει τη συνένωση δύο πινάκων μετασχηματισμού affine, η οποία είναι χρήσιμη εάν πρέπει να εφαρμοστούν πολλαπλοί μετασχηματισμοί στην ίδια εικόνα με μία κίνηση. ([περισσότερα |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Επιστρέφει έναν πίνακα μετασχηματισμού affine. ([περισσότερα |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Επιστρέφει τον αριθμό των χρωμάτων σε μια παλέτα εικόνας ([more |https://www.php.net/manual/en/function.imagecolorstotal]). -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Λαμβάνει ή ορίζει το διαφανές χρώμα της εικόνας. ([περισσότερα |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Επιστρέφει το πλάτος της εικόνας. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Ενεργοποιεί ή απενεργοποιεί το bit interlace. Εάν το bit interlace είναι ρυθμισμένο και η εικόνα χρησιμοποιείται ως εικόνα JPEG, η εικόνα δημιουργείται ως προοδευτικό JPEG. ([περισσότερα |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Κλιμακώνει μια εικόνα, δείτε [περισσότερες πληροφορίες |#Image Resize]. Οι διαστάσεις μπορούν να μεταβιβαστούν ως ακέραιοι αριθμοί σε pixels ή συμβολοσειρές σε ποσοστό (π.χ. `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Επιτρέπει τον ορισμό και τη λήψη της ανάλυσης μιας εικόνας σε DPI (κουκκίδες ανά ίντσα). Εάν δεν δοθεί καμία από τις προαιρετικές παραμέτρους, η τρέχουσα ανάλυση επιστρέφεται ως πίνακας με ευρετήριο. Αν δοθεί μόνο η τιμή `$resX`, η οριζόντια και η κάθετη ανάλυση καθορίζονται σε αυτή την τιμή. Εάν δίνονται και οι δύο προαιρετικές παράμετροι, η οριζόντια και η κατακόρυφη ανάλυση τίθενται σε αυτές τις τιμές, αντίστοιχα. Η ανάλυση χρησιμοποιείται μόνο ως μεταπληροφορία όταν οι εικόνες διαβάζονται και εγγράφονται σε μορφές που υποστηρίζουν τέτοιου είδους πληροφορίες (επί του παρόντος PNG και JPEG). Δεν επηρεάζει καμία λειτουργία σχεδίασης. Η προεπιλεγμένη ανάλυση για νέες εικόνες είναι 96 DPI. ([περισσότερα |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ rotate(float $angle, int $backgroundColor): Image .[method] Απαιτεί *Επέκταση GD*, οπότε δεν είναι σίγουρο ότι θα λειτουργήσει παντού. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Αποθηκεύει μια εικόνα σε ένα αρχείο. Η ποιότητα συμπίεσης κυμαίνεται στο εύρος 0..100 για τα JPEG (προεπιλογή 85), WEBP (προεπιλογή 80) και AVIF (προεπιλογή 30) και 0..9 για το PNG (προεπιλογή 9). Εάν ο τύπος δεν είναι προφανής από την επέκταση του αρχείου, μπορείτε να τον καθορίσετε χρησιμοποιώντας μία από τις σταθερές `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Κλιμακώνει μια εικόνα χρησιμοποιώντας τον δεδομένο αλγόριθμο παρεμβολής. ([περισσότερα |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Εκδίδει μια εικόνα στο πρόγραμμα περιήγησης. Η ποιότητα συμπίεσης κυμαίνεται στο εύρος 0..100 για τα JPEG (προεπιλογή 85), WEBP (προεπιλογή 80) και AVIF (προεπιλογή 30) και 0..9 για το PNG (προεπιλογή 9). @@ -699,8 +699,8 @@ sharpen(): Image .[method] Απαιτεί *Επέκταση GD Bundled*, οπότε δεν είναι σίγουρο ότι θα λειτουργήσει παντού. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Εξάγει μια εικόνα σε συμβολοσειρά. Η ποιότητα συμπίεσης κυμαίνεται στο εύρος 0..100 για τα JPEG (προεπιλογή 85), WEBP (προεπιλογή 80) και AVIF (προεπιλογή 30) και 0..9 για το PNG (προεπιλογή 9). diff --git a/utils/el/json.texy b/utils/el/json.texy index c7679f3dc5..7c956ba4de 100644 --- a/utils/el/json.texy +++ b/utils/el/json.texy @@ -77,7 +77,7 @@ decode(string $json, bool $forceArray=false): mixed .[method] ```php Json::decode('{"variable": true}'); // επιστρέφει ένα αντικείμενο τύπου stdClass -Json::decode('{"variable": true}', forceArray: true); // επιστρέφει έναν πίνακα +Json::decode('{"variable": true}', forceArrays: true); // επιστρέφει έναν πίνακα ``` Εκπέμπει μια εξαίρεση `Nette\Utils\JsonException` σε περίπτωση σφάλματος. diff --git a/utils/el/strings.texy b/utils/el/strings.texy index 53e552ad15..943e8ca617 100644 --- a/utils/el/strings.texy +++ b/utils/el/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Τροποποιεί τη συμβολοσειρά UTF-8 στη μορφή που χρησιμοποιείται στη διεύθυνση URL, δηλαδή αφαιρεί τους διακριτικούς χαρακτήρες και αντικαθιστά όλους τους χαρακτήρες εκτός από τα γράμματα του αγγλικού αλφαβήτου και τους αριθμούς με μια παύλα. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' Απαιτεί την επέκταση PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Αφαιρεί όλα τα αριστερά και δεξιά κενά (ή τους χαρακτήρες που περνούν ως δεύτερο όρισμα) από μια κωδικοποιημένη συμβολοσειρά UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Επιστρέφει ένα τμήμα της συμβολοσειράς UTF-8 που καθορίζεται από τη θέση έναρξης `$start` και το μήκος `$length`. Εάν το `$start` είναι αρνητικό, το επιστρεφόμενο αλφαριθμητικό θα ξεκινήσει από τον `$start`'οστό χαρακτήρα από το τέλος του αλφαριθμητικού. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Χρήση εγγενούς `str_contains()`:https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Συγκρίνει δύο συμβολοσειρές UTF-8 ή τα μέρη τους, χωρίς να λαμβάνει υπόψη την περίπτωση χαρακτήρων. Αν `$length` είναι null, συγκρίνονται ολόκληρες συμβολοσειρές, αν είναι αρνητικό, συγκρίνεται ο αντίστοιχος αριθμός χαρακτήρων από το τέλος των συμβολοσειρών, διαφορετικά συγκρίνεται ο αντίστοιχος αριθμός χαρακτήρων από την αρχή. diff --git a/utils/el/validators.texy b/utils/el/validators.texy index 33bbfc2c76..5c111f74be 100644 --- a/utils/el/validators.texy +++ b/utils/el/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Επαληθεύει ότι το στοιχείο `$key` στον πίνακα `$array` αποτελείται από τους [αναμενόμενους τύπους |#expected types] που χωρίζονται με pipe. Αν όχι, πετάει την εξαίρεση [api:Nette\Utils\AssertionException]. Η συμβολοσειρά `item '%' in array` στο μήνυμα εξαίρεσης μπορεί να αντικατασταθεί από την παράμετρο `$label`. diff --git a/utils/en/arrays.texy b/utils/en/arrays.texy index dfe202c550..0718e80acb 100644 --- a/utils/en/arrays.texy +++ b/utils/en/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Returns `$array[$key]` item. If it does not exist, `Nette\InvalidArgumentException` is thrown, unless a default value is set as third argument. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Values from the second array are always appended to the first. The disappearance of the value `10` from the second array may seem a bit confusing. It should be noted that this value as well as the value `5` in the first array have the same numeric key `0`, so in the resulting field there is only an element from the first array. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normalizes array to associative array. Replace numeric keys with their values, the new value will be `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Returns and removes the value of an item from an array. If it does not exist, it throws an exception, or returns `$default`, if provided. diff --git a/utils/en/datetime.texy b/utils/en/datetime.texy index b2be48fba5..4ff258943f 100644 --- a/utils/en/datetime.texy +++ b/utils/en/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Extends [DateTime::createFromFormat()|https://www.php.net/manual/en/datetime.createfromformat.php] with the ability to specify a timezone as a string. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // create with custom timezone diff --git a/utils/en/images.texy b/utils/en/images.texy index e6ef329deb..aed221f6e9 100644 --- a/utils/en/images.texy +++ b/utils/en/images.texy @@ -250,8 +250,8 @@ Overview of Methods =================== -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Creates a new true color image of the given dimensions. The default color is black. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Calculates the dimensions of the rectangle that encloses the text in a specified font and size. It returns an associative array containing the keys `left`, `top`, `width`, `height`. The left margin can be negative if the text starts with a left overhang. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Return an image containing the affine transformed src image, using an optional clipping area. ([more|https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Returns the concatenation of two affine transformation matrices, what is useful if multiple transformations should be applied to the same image in one go. ([more|https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Returns an affine transformation matrix. ([more|https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Returns the number of colors in an image palette. ([more|https://www.php.net/manual/en/function.imagecolorstotal]) -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Gets or sets the transparent color in the image. ([more|https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Returns the width of the image. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Turns the interlace bit on or off. If the interlace bit is set and the image is used as a JPEG image, the image is created as a progressive JPEG. ([more|https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Scales an image, see [more info|#Image Resize]. Dimensions can be passed as integers in pixels or strings in percent (i.e. `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Allows to set and get the resolution of an image in DPI (dots per inch). If none of the optional parameters is given, the current resolution is returned as indexed array. If only `$resX` is given, the horizontal and vertical resolution are set to this value. If both optional parameters are given, the horizontal and vertical resolution are set to these values, respectively. The resolution is only used as meta information when images are read from and written to formats supporting this kind of information (curently PNG and JPEG). It does not affect any drawing operations. The default resolution for new images is 96 DPI. ([more|https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Rotates the image using the given `$angle` in degrees. The center of rotation is Requires *Bundled GD extension*, so it is not sure it will work everywhere. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Saves an image to a file. The compression quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9). If the type is not obvious from the file extension, you can specify it using one of the `ImageType` constants. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Scales an image using the given interpolation algorithm. ([more|https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Outputs an image to the browser. The compression quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9). @@ -699,8 +699,8 @@ Sharpens image a little bit. Requires *Bundled GD extension*, so it is not sure it will work everywhere. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Outputs an image to string. The compression quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9). diff --git a/utils/en/json.texy b/utils/en/json.texy index f29024378f..b806869757 100644 --- a/utils/en/json.texy +++ b/utils/en/json.texy @@ -77,7 +77,7 @@ Setting `$forceArray` forces the return of arrays instead of objects: ```php Json::decode('{"variable": true}'); // returns an object of type stdClass -Json::decode('{"variable": true}', forceArray: true); // returns an array +Json::decode('{"variable": true}', forceArrays: true); // returns an array ``` It throws an `Nette\Utils\JsonException` exception on error. diff --git a/utils/en/strings.texy b/utils/en/strings.texy index f8cc42ad66..56d87c6c3e 100644 --- a/utils/en/strings.texy +++ b/utils/en/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Modifies the UTF-8 string to the form used in the URL, ie removes diacritics and replaces all characters except letters of the English alphabet and numbers with a hyphens. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' Requires PHP extension `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Removes all left and right side spaces (or the characters passed as second argument) from a UTF-8 encoded string. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Returns a part of UTF-8 string specified by starting position `$start` and length `$length`. If `$start` is negative, the returned string will start at the `$start`'th character from the end of string. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Use native `str_contains()`:https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Compares two UTF-8 strings or their parts, without taking character case into account. If `$length` is null, whole strings are compared, if it is negative, the corresponding number of characters from the end of the strings is compared, otherwise the appropriate number of characters from the beginning is compared. diff --git a/utils/en/upgrading.texy b/utils/en/upgrading.texy index ada24a4ebf..359a158261 100644 --- a/utils/en/upgrading.texy +++ b/utils/en/upgrading.texy @@ -30,3 +30,5 @@ In the previous version, the `exclude()` and `filter()` methods worked different The Finder no longer implements the Countable interface. A string starting with a slash in `Finder::findFiles('/f*')` is now considered an absolute path, it should be replaced with e.g. `Finder::findFiles('./f*')`. + +When directory you are searching in does not exist, `Nette\InvalidStateException` is thrown (instead of `UnexpectedValueException`). diff --git a/utils/en/validators.texy b/utils/en/validators.texy index 937d9cec1f..570a4b0eac 100644 --- a/utils/en/validators.texy +++ b/utils/en/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Verifies that element `$key` in array `$array` is of [#expected types] separated by pipe. If not, it throws exception [api:Nette\Utils\AssertionException]. The string `item '%' in array` in the exception message can be replaced by parameter `$label`. diff --git a/utils/es/arrays.texy b/utils/es/arrays.texy index bc6bfa0127..3d5c85fc99 100644 --- a/utils/es/arrays.texy +++ b/utils/es/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Devuelve `$array[$key]` item. Si no existe, se lanza `Nette\InvalidArgumentException`, a menos que se establezca un valor por defecto como tercer argumento. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Los valores de la segunda matriz se añaden siempre a la primera. La desaparición del valor `10` de la segunda matriz puede parecer un poco confusa. Debe tenerse en cuenta que este valor, así como el valor `5` in the first array have the same numeric key `0`, por lo que en el campo resultante sólo hay un elemento de la primera matriz. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normaliza array a array asociativo. Sustituye las claves numéricas por sus valores, el nuevo valor será `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Devuelve y elimina el valor de un elemento de un array. Si no existe, lanza una excepción, o devuelve `$default`, si se proporciona. diff --git a/utils/es/datetime.texy b/utils/es/datetime.texy index d3d11dd8bf..ea40b4fbc3 100644 --- a/utils/es/datetime.texy +++ b/utils/es/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Amplía [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] con la posibilidad de especificar una zona horaria como cadena. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // create with custom timezone diff --git a/utils/es/images.texy b/utils/es/images.texy index 85e01cfd60..6ea7247313 100644 --- a/utils/es/images.texy +++ b/utils/es/images.texy @@ -250,8 +250,8 @@ Métodos .[#toc-overview-of-methods] =================================== -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Crea una nueva imagen en color verdadero de las dimensiones dadas. El color por defecto es el negro. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Calcula las dimensiones del rectángulo que encierra el texto en una fuente y tamaño especificados. Devuelve una matriz asociativa que contiene las claves `left`, `top`, `width`, `height`. El margen izquierdo puede ser negativo si el texto comienza con un saliente a la izquierda. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Devuelve una imagen que contiene la imagen src transformada afinadamente, utilizando un área de recorte opcional. ([más |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Devuelve la concatenación de dos matrices de transformación afín, lo que resulta útil si deben aplicarse múltiples transformaciones a la misma imagen de una sola vez. ([más |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Devuelve una matriz de transformación afín. ([más |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Devuelve el número de colores de una paleta de imágenes ([más |https://www.php.net/manual/en/function.imagecolorstotal]). -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Obtiene o establece el color transparente de la imagen. ([más |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Devuelve la anchura de la imagen. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Activa o desactiva el bit de entrelazado. Si el bit de entrelazado está activado y la imagen se utiliza como imagen JPEG, la imagen se crea como JPEG progresivo. ([más |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Escala una imagen, ver [más info |#Image Resize]. Las dimensiones pueden pasarse como números enteros en píxeles o cadenas en porcentaje (es decir, `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Permite establecer y obtener la resolución de una imagen en PPP (puntos por pulgada). Si no se proporciona ninguno de los parámetros opcionales, se devuelve la resolución actual como matriz indexada. Si sólo se indica `$resX`, la resolución horizontal y vertical se ajustan a este valor. Si se dan ambos parámetros opcionales, la resolución horizontal y vertical se fijan en estos valores, respectivamente. La resolución sólo se utiliza como metainformación cuando las imágenes se leen y escriben en formatos que admiten este tipo de información (actualmente PNG y JPEG). No afecta a ninguna operación de dibujo. La resolución por defecto para las nuevas imágenes es de 96 PPP. ([más |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Rota la imagen utilizando la dirección `$angle` en grados. El centro de rotaci Requiere la extensión *Bundled GD*, por lo que no es seguro que funcione en todas partes. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Guarda una imagen en un archivo. La calidad de compresión está en el rango 0..100 para JPEG (por defecto 85), WEBP (por defecto 80) y AVIF (por defecto 30) y 0..9 para PNG (por defecto 9). Si el tipo no es obvio a partir de la extensión del archivo, puede especificarlo utilizando una de las constantes de `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Escala una imagen utilizando el algoritmo de interpolación dado. ([más |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Envía una imagen al navegador. La calidad de compresión está en el rango 0..100 para JPEG (por defecto 85), WEBP (por defecto 80) y AVIF (por defecto 30) y 0..9 para PNG (por defecto 9). @@ -699,8 +699,8 @@ Enfoca un poco la imagen. Requiere la extensión *Bundled GD*, por lo que no es seguro que funcione en todas partes. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Muestra una imagen en una cadena. La calidad de compresión está en el rango 0..100 para JPEG (por defecto 85), WEBP (por defecto 80) y AVIF (por defecto 30) y 0..9 para PNG (por defecto 9). diff --git a/utils/es/json.texy b/utils/es/json.texy index 1b4cd3ee45..d431de77f1 100644 --- a/utils/es/json.texy +++ b/utils/es/json.texy @@ -77,7 +77,7 @@ Establecer `$forceArray` fuerza la devolución de arrays en lugar de objetos: ```php Json::decode('{"variable": true}'); // devuelve un objeto de tipo stdClass -Json::decode('{"variable": true}', forceArray: true); // devuelve un array +Json::decode('{"variable": true}', forceArrays: true); // devuelve un array ``` Lanza una excepción `Nette\Utils\JsonException` en caso de error. diff --git a/utils/es/strings.texy b/utils/es/strings.texy index c8c22a59a9..e850cea5fa 100644 --- a/utils/es/strings.texy +++ b/utils/es/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Modifica la cadena UTF-8 a la forma utilizada en la URL, es decir, elimina los diacríticos y sustituye todos los caracteres excepto las letras del alfabeto inglés y los números por un guión. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' Requiere la extensión PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Elimina todos los espacios a la izquierda y a la derecha (o los caracteres pasados como segundo argumento) de una cadena codificada en UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Devuelve una parte de la cadena UTF-8 especificada por la posición inicial `$start` y la longitud `$length`. Si `$start` es negativo, la cadena devuelta comenzará en el carácter `$start`'th desde el final de la cadena. @@ -266,8 +266,8 @@ Strings::length('red'); // 3 \-- -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Compara dos cadenas UTF-8 o sus partes, sin tener en cuenta las mayúsculas y minúsculas. Si `$length` es nulo, se comparan cadenas enteras; si es negativo, se compara el número correspondiente de caracteres desde el final de las cadenas; en caso contrario, se compara el número correspondiente de caracteres desde el principio. diff --git a/utils/es/validators.texy b/utils/es/validators.texy index a01a9ce39c..b45e6fa841 100644 --- a/utils/es/validators.texy +++ b/utils/es/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Verifica que el elemento `$key` en el array `$array` es de los [tipos esperados |#expected types] separados por una tubería. Si no es así, lanza la excepción [api:Nette\Utils\AssertionException]. La cadena `item '%' in array` del mensaje de excepción puede sustituirse por el parámetro `$label`. diff --git a/utils/fr/arrays.texy b/utils/fr/arrays.texy index 53ac7c466e..4c47586166 100644 --- a/utils/fr/arrays.texy +++ b/utils/fr/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Retourne `$array[$key]` item. S'il n'existe pas, `Nette\InvalidArgumentException` est lancé, sauf si une valeur par défaut est définie comme troisième argument. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Les valeurs du deuxième tableau sont toujours ajoutées au premier. La disparition de la valeur `10` du deuxième tableau peut sembler un peu déroutante. Il convient de noter que cette valeur, ainsi que la valeur `5` in the first array have the same numeric key `0`, font que dans le champ résultant, il n'y a qu'un élément du premier tableau. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normalise le tableau en tableau associatif. Remplacez les clés numériques par leurs valeurs, la nouvelle valeur sera `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Renvoie et supprime la valeur d'un élément d'un tableau. S'il n'existe pas, il lève une exception, ou renvoie `$default`, s'il est fourni. diff --git a/utils/fr/datetime.texy b/utils/fr/datetime.texy index 912c12aa0a..19f6c6811f 100644 --- a/utils/fr/datetime.texy +++ b/utils/fr/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Extends [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] avec la possibilité de spécifier un fuseau horaire comme une chaîne de caractères. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // créer avec un fuseau horaire personnalisé diff --git a/utils/fr/images.texy b/utils/fr/images.texy index 33836488b4..92610af862 100644 --- a/utils/fr/images.texy +++ b/utils/fr/images.texy @@ -250,8 +250,8 @@ Aperçu des méthodes .[#toc-overview-of-methods] =============================================== -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Crée une nouvelle image en couleurs réelles avec les dimensions données. La couleur par défaut est le noir. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Calcule les dimensions du rectangle qui entoure le texte d'une police et d'une taille spécifiées. Il renvoie un tableau associatif contenant les clés `left`, `top`, `width`, `height`. La marge de gauche peut être négative si le texte commence avec un débordement à gauche. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Renvoie une image contenant l'image src transformée affine, en utilisant une zone de découpage optionnelle. ([plus |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Renvoie la concaténation de deux matrices de transformation affine, ce qui est utile si plusieurs transformations doivent être appliquées à la même image en une seule fois. ([plus |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Retourne une matrice de transformation affine. ([plus |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Renvoie le nombre de couleurs dans une palette d'images. ([plus |https://www.php.net/manual/en/function.imagecolorstotal]) -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Obtient ou définit la couleur transparente de l'image. ([plus |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Renvoie la largeur de l'image. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Active ou désactive le bit d'entrelacement. Si le bit d'entrelacement est activé et que l'image est utilisée comme une image JPEG, l'image est créée comme un JPEG progressif. ([plus |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Mise à l'échelle d'une image, voir [plus d'infos |#Image Resize]. Les dimensions peuvent être transmises sous forme d'entiers en pixels ou de chaînes de caractères en pourcentage (par exemple, `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Permet de définir et d'obtenir la résolution d'une image en DPI (points par pouce). Si aucun des paramètres optionnels n'est donné, la résolution courante est retournée sous forme de tableau indexé. Si seule la valeur `$resX` est donnée, la résolution horizontale et verticale est fixée à cette valeur. Si les deux paramètres facultatifs sont donnés, les résolutions horizontale et verticale sont respectivement définies à ces valeurs. La résolution est uniquement utilisée comme méta-information lorsque les images sont lues et écrites dans des formats supportant ce type d'information (actuellement PNG et JPEG). Elle n'affecte pas les opérations de dessin. La résolution par défaut des nouvelles images est de 96 DPI. ([plus |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Fait pivoter l'image en utilisant l'adresse `$angle` donnée en degrés. Le cent Nécessite *l'extension GD groupée*, il n'est donc pas sûr qu'elle fonctionne partout. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Enregistre une image dans un fichier. La qualité de la compression est comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut). Si le type n'est pas évident à partir de l'extension du fichier, vous pouvez le spécifier en utilisant l'une des constantes `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Met à l'échelle une image en utilisant l'algorithme d'interpolation donné. ([plus |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Affiche une image dans le navigateur. La qualité de la compression est comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut). @@ -699,8 +699,8 @@ Affine un peu l'image. Nécessite l'extension *Bundled GD*, il n'est donc pas sûr que cela fonctionne partout. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Produit une image sous forme de chaîne. La qualité de la compression est comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut). diff --git a/utils/fr/json.texy b/utils/fr/json.texy index a01a7e23d9..bbc766dda6 100644 --- a/utils/fr/json.texy +++ b/utils/fr/json.texy @@ -77,7 +77,7 @@ Le paramètre `$forceArray` force le retour des tableaux au lieu des objets : ```php Json::decode('{"variable": true}'); // renvoie un objet de type stdClass -Json::decode('{"variable": true}', forceArray: true); // renvoie un tableau +Json::decode('{"variable": true}', forceArrays: true); // renvoie un tableau ``` Il lance une exception `Nette\Utils\JsonException` en cas d'erreur. diff --git a/utils/fr/strings.texy b/utils/fr/strings.texy index 0e389311fa..d10e9c609e 100644 --- a/utils/fr/strings.texy +++ b/utils/fr/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Modifie la chaîne UTF-8 à la forme utilisée dans l'URL, c'est-à-dire supprime les diacritiques et remplace tous les caractères sauf les lettres de l'alphabet anglais et les chiffres par un trait d'union. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' Nécessite l'extension PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Supprime tous les espaces à gauche et à droite (ou les caractères passés en second argument) d'une chaîne de caractères encodée en UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Renvoie une partie de la chaîne UTF-8 spécifiée par la position de départ `$start` et la longueur `$length`. Si `$start` est négatif, la chaîne retournée commencera au `$start`'ème caractère à partir de la fin de la chaîne. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Utilise le natif `str_contains()`:https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Compare deux chaînes de caractères UTF-8 ou leurs parties, sans tenir compte de la casse des caractères. Si `$length` est nul, les chaînes entières sont comparées, s'il est négatif, le nombre correspondant de caractères depuis la fin des chaînes est comparé, sinon le nombre approprié de caractères depuis le début est comparé. diff --git a/utils/fr/validators.texy b/utils/fr/validators.texy index 54073869c0..23dfa3ce8a 100644 --- a/utils/fr/validators.texy +++ b/utils/fr/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Vérifie que l'élément `$key` dans le tableau `$array` est constitué des [types attendus |#expected types] séparés par un pipe. Si ce n'est pas le cas, il lève l'exception [api:Nette\Utils\AssertionException]. La chaîne `item '%' in array` dans le message d'exception peut être remplacée par le paramètre `$label`. diff --git a/utils/hu/arrays.texy b/utils/hu/arrays.texy index 92177a341a..2a32067acc 100644 --- a/utils/hu/arrays.texy +++ b/utils/hu/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Visszaadja `$array[$key]` item. Ha nem létezik, akkor a `Nette\InvalidArgumentException` dob, kivéve, ha harmadik argumentumként egy alapértelmezett érték van megadva. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); A második tömb értékei mindig hozzá lesznek csatolva az elsőhöz. A `10` érték eltűnése a második tömbből kissé zavarónak tűnhet. Meg kell jegyezni, hogy ez az érték, valamint a `5` in the first array have the same numeric key `0`, tehát a kapott mezőben csak egy elem van az első tömbből. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normalizálja a tömböt asszociatív tömbre. A numerikus kulcsokat kicseréli az értékeikkel, az új érték `$filling` lesz. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Visszaadja és eltávolítja egy elem értékét egy tömbből. Ha nem létezik, akkor kivételt dob, vagy visszaadja a `$default`, ha megadva van. diff --git a/utils/hu/datetime.texy b/utils/hu/datetime.texy index 3dea476b42..ce47083537 100644 --- a/utils/hu/datetime.texy +++ b/utils/hu/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Kiterjeszti a [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] funkciót az időzóna stringként történő megadásának lehetőségével. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // create with custom timezone diff --git a/utils/hu/images.texy b/utils/hu/images.texy index b1c513f87e..d4595022eb 100644 --- a/utils/hu/images.texy +++ b/utils/hu/images.texy @@ -250,8 +250,8 @@ A módszerek áttekintése .[#toc-overview-of-methods] =================================================== -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Új, valós színű képet hoz létre a megadott méretekkel. Az alapértelmezett szín a fekete. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Kiszámítja a megadott betűtípusú és méretű szöveget körülvevő téglalap méreteit. Egy asszociatív tömböt ad vissza, amely a `left`, `top`, `width`, `height` kulcsokat tartalmazza. A bal oldali margó negatív lehet, ha a szöveg bal oldali túlnyúlással kezdődik. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Visszaad egy képet, amely az affin transzformált src képet tartalmazza, egy opcionális vágási terület használatával. ([tovább |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Két affin transzformációs mátrix összekapcsolását adja vissza, ami akkor hasznos, ha több transzformációt kell alkalmazni ugyanarra a képre egy menetben. ([tovább |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Visszaad egy affin transzformációs mátrixot. ([tovább |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Visszaadja a színek számát egy képpalettán ([more |https://www.php.net/manual/en/function.imagecolorstotal]). -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- A kép átlátszó színének lekérdezése vagy beállítása. ([tovább |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Visszaadja a kép szélességét. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Be- vagy kikapcsolja az interlace bitet. Ha az interlace bit be van állítva, és a képet JPEG-ként használják, a kép progresszív JPEG-ként jön létre. ([tovább |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Méretezi a képet, [további információk |#Image Resize]. A méretek átadhatók egész számokként pixelben vagy karakterláncokként százalékban (pl. `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Lehetővé teszi a kép felbontásának beállítását és lekérdezését DPI-ben (dots per inch). Ha az opcionális paraméterek egyike sincs megadva, az aktuális felbontás indexelt tömbként kerül visszaadásra. Ha csak a `$resX` értéket adja meg, a vízszintes és függőleges felbontás erre az értékre kerül beállításra. Ha mindkét opcionális paramétert megadjuk, a vízszintes és függőleges felbontás ezekre az értékekre kerül beállításra. A felbontást csak akkor használjuk meta információként, amikor a képeket az ilyen információt támogató formátumokból olvassuk be és írjuk ki (jelenleg PNG és JPEG). Ez nem befolyásolja a rajzolási műveleteket. Az új képek alapértelmezett felbontása 96 DPI. ([tovább |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Elforgatja a képet a megadott `$angle` értékkel fokban. Az elforgatás közé Igényli a *Bundled GD kiterjesztést*, így nem biztos, hogy mindenhol működik. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Kép mentése egy fájlba. A tömörítési minőség a JPEG (alapértelmezett 85), WEBP (alapértelmezett 80) és AVIF (alapértelmezett 30) esetében 0..100, PNG (alapértelmezett 9) esetében 0..9 tartományban van. Ha a típus nem egyértelmű a fájlkiterjesztésből, akkor a `ImageType` konstansok egyikével adhatja meg. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m A megadott interpolációs algoritmus segítségével méretezi a képet. ([tovább |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Kimeneti egy képet a böngészőbe. A tömörítési minőség a JPEG (alapértelmezett 85), WEBP (alapértelmezett 80) és AVIF (alapértelmezett 30) esetében 0..100, PNG (alapértelmezett 9) esetében 0..9 tartományban van. @@ -699,8 +699,8 @@ Egy kicsit élesíti a képet. Igényli a *Bundled GD kiterjesztést*, így nem biztos, hogy mindenhol működik. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Kimeneti képet ad ki stringként. A tömörítési minőség a JPEG (alapértelmezett 85), WEBP (alapértelmezett 80) és AVIF (alapértelmezett 30) esetében 0..100, PNG (alapértelmezett 9) esetében 0..9 tartományban van. diff --git a/utils/hu/json.texy b/utils/hu/json.texy index dd74607580..fbad6d09fb 100644 --- a/utils/hu/json.texy +++ b/utils/hu/json.texy @@ -77,7 +77,7 @@ A `$forceArray` beállítása objektumok helyett tömbök visszaküldését kén ```php Json::decode('{"variable": true}'); // egy stdClass típusú objektumot ad vissza. -Json::decode('{"variable": true}', forceArray: true); // egy tömböt ad vissza. +Json::decode('{"variable": true}', forceArrays: true); // egy tömböt ad vissza. ``` `Nette\Utils\JsonException` kivételt dob hiba esetén. diff --git a/utils/hu/strings.texy b/utils/hu/strings.texy index 2cd9b3eae9..1853022d9c 100644 --- a/utils/hu/strings.texy +++ b/utils/hu/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Az UTF-8 karakterláncot az URL-ben használt formára módosítja, azaz eltávolítja a diakritikus jeleket, és az angol ábécé betűinek és a számoknak a kivételével minden karaktert kötőjellel helyettesít. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' Szükséges a `intl` PHP kiterjesztés. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Eltávolítja a bal és jobb oldali szóközöket (vagy a második argumentumként átadott karaktereket) egy UTF-8 kódolt karakterláncból. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Visszaadja az UTF-8 karakterlánc egy részét, amelyet a `$start` kezdőpozíció és a `$length` hossza határoz meg. Ha a `$start` negatív, akkor a visszaadott karakterlánc a karakterlánc végétől számított `$start`'th karaktertől kezdődik. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Használja a natív `str_contains()`:https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Összehasonlít két UTF-8 karakterláncot vagy azok részeit, a karakterek esetének figyelembevétele nélkül. Ha a `$length` értéke nulla, akkor egész karakterláncokat hasonlít össze, ha negatív, akkor a karakterláncok végétől számított megfelelő számú karaktert, ellenkező esetben az elejétől számított megfelelő számú karaktert hasonlít össze. diff --git a/utils/hu/validators.texy b/utils/hu/validators.texy index 29d5510af8..01fd4d162e 100644 --- a/utils/hu/validators.texy +++ b/utils/hu/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Ellenőrzi, hogy a `$array` tömb `$key` eleme a tömbben csővel elválasztott, [elvárt típusokból |#expected types] áll. Ha nem, akkor kivételt dob [api:Nette\Utils\AssertionException]. A kivételüzenetben szereplő `item '%' in array` karakterláncot a `$label` paraméterrel lehet helyettesíteni. diff --git a/utils/it/arrays.texy b/utils/it/arrays.texy index b9bf4654db..c4aa521e6c 100644 --- a/utils/it/arrays.texy +++ b/utils/it/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Restituisce `$array[$key]` item. Se non esiste, viene lanciato `Nette\InvalidArgumentException`, a meno che non venga impostato un valore predefinito come terzo parametro. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); I valori del secondo array vengono sempre aggiunti al primo. La scomparsa del valore `10` dal secondo array può sembrare un po' confusa. Va notato che questo valore, così come il valore `5` in the first array have the same numeric key `0`, quindi nel campo risultante c'è solo un elemento del primo array. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normalizza l'array in un array associativo. Sostituisce le chiavi numeriche con i loro valori, il nuovo valore sarà `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Restituisce e rimuove il valore di un elemento da un array. Se non esiste, lancia un'eccezione o restituisce `$default`, se fornito. diff --git a/utils/it/datetime.texy b/utils/it/datetime.texy index 02fd389dc4..a7825b1ce0 100644 --- a/utils/it/datetime.texy +++ b/utils/it/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Estende [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] con la possibilità di specificare un fuso orario come stringa. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // create with custom timezone diff --git a/utils/it/images.texy b/utils/it/images.texy index 9e5065b80c..323386b224 100644 --- a/utils/it/images.texy +++ b/utils/it/images.texy @@ -250,8 +250,8 @@ Panoramica dei metodi .[#toc-overview-of-methods] ================================================= -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Crea una nuova immagine a colori reali delle dimensioni indicate. Il colore predefinito è il nero. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Calcola le dimensioni del rettangolo che racchiude il testo in un font e in una dimensione specificati. Restituisce un array associativo contenente le chiavi `left`, `top`, `width`, `height`. Il margine sinistro può essere negativo se il testo inizia con una sporgenza a sinistra. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Restituisce un'immagine contenente l'immagine src trasformata affine, utilizzando un'area di ritaglio opzionale. ([altro |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Restituisce la concatenazione di due matrici di trasformazione affine, utile se si vogliono applicare più trasformazioni alla stessa immagine in una sola volta. ([altro |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Restituisce una matrice di trasformazione affine. ([altro |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Restituisce il numero di colori in una tavolozza di immagini ([more |https://www.php.net/manual/en/function.imagecolorstotal]). -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Ottiene o imposta il colore trasparente dell'immagine. ([altro |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Restituisce la larghezza dell'immagine. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Attiva o disattiva il bit di interlacciamento. Se il bit di interlacciamento è impostato e l'immagine viene utilizzata come immagine JPEG, l'immagine viene creata come JPEG progressivo. ([altro |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Scala un'immagine, vedi [maggiori informazioni |#Image Resize]. Le dimensioni possono essere passate come numeri interi in pixel o come stringhe in percentuale (ad esempio `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Permette di impostare e ottenere la risoluzione di un'immagine in DPI (punti per pollice). Se non viene fornito nessuno dei parametri opzionali, la risoluzione corrente viene restituita come array indicizzato. Se viene indicato solo `$resX`, la risoluzione orizzontale e verticale viene impostata su questo valore. Se vengono forniti entrambi i parametri opzionali, la risoluzione orizzontale e verticale viene impostata rispettivamente su questi valori. La risoluzione viene utilizzata come meta-informazione solo quando le immagini vengono lette e scritte in formati che supportano questo tipo di informazioni (attualmente PNG e JPEG). Non influisce su nessuna operazione di disegno. La risoluzione predefinita per le nuove immagini è 96 DPI. ([altro |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Ruota l'immagine utilizzando l'indirizzo `$angle` in gradi. Il centro di rotazio Richiede l'estensione *Bundled GD*, quindi non è sicuro che funzioni ovunque. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Salva un'immagine in un file. La qualità di compressione è compresa nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9). Se il tipo non è evidente dall'estensione del file, è possibile specificarlo utilizzando una delle costanti `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Ridimensiona un'immagine utilizzando l'algoritmo di interpolazione indicato. ([altro |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Invia un'immagine al browser. La qualità di compressione è compresa nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9). @@ -699,8 +699,8 @@ Rende l'immagine un po' più nitida. Richiede l'estensione *Bundled GD*, quindi non è sicuro che funzioni ovunque. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Emette un'immagine in stringa. La qualità di compressione è compresa nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9). diff --git a/utils/it/json.texy b/utils/it/json.texy index 6a4771124b..1948062ef6 100644 --- a/utils/it/json.texy +++ b/utils/it/json.texy @@ -77,7 +77,7 @@ L'impostazione `$forceArray` forza la restituzione di array invece che di oggett ```php Json::decode('{"variable": true}'); // restituisce un oggetto di tipo stdClass -Json::decode('{"variable": true}', forceArray: true); // restituisce un array +Json::decode('{"variable": true}', forceArrays: true); // restituisce un array ``` Lancia un'eccezione `Nette\Utils\JsonException` in caso di errore. diff --git a/utils/it/strings.texy b/utils/it/strings.texy index ee00908453..d82f83168c 100644 --- a/utils/it/strings.texy +++ b/utils/it/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Modifica la stringa UTF-8 nella forma usata nell'URL, cioè rimuove i diacritici e sostituisce tutti i caratteri tranne le lettere dell'alfabeto inglese e i numeri con un trattino. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' Richiede l'estensione PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Rimuove tutti gli spazi a sinistra e a destra (o i caratteri passati come secondo argomento) da una stringa codificata UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Restituisce una parte della stringa UTF-8 specificata dalla posizione iniziale `$start` e dalla lunghezza `$length`. Se `$start` è negativo, la stringa restituita inizierà a partire dal `$start`'esimo carattere dalla fine della stringa. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Utilizzare `str_contains()` nativo :https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Confronta due stringhe UTF-8 o le loro parti, senza tenere conto del caso dei caratteri. Se `$length` è nullo, vengono confrontate le stringhe intere, se è negativo, viene confrontato il numero corrispondente di caratteri dalla fine delle stringhe, altrimenti viene confrontato il numero appropriato di caratteri dall'inizio. diff --git a/utils/it/validators.texy b/utils/it/validators.texy index e76da8432a..97e3599fa4 100644 --- a/utils/it/validators.texy +++ b/utils/it/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Verifica che l'elemento `$key` nell'array `$array` sia dei [tipi previsti |#expected types] separati da pipe. In caso contrario, lancia l'eccezione [api:Nette\Utils\AssertionException]. La stringa `item '%' in array` nel messaggio di eccezione può essere sostituita dal parametro `$label`. diff --git a/utils/pl/arrays.texy b/utils/pl/arrays.texy index 4d6ac34ab4..bd3a0c1461 100644 --- a/utils/pl/arrays.texy +++ b/utils/pl/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Zwraca element `$array[$key]`. Jeśli nie istnieje, to albo rzuca wyjątek `Nette\InvalidArgumentException`, albo jeśli podano trzeci parametr `$default`, to zwraca to. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Wartości z drugiej tablicy są zawsze dodawane do końca pierwszej. Zniknięcie wartości `10` z drugiego pola może wydawać się nieco mylące. Zauważ, że ta wartość, podobnie jak wartość `5` v poli prvním mají přiřazený stejný numerický klíč `0`, dlatego w tablicy wynikowej znajduje się tylko element z pierwszego pola. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normalizuje tablicę do tablicy asocjacyjnej. Zastępuje klawisze numeryczne ich wartościami, nowa wartość będzie miała postać `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Zwraca i usuwa wartość elementu z tablicy. Jeśli nie istnieje, rzuca wyjątek lub zwraca wartość `$default`, jeśli jest obecny. diff --git a/utils/pl/datetime.texy b/utils/pl/datetime.texy index 0351423ed4..95ecc93e05 100644 --- a/utils/pl/datetime.texy +++ b/utils/pl/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Rozšiřuje [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] o možnost zadatku timezone jako řetězec. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); diff --git a/utils/pl/images.texy b/utils/pl/images.texy index 077a3e652e..cf50a6c159 100644 --- a/utils/pl/images.texy +++ b/utils/pl/images.texy @@ -250,8 +250,8 @@ Przegląd metod .[#toc-overview-of-methods] ========================================== -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Tworzy nowy obraz w kolorze rzeczywistym o podanych wymiarach. Domyślnym kolorem jest czarny. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Oblicza wymiary prostokąta otaczającego tekst o określonej czcionce i rozmiarze. Zwraca tablicę asocjacyjną zawierającą klucze `left`, `top`, `width`, `height`. Lewy margines może być ujemny, jeśli tekst zaczyna się od lewego nawisu. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Zwróć obraz zawierający affine-transformed src image używając opcjonalnego regionu przycinania ([więcej |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Zwraca konkatenację dwóch macierzy przekształceń afinicznych, co jest przydatne, gdy do tego samego obrazu należy zastosować wiele przekształceń jednocześnie. ([więcej |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Zwraca macierz przekształcenia macierzy ([więcej |https://www.php.net/manual/en/function.imageaffinematrixget]). @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Zwraca liczbę kolorów w palecie obrazów. ([więcej |https://www.php.net/manual/en/function.imagecolorstotal]) -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Uzyskuje lub ustawia kolor przezroczysty w obrazie. ([więcej |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Zwraca szerokość obrazu. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Włącza lub wyłącza tryb przeplotu. Jeśli ustawiony jest tryb z przeplotem, a obraz jest zapisywany jako JPEG, zostanie on zapisany jako JPEG progresywny. ([więcej |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Zmienia rozmiar obrazu, [więcej informacji |#Image-Resize]. Wymiary mogą być określone jako liczby całkowite w pikselach lub ciągi znaków w procentach (na przykład `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Ustawia lub zwraca rozdzielczość obrazu w DPI (punkty na cal). Jeśli żaden z opcjonalnych parametrów nie zostanie określony, bieżąca rozdzielczość jest zwracana jako indeksowane pole. Jeśli określona jest tylko `$resX`, rozdzielczość pozioma i pionowa są ustawione na tę wartość. Jeśli oba opcjonalne parametry są określone, rozdzielczości pozioma i pionowa są ustawione na te wartości. Rozdzielczość jest używana jako meta informacja tylko wtedy, gdy obrazy są odczytywane i zapisywane w formatach obsługujących ten rodzaj informacji (obecnie PNG i JPEG). Nie ma to wpływu na żadne operacje rysunkowe. Domyślna rozdzielczość nowych zdjęć to 96 DPI. ([więcej |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Obraca obraz przy użyciu określonej `$angle` w stopniach. Środek obrotu jest Wymaga obecności rozszerzenia *Bundled GD*, więc może nie działać wszędzie. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Zapisuje obraz do pliku. Jakość kompresji mieści się w zakresie 0..100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0..9 dla PNG (domyślnie 9). Jeśli typ nie jest oczywisty z rozszerzenia pliku, można go określić za pomocą jednej ze stałych `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Skalowanie obrazu z wykorzystaniem podanego algorytmu interpolacji. ([więcej |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Drukuje obraz do przeglądarki. Jakość kompresji mieści się w zakresie 0..100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0..9 dla PNG (domyślnie 9). @@ -699,8 +699,8 @@ Wyostrza obraz. Wymaga obecności rozszerzenia *Bundled GD*, więc może nie działać wszędzie. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Zapisuje obraz w postaci ciągu znaków. Jakość kompresji mieści się w zakresie 0..100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0..9 dla PNG (domyślnie 9). diff --git a/utils/pl/json.texy b/utils/pl/json.texy index 379ea35dbb..05fc0a0ae8 100644 --- a/utils/pl/json.texy +++ b/utils/pl/json.texy @@ -77,7 +77,7 @@ Ustawienie `$forceArray` wymusza zwracanie tablic zamiast obiektów: ```php Json::decode('{"variable": true}'); // zwraca obiekt typu stdClass -Json::decode('{"variable": true}', forceArray: true); // zwraca tablicę +Json::decode('{"variable": true}', forceArrays: true); // zwraca tablicę ``` Rzuca wyjątek w przypadku wystąpienia błędu `Nette\Utils\JsonException`. diff --git a/utils/pl/strings.texy b/utils/pl/strings.texy index 654b8339c2..db0646575c 100644 --- a/utils/pl/strings.texy +++ b/utils/pl/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Modyfikuje ciąg UTF-8 do formatu używanego w adresie URL, tj. usuwa znaki diakrytyczne i zastępuje wszystkie znaki z wyjątkiem liter alfabetu angielskiego i cyfr myślnikiem. @@ -129,8 +129,8 @@ Strings::webalize('Dobrý den', null, false); // 'Dobry-den' Wymaga rozszerzenia PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Wycina spacje (lub inne znaki określone przez drugi parametr) z początku i końca łańcucha UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Zwraca część łańcucha UTF-8 `$s` określoną przez pozycję początkową `$start` i długość `$length`. Jeśli `$start` jest ujemny, zwrócony łańcuch rozpocznie się od znaku -`$start` znak od końca. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Korzystaj z rodzimego `str_contains()`:https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Porównanie bez rozróżniania wielkości liter dwóch łańcuchów UTF-8 lub ich części. Jeśli `$length` zawiera null, to porównywane są całe ciągi, jeśli ujemnie, to porównywana jest odpowiednia liczba znaków z końca ciągów, w przeciwnym razie porównywana jest odpowiednia liczba znaków z początku. diff --git a/utils/pl/validators.texy b/utils/pl/validators.texy index 16941729a4..9bdb19e91c 100644 --- a/utils/pl/validators.texy +++ b/utils/pl/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Sprawdza, czy element pod kluczem `$key` w polu `$array` jest jednym z [oczekiwanych typów |#Expected-Types] oddzielonych odwrotnym ukośnikiem. Jeśli nie, rzuca wyjątek [api:Nette\Utils\AssertionException]. Ciąg `item '%' in array` w tekście wyjątku można zastąpić innym parametrem `$label`. diff --git a/utils/pt/arrays.texy b/utils/pt/arrays.texy index c345602578..a523d132d5 100644 --- a/utils/pt/arrays.texy +++ b/utils/pt/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Devoluções `$array[$key]` item. Se ele não existir, `Nette\InvalidArgumentException` é lançado, a menos que um valor padrão seja definido como terceiro argumento. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Os valores da segunda matriz são sempre anexados à primeira. O desaparecimento do valor `10` da segunda matriz pode parecer um pouco confuso. Deve-se notar que tanto este valor quanto o valor `5` in the first array have the same numeric key `0`, portanto, no campo resultante há apenas um elemento do primeiro array. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normaliza o array para o array associativo. Substituindo as chaves numéricas por seus valores, o novo valor será `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Devolve e remove o valor de um item de uma matriz. Se ele não existir, ele lança uma exceção, ou retorna `$default`, se fornecido. diff --git a/utils/pt/datetime.texy b/utils/pt/datetime.texy index 538e888c19..c02f412195 100644 --- a/utils/pt/datetime.texy +++ b/utils/pt/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Prolonga o [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] com a capacidade de especificar um fuso horário como um fio. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // create with custom timezone diff --git a/utils/pt/images.texy b/utils/pt/images.texy index a15b4ccf43..35e3092eed 100644 --- a/utils/pt/images.texy +++ b/utils/pt/images.texy @@ -250,8 +250,8 @@ Visão geral dos métodos .[#toc-overview-of-methods] =================================================== -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Cria uma nova imagem colorida verdadeira das dimensões dadas. A cor padrão é o preto. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Calcula as dimensões do retângulo que envolve o texto em uma fonte e tamanho especificados. Retorna uma matriz associativa contendo as chaves `left`, `top`, `width`, `height`. A margem esquerda pode ser negativa se o texto começar com uma saliência à esquerda. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Retorna uma imagem contendo a imagem src transformada afim, usando uma área de recorte opcional. ([mais |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Retorna a concatenação de duas matrizes de transformação afins, que é útil se múltiplas transformações devem ser aplicadas à mesma imagem de uma só vez. ([mais |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Devolve uma matriz de transformação afim. ([mais |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Retorna o número de cores em uma paleta de imagens ([mais |https://www.php.net/manual/en/function.imagecolorstotal]). -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Obtém ou define a cor transparente na imagem. ([mais |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Retorna a largura da imagem. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Liga ou desliga o fio entrelaçado. Se a parte entrelaçada for definida e a imagem for usada como uma imagem JPEG, a imagem é criada como um JPEG progressivo. ([mais |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Escala uma imagem, veja [mais informações |#Image Resize]. As dimensões podem ser passadas como números inteiros em pixels ou cadeias em porcentagem (ou seja, `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Permite definir e obter a resolução de uma imagem em DPI (dots per inch). Se nenhum dos parâmetros opcionais for dado, a resolução atual é devolvida como matriz indexada. Se apenas `$resX` for dado, a resolução horizontal e vertical é definida para este valor. Se ambos os parâmetros opcionais são dados, a resolução horizontal e vertical são definidas para estes valores, respectivamente. A resolução só é usada como meta informação quando as imagens são lidas e escritas em formatos que suportam este tipo de informação (curently PNG e JPEG). Não afeta nenhuma operação de desenho. A resolução padrão para novas imagens é 96 DPI. ([mais |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Gira a imagem usando o dado `$angle` em graus. O centro de rotação é o centro Exige *extensão de GD fundida*, por isso não é certo que funcione em todos os lugares. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Salva uma imagem em um arquivo. A qualidade da compactação está no intervalo de 0 a 100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0 a 9 para PNG (padrão 9). Se o tipo não for óbvio a partir da extensão do arquivo, você poderá especificá-lo usando uma das constantes do site `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Escala uma imagem usando o algoritmo de interpolação dado. ([mais |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Produz uma imagem para o navegador. A qualidade da compactação está no intervalo de 0 a 100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0 a 9 para PNG (padrão 9). @@ -699,8 +699,8 @@ Aguça um pouco a imagem. Requer uma extensão GD *Bundled GD, por isso não é certo que funcione em todos os lugares. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Produz uma imagem a fio. A qualidade da compactação está no intervalo de 0 a 100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0 a 9 para PNG (padrão 9). diff --git a/utils/pt/json.texy b/utils/pt/json.texy index 58bbc765a3..2b4615d182 100644 --- a/utils/pt/json.texy +++ b/utils/pt/json.texy @@ -77,7 +77,7 @@ A configuração `$forceArray` força o retorno de matrizes em vez de objetos: ```php Json::decode('{"variable": true}'); // retorna um objeto do tipo stdClass -Json::decode('{"variable": true}', forceArray: true); // retorna um array +Json::decode('{"variable": true}', forceArrays: true); // retorna um array ``` Ele lança uma exceção de erro em `Nette\Utils\JsonException`. diff --git a/utils/pt/strings.texy b/utils/pt/strings.texy index 9dc987f2a9..151391aa12 100644 --- a/utils/pt/strings.texy +++ b/utils/pt/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Modifica a cadeia UTF-8 para a forma usada na URL, ou seja, remove os diacríticos e substitui todos os caracteres exceto letras do alfabeto inglês e números por um hífen. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' Requer extensão PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Remove todos os espaços do lado esquerdo e direito (ou os caracteres passados como segundo argumento) de uma cadeia codificada UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Retorna uma parte da cadeia UTF-8 especificada pela posição inicial `$start` e comprimento `$length`. Se `$start` for negativo, a cadeia de caracteres retornada começará no `$start`'th character from the end of string'. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Use nativo `str_contains()`:https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Compara duas cordas UTF-8 ou suas partes, sem levar em conta o caso de caracteres. Se `$length` for nulo, cordas inteiras são comparadas, se for negativo, o número correspondente de caracteres do final das cordas é comparado, caso contrário, o número apropriado de caracteres do início é comparado. diff --git a/utils/pt/validators.texy b/utils/pt/validators.texy index c5f3592942..da9893c0d6 100644 --- a/utils/pt/validators.texy +++ b/utils/pt/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Verifica que o elemento `$key` na matriz `$array` é de [tipos esperados |#expected types] separados por tubo. Caso contrário, ele lança a exceção [api:Nette\Utils\AssertionException]. A string `item '%' in array` na mensagem de exceção pode ser substituída pelo parâmetro `$label`. diff --git a/utils/ro/arrays.texy b/utils/ro/arrays.texy index 91406036b6..be5539d24e 100644 --- a/utils/ro/arrays.texy +++ b/utils/ro/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Returnează `$array[$key]` item. Dacă nu există, se aruncă `Nette\InvalidArgumentException`, cu excepția cazului în care se stabilește o valoare implicită ca al treilea argument. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Valorile din al doilea tablou sunt întotdeauna adăugate la primul. Dispariția valorii `10` din cel de-al doilea tablou poate părea puțin confuză. Trebuie remarcat faptul că această valoare, precum și valoarea `5` in the first array have the same numeric key `0`, astfel încât în câmpul rezultat există doar un element din prima matrice. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normalizează matricea în matrice asociativă. Înlocuiește cheile numerice cu valorile lor, noua valoare va fi `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Returnează și elimină valoarea unui element dintr-un tablou. Dacă acesta nu există, se aruncă o excepție sau se returnează `$default`, dacă este furnizat. diff --git a/utils/ro/datetime.texy b/utils/ro/datetime.texy index 482a4b9c7a..881f4aee28 100644 --- a/utils/ro/datetime.texy +++ b/utils/ro/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Extinde [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] cu posibilitatea de a specifica un fus orar sub forma unui șir de caractere. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // creați cu un fus orar personalizat diff --git a/utils/ro/images.texy b/utils/ro/images.texy index ba0a16083d..ff266e8989 100644 --- a/utils/ro/images.texy +++ b/utils/ro/images.texy @@ -250,8 +250,8 @@ Prezentare generală a metodelor .[#toc-overview-of-methods] =========================================================== -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Creează o nouă imagine în culori reale cu dimensiunile date. Culoarea implicită este negru. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Calculează dimensiunile dreptunghiului care înconjoară textul cu un font și o dimensiune specificate. Se returnează un tablou asociativ care conține cheile `left`, `top`, `width`, `height`. Marja stângă poate fi negativă dacă textul începe cu o depășire la stânga. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Returnează o imagine care conține imaginea sursă transformată afine, folosind o zonă de tăiere opțională. ([mai mult |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Returnează concatenarea a două matrici de transformare afină, ceea ce este util în cazul în care mai multe transformări trebuie aplicate aceleiași imagini dintr-o singură dată. ([mai mult |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Returnează o matrice de transformare afină. ([mai mult |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Returnează numărul de culori dintr-o paletă de imagini ([mai multe |https://www.php.net/manual/en/function.imagecolorstotal]). -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Obține sau stabilește culoarea transparentă a imaginii. ([mai mult |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Returnează lățimea imaginii. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Activează sau dezactivează bitul de întrepătrundere. Dacă bitul de întrepătrundere este setat și imaginea este utilizată ca imagine JPEG, imaginea este creată ca o imagine JPEG progresivă. ([mai mult |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Scală o imagine, vezi [mai multe informații |#Image Resize]. Dimensiunile pot fi transmise ca numere întregi în pixeli sau ca șiruri de caractere în procente (de exemplu, `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Permite setarea și obținerea rezoluției unei imagini în DPI (dots per inch). Dacă nu se furnizează niciunul dintre parametrii opționali, rezoluția curentă este returnată sub formă de matrice indexată. Dacă se indică doar `$resX`, rezoluția orizontală și verticală este setată la această valoare. În cazul în care sunt furnizați ambii parametri opționali, rezoluția orizontală și verticală sunt stabilite la aceste valori. Rezoluția este utilizată ca meta-informație doar atunci când imaginile sunt citite și scrise în formate care acceptă acest tip de informații (în prezent PNG și JPEG). Aceasta nu afectează nicio operațiune de desenare. Rezoluția implicită pentru imaginile noi este de 96 DPI. ([mai mult |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Rotește imaginea folosind `$angle` în grade. Centrul de rotație este centrul Necesită *Extensie GD la pachet*, deci nu este sigur că va funcționa peste tot. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Salvează o imagine într-un fișier. Calitatea compresiei este cuprinsă în intervalul 0...100 pentru JPEG (implicit 85), WEBP (implicit 80) și AVIF (implicit 30) și 0...9 pentru PNG (implicit 9). În cazul în care tipul nu este evident din extensia fișierului, îl puteți specifica folosind una dintre constantele `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Redimensionează o imagine folosind algoritmul de interpolare dat. ([mai mult |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Trimite o imagine în browser. Calitatea compresiei este cuprinsă în intervalul 0...100 pentru JPEG (implicit 85), WEBP (implicit 80) și AVIF (implicit 30) și 0...9 pentru PNG (implicit 9). @@ -699,8 +699,8 @@ Acutizează puțin imaginea. Necesită *Extensie GD la pachet*, deci nu este sigur că va funcționa peste tot. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Produce o imagine în șir de caractere. Calitatea compresiei este cuprinsă în intervalul 0...100 pentru JPEG (implicit 85), WEBP (implicit 80) și AVIF (implicit 30) și 0...9 pentru PNG (implicit 9). diff --git a/utils/ro/json.texy b/utils/ro/json.texy index c9e39ef738..29689b2f95 100644 --- a/utils/ro/json.texy +++ b/utils/ro/json.texy @@ -77,7 +77,7 @@ Setarea `$forceArray` forțează returnarea de matrici în loc de obiecte: ```php Json::decode('{"variable": true}'); // returnează un obiect de tip stdClass -Json::decode('{"variable": true}', forceArray: true); // returnează o matrice +Json::decode('{"variable": true}', forceArrays: true); // returnează o matrice ``` În caz de eroare, se aruncă o excepție `Nette\Utils\JsonException`. diff --git a/utils/ro/strings.texy b/utils/ro/strings.texy index db8c06eb1f..4441c30d96 100644 --- a/utils/ro/strings.texy +++ b/utils/ro/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Modifică șirul UTF-8 în forma utilizată în URL, adică elimină diacriticele și înlocuiește toate caracterele, cu excepția literelor din alfabetul englez și a numerelor, cu o cratimă. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' Necesită extensia PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Îndepărtează toate spațiile din stânga și din dreapta (sau caracterele trecute ca al doilea argument) dintr-un șir de caractere codificat UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Returnează o parte din șirul UTF-8 specificat prin poziția de pornire `$start` și lungimea `$length`. Dacă `$start` este negativ, șirul returnat va începe la al `$start`-lea caracter de la sfârșitul șirului. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Utilizează codul nativ `str_contains()`:https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Compară două șiruri UTF-8 sau părți ale acestora, fără a lua în considerare cazul caracterelor. Dacă `$length` este nul, se compară șiruri întregi, dacă este negativ, se compară numărul corespunzător de caractere de la sfârșitul șirurilor, altfel se compară numărul corespunzător de caractere de la început. diff --git a/utils/ro/validators.texy b/utils/ro/validators.texy index 8c2e721b57..8fed8b8714 100644 --- a/utils/ro/validators.texy +++ b/utils/ro/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Verifică dacă elementul `$key` din array-ul `$array` este format din [tipurile așteptate |#expected types], separate prin pipe. În caz contrar, se aruncă excepția [api:Nette\Utils\AssertionException]. Șirul `item '%' in array` din mesajul de excepție poate fi înlocuit cu parametrul `$label`. diff --git a/utils/ru/arrays.texy b/utils/ru/arrays.texy index f2cf996e3b..06de535fd9 100644 --- a/utils/ru/arrays.texy +++ b/utils/ru/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Возвращает элемент `$array[$key]`. Если он не существует, то либо выдается исключение `Nette\InvalidArgumentException`, либо, если задан третий параметр `$default`, то возвращается этот параметр. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Значения из второго массива всегда добавляются к концу первого. Исчезновение значения `10` из второго поля может показаться немного непонятным. Обратите внимание, что это значение, как и значение `5` v poli prvním mají přiřazený stejný numerický klíč `0`, поэтому в результирующий массив попадает только элемент из первого поля. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Нормализует массив к ассоциативному массиву. Заменяет цифровые клавиши их значениями, новое значение будет `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Возвращает и удаляет значение элемента из массива. Если он не существует, выдает исключение или возвращает значение `$default`, если оно существует. diff --git a/utils/ru/datetime.texy b/utils/ru/datetime.texy index d6e82906ca..b602c58b81 100644 --- a/utils/ru/datetime.texy +++ b/utils/ru/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Расширяет [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] возможностью ввода часового пояса в виде строки. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); diff --git a/utils/ru/images.texy b/utils/ru/images.texy index 7a9fe77e4f..ecc34ceca4 100644 --- a/utils/ru/images.texy +++ b/utils/ru/images.texy @@ -250,8 +250,8 @@ $blank->place($image, '80%', '80%', 25); // прозрачность соста ========================================= -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Создает новое истинно цветное изображение заданных размеров. По умолчанию используется черный цвет. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Вычисляет размеры прямоугольника, в который заключен текст заданного шрифта и размера. Возвращается ассоциативный массив, содержащий ключи `left`, `top`, `width`, `height`. Левое поле может быть отрицательным, если текст начинается с левого свеса. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Возвращает изображение, содержащее аффинно-трансформированное изображение src с использованием необязательной области обрезания. ([подробнее |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Возвращает конкатенацию двух матриц аффинного преобразования, что полезно, если к одному изображению необходимо применить сразу несколько преобразований. ([подробнее |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Возвращает матрицу преобразования матрицы. ([подробнее |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Возвращает количество цветов в палитре изображения. ([подробнее |https://www.php.net/manual/en/function.imagecolorstotal]) -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Получает или устанавливает прозрачный цвет изображения. ([подробнее |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Возвращает ширину изображения. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Включение или выключение режима чересстрочной развертки. Если установлен чересстрочный режим и изображение сохраняется в формате JPEG, оно будет сохранено как прогрессивный JPEG. ([подробнее |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Изменение размеров изображения, [дополнительная информация |#Image-Resize]. Размеры могут быть указаны как целые числа в пикселях или строки в процентах (например, `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Устанавливает или возвращает разрешение изображения в DPI (точках на дюйм). Если ни один из дополнительных параметров не указан, текущее разрешение возвращается в виде индексированного поля. Если указано только `$resX`, то горизонтальное и вертикальное разрешение устанавливается на это значение. Если указаны оба дополнительных параметра, горизонтальное и вертикальное разрешения устанавливаются на эти значения. Разрешение используется в качестве метаинформации только при чтении и записи изображений в форматы, поддерживающие такую информацию (в настоящее время это PNG и JPEG). Это не влияет ни на какие операции рисования. Разрешение новых изображений по умолчанию составляет 96 DPI. ([подробнее |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ rotate(float $angle, int $backgroundColor): Image .[method] Требует наличия *Bundled GD extension*, поэтому может работать не везде. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Сохраняет изображение в файл. Качество сжатия находится в диапазоне 0...100 для JPEG (по умолчанию 85), WEBP (по умолчанию 80) и AVIF (по умолчанию 30) и 0...9 для PNG (по умолчанию 9). Если тип не очевиден из расширения файла, вы можете указать его с помощью одной из констант `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Масштабирование изображения с использованием заданного алгоритма интерполяции. ([подробнее |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Выводит изображение в браузер. Качество сжатия находится в диапазоне 0...100 для JPEG (по умолчанию 85), WEBP (по умолчанию 80) и AVIF (по умолчанию 30) и 0...9 для PNG (по умолчанию 9). @@ -699,8 +699,8 @@ sharpen(): Image .[method] Требует наличия *Bundled GD extension*, поэтому может работать не везде. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Сохраняет изображение в строке. Качество сжатия находится в диапазоне 0...100 для JPEG (по умолчанию 85), WEBP (по умолчанию 80) и AVIF (по умолчанию 30) и 0...9 для PNG (по умолчанию 9). diff --git a/utils/ru/json.texy b/utils/ru/json.texy index be4e3967f5..365c142bbd 100644 --- a/utils/ru/json.texy +++ b/utils/ru/json.texy @@ -77,7 +77,7 @@ decode(string $json, bool $forceArray=false): mixed .[method] ```php Json::decode('{"variable": true}'); // возвращает объект типа stdClass -Json::decode('{"variable": true}', forceArray: true); // возвращает массив +Json::decode('{"variable": true}', forceArrays: true); // возвращает массив ``` При возникновении ошибки выбрасывается исключение `Nette\Utils\JsonException`. diff --git a/utils/ru/strings.texy b/utils/ru/strings.texy index 22b2a8ceef..4221264249 100644 --- a/utils/ru/strings.texy +++ b/utils/ru/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Изменяет строку UTF-8 до формата, используемого в URL, т.е. удаляет диакритические знаки и заменяет все символы, кроме букв английского алфавита и цифр, на дефис. @@ -129,8 +129,8 @@ Strings::webalize('Dobrý den', null, false); // 'Dobry-den' Требуется расширение PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Обрезает пробелы (или другие символы, указанные вторым параметром) из начала и конца строки UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Возвращает часть строки UTF-8 `$s`, заданную начальной позицией `$start` и длиной `$length`. Если `$start` отрицательный, то возвращаемая строка будет начинаться с символа -`$start` символа с конца. @@ -266,8 +266,8 @@ Strings::length('červená'); // 7 \-- -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Сравнение двух строк UTF-8 или частей строк без учета регистра. Если `$length` содержит null, то сравниваются целые строки, если отрицательно, то сравнивается соответствующее количество символов с конца строк, иначе сравнивается соответствующее количество символов с начала. diff --git a/utils/ru/validators.texy b/utils/ru/validators.texy index 09e97bebeb..24e469e120 100644 --- a/utils/ru/validators.texy +++ b/utils/ru/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Проверяет, что элемент под ключом `$key` в поле `$array` является одним из [ожидаемых типов |#Expected-Types], разделенных звездочкой. Если нет, то выбрасывается исключение [api:Nette\Utils\AssertionException]. Строка `item '%' in array` в тексте исключения может быть заменена другим параметром `$label`. diff --git a/utils/sl/arrays.texy b/utils/sl/arrays.texy index 0ee53173e4..e31e791ce1 100644 --- a/utils/sl/arrays.texy +++ b/utils/sl/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Vrne `$array[$key]` item. Če ne obstaja, se vrže `Nette\InvalidArgumentException`, razen če je kot tretji argument določena privzeta vrednost. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Vrednosti iz drugega polja se vedno dodajo prvemu. Izginotje vrednosti `10` iz drugega polja se lahko zdi nekoliko zmedeno. Opozoriti je treba, da je ta vrednost kot tudi vrednost `5` in the first array have the same numeric key `0`, zato je v dobljenem polju samo element iz prvega polja. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Normalizira polje v asociativno polje. Numerične ključe zamenja z njihovimi vrednostmi, nova vrednost bo `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Vrne in odstrani vrednost elementa iz polja. Če ne obstaja, vrže izjemo ali vrne `$default`, če je naveden. diff --git a/utils/sl/datetime.texy b/utils/sl/datetime.texy index f16a86ba84..e51d052630 100644 --- a/utils/sl/datetime.texy +++ b/utils/sl/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Razširi [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] z možnostjo določitve časovnega pasu kot niza. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // ustvarite s časovnim območjem po meri diff --git a/utils/sl/images.texy b/utils/sl/images.texy index 90f1f83819..57fbdc9d7a 100644 --- a/utils/sl/images.texy +++ b/utils/sl/images.texy @@ -250,8 +250,8 @@ Pregled metod .[#toc-overview-of-methods] ========================================= -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Ustvari novo pravo barvno sliko danih dimenzij. Privzeta barva je črna. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Izračuna dimenzije pravokotnika, ki obkroža besedilo v določeni pisavi in velikosti. Vrne asociativno polje, ki vsebuje ključe `left`, `top`, `width`, `height`. Levi rob je lahko negativen, če se besedilo začne z levim previsom. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Vrne sliko, ki vsebuje afino transformirano sliko src z uporabo neobveznega območja obrezovanja. ([več |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Vrne združitev dveh matrik afine transformacije, kar je uporabno, če je treba na isto sliko uporabiti več transformacij naenkrat. ([več |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Vrne matriko afine transformacije. ([več |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Vrne število barv v slikovni paleti ([več |https://www.php.net/manual/en/function.imagecolorstotal]). -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Pridobi ali nastavi prozorno barvo na sliki. ([več |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Vrne širino slike. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Vklopi ali izklopi bit prepletanja. Če je nastavljen bit prepletanja in se slika uporablja kot slika JPEG, se slika ustvari kot progresivni JPEG. ([več |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Skaliranje slike, glejte [več informacij |#Image Resize]. Dimenzije lahko posredujete kot cela števila v pikslih ali kot nize v odstotkih (npr. `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Omogoča nastavitev in pridobitev ločljivosti slike v DPI (točkah na palec). Če ni podan nobeden od neobveznih parametrov, se trenutna ločljivost vrne kot indeksirano polje. Če je podan samo naslov `$resX`, se vodoravna in navpična ločljivost nastavita na to vrednost. Če sta podana oba neobvezna parametra, se vodoravna in navpična ločljivost nastavita na ti vrednosti. Ločljivost se kot meta informacija uporablja le pri branju slik iz formatov, ki podpirajo tovrstne informacije (trenutno sta to formata PNG in JPEG), in pri zapisovanju v te formate. To ne vpliva na nobeno risanje. Privzeta ločljivost novih slik je 96 DPI. ([več |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Obrne sliko z uporabo danega `$angle` v stopinjah. Središče vrtenja je središ Zahteva razširitev *Bundled GD extension*, zato ni gotovo, da bo delovala povsod. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Sliko shrani v datoteko. Kakovost stiskanja je v območju 0..100 za JPEG (privzeto 85), WEBP (privzeto 80) in AVIF (privzeto 30) ter 0..9 za PNG (privzeto 9). Če vrsta ni razvidna iz končnice datoteke, jo lahko določite z eno od konstant `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Skalira sliko z uporabo danega algoritma interpolacije. ([več |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Izpiše sliko v brskalnik. Kakovost stiskanja je v območju 0..100 za JPEG (privzeto 85), WEBP (privzeto 80) in AVIF (privzeto 30) ter 0..9 za PNG (privzeto 9). @@ -699,8 +699,8 @@ Nekoliko izostri sliko. Zahteva razširitev *Bundled GD extension*, zato ni gotovo, da bo delovala povsod. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Izpiše sliko v niz. Kakovost stiskanja je v območju 0..100 za JPEG (privzeto 85), WEBP (privzeto 80) in AVIF (privzeto 30) ter 0..9 za PNG (privzeto 9). diff --git a/utils/sl/json.texy b/utils/sl/json.texy index 0ef442e444..8de57d8e49 100644 --- a/utils/sl/json.texy +++ b/utils/sl/json.texy @@ -77,7 +77,7 @@ Z nastavitvijo `$forceArray` se namesto objektov vrnejo polja: ```php Json::decode('{"variable": true}'); // vrne predmet tipa stdClass -Json::decode('{"variable": true}', forceArray: true); // vrne polje +Json::decode('{"variable": true}', forceArrays: true); // vrne polje ``` Ob napaki vrže izjemo `Nette\Utils\JsonException`. diff --git a/utils/sl/strings.texy b/utils/sl/strings.texy index 99ead40558..48071c53af 100644 --- a/utils/sl/strings.texy +++ b/utils/sl/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Spremeni niz UTF-8 v obliko, ki se uporablja v naslovu URL, tj. odstrani diakritiko in vse znake razen črk angleške abecede in številk nadomesti s pomišljajem. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' Zahteva razširitev PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Odstrani vse leve in desne presledke (ali znake, posredovane kot drugi argument) iz niza, kodiranega v UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Vrne del niza UTF-8, ki ga določata začetni položaj `$start` in dolžina `$length`. Če je `$start` negativen, se vrnjen niz začne pri `$start`'-tem znaku od konca niza. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Uporabite izvirni `str_contains()`:https://www.php.net/manual/en/function.str-contains.php. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Primerja dva niza UTF-8 ali njune dele, pri čemer ne upošteva velikosti znakov. Če je `$length` nič, se primerjajo celi nizi, če je negativen, se primerja ustrezno število znakov od konca niza, sicer se primerja ustrezno število znakov od začetka. diff --git a/utils/sl/validators.texy b/utils/sl/validators.texy index 81f2b88709..dbcf38eb54 100644 --- a/utils/sl/validators.texy +++ b/utils/sl/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Preveri, ali je element `$key` v polju `$array` iz [pričakovanih tipov |#expected types], ločenih s cevjo. V nasprotnem primeru vrže izjemo [api:Nette\Utils\AssertionException]. Niz `item '%' in array` v sporočilu o izjemi je mogoče nadomestiti s parametrom `$label`. diff --git a/utils/tr/arrays.texy b/utils/tr/arrays.texy index 8644e1ad69..6371a6ccde 100644 --- a/utils/tr/arrays.texy +++ b/utils/tr/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Geri dönüşler `$array[$key]` öğesi. Eğer mevcut değilse, üçüncü bağımsız değişken olarak varsayılan bir değer ayarlanmadığı sürece `Nette\InvalidArgumentException` adresi atılır. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); İkinci dizideki değerler her zaman birinciye eklenir. İkinci diziden `10` değerinin kaybolması biraz kafa karıştırıcı görünebilir. Bu değerin yanı sıra `5` in the first array have the same numeric key `0` değerinin de kaybolduğuna dikkat edilmelidir, bu nedenle ortaya çıkan alanda yalnızca ilk diziden bir öğe vardır. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Diziyi ilişkisel diziye normalleştirir. Sayısal anahtarları değerleriyle değiştirin, yeni değer `$filling` olacaktır. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Bir diziden bir öğenin değerini döndürür ve kaldırır. Mevcut değilse, bir istisna atar veya sağlanmışsa `$default` döndürür. diff --git a/utils/tr/datetime.texy b/utils/tr/datetime.texy index d764a9531f..aadf70a761 100644 --- a/utils/tr/datetime.texy +++ b/utils/tr/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] işlevini, bir zaman dilimini dize olarak belirtme özelliğiyle genişletir. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); // create with custom timezone diff --git a/utils/tr/images.texy b/utils/tr/images.texy index 285a6bddbf..9d4df34215 100644 --- a/utils/tr/images.texy +++ b/utils/tr/images.texy @@ -250,8 +250,8 @@ Yöntemlere Genel Bakış .[#toc-overview-of-methods] ================================================== -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Verilen boyutlarda yeni bir gerçek renkli görüntü oluşturur. Varsayılan renk siyahtır. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Metni belirtilen yazı tipi ve boyutta çevreleyen dikdörtgenin boyutlarını hesaplar. `left` , `top`, `width`, `height` anahtarlarını içeren bir ilişkisel dizi döndürür. Metin sola doğru bir çıkıntıyla başlıyorsa, sol kenar boşluğu negatif olabilir. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- İsteğe bağlı bir kırpma alanı kullanarak, afin dönüşümü yapılmış src görüntüsünü içeren bir görüntü döndürür. ([daha fazla |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] İki afin dönüşüm matrisinin birleştirilmesini döndürür; bu, aynı görüntüye tek seferde birden fazla dönüşüm uygulanması gerektiğinde kullanışlıdır. ([daha fazla |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Bir afin dönüşüm matrisi döndürür. ([daha fazla |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Bir görüntü paletindeki renk sayısını döndürür ([daha fazla |https://www.php.net/manual/en/function.imagecolorstotal]). -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Görüntüdeki saydam rengi alır veya ayarlar. ([daha fazla |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Görüntünün genişliğini döndürür. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Geçiş bitini açar veya kapatır. Geçiş biti ayarlanmışsa ve görüntü bir JPEG görüntüsü olarak kullanılıyorsa, görüntü aşamalı bir JPEG olarak oluşturulur. ([daha fazla |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Bir görüntüyü ölçeklendirir, [daha fazla bilgi |#Image Resize] için bkz. Boyutlar piksel cinsinden tamsayılar veya yüzde cinsinden dizeler olarak aktarılabilir (örn. `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- DPI (inç başına nokta) cinsinden bir görüntünün çözünürlüğünü ayarlamaya ve almaya izin verir. İsteğe bağlı parametrelerden hiçbiri verilmezse, geçerli çözünürlük indeksli dizi olarak döndürülür. Yalnızca `$resX` adresi verilirse, yatay ve dikey çözünürlük bu değere ayarlanır. Her iki isteğe bağlı parametre de verilirse, yatay ve dikey çözünürlük sırasıyla bu değerlere ayarlanır. Çözünürlük yalnızca görüntüler bu tür bilgileri destekleyen formatlardan (şu anda PNG ve JPEG) okunduğunda ve bu formatlara yazıldığında meta bilgi olarak kullanılır. Herhangi bir çizim işlemini etkilemez. Yeni görüntüler için varsayılan çözünürlük 96 DPI'dır. ([daha fazla |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ Verilen `$angle` adresini derece cinsinden kullanarak görüntüyü döndürür. Paketlenmiş GD uzantısı* gerektirir, bu nedenle her yerde çalışacağından emin değildir. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Bir görüntüyü bir dosyaya kaydeder. Sıkıştırma kalitesi JPEG (varsayılan 85), WEBP (varsayılan 80) ve AVIF (varsayılan 30) için 0..100 ve PNG (varsayılan 9) için 0..9 aralığındadır. Tür dosya uzantısından anlaşılmıyorsa, `ImageType` sabitlerinden birini kullanarak belirtebilirsiniz. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Verilen enterpolasyon algoritmasını kullanarak bir görüntüyü ölçeklendirir. ([daha fazla |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Tarayıcıya bir görüntü çıktısı verir. Sıkıştırma kalitesi JPEG (varsayılan 85), WEBP (varsayılan 80) ve AVIF (varsayılan 30) için 0..100 ve PNG (varsayılan 9) için 0..9 aralığındadır. @@ -699,8 +699,8 @@ Görüntüyü biraz keskinleştirir. Paketlenmiş GD uzantısı* gerektirir, bu nedenle her yerde çalışacağından emin değiliz. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Bir görüntüyü dizeye çıktı olarak verir. Sıkıştırma kalitesi JPEG (varsayılan 85), WEBP (varsayılan 80) ve AVIF (varsayılan 30) için 0..100 ve PNG (varsayılan 9) için 0..9 aralığındadır. diff --git a/utils/tr/json.texy b/utils/tr/json.texy index 404b3a4601..c5302f4104 100644 --- a/utils/tr/json.texy +++ b/utils/tr/json.texy @@ -77,7 +77,7 @@ JSON'u PHP'ye ayrıştırır. ```php Json::decode('{"variable": true}'); // stdClass türünde bir nesne döndürür -Json::decode('{"variable": true}', forceArray: true); // bir dizi döndürür +Json::decode('{"variable": true}', forceArrays: true); // bir dizi döndürür ``` Hata durumunda bir `Nette\Utils\JsonException` istisnası atar. diff --git a/utils/tr/strings.texy b/utils/tr/strings.texy index 86a1669f76..179a1c0e41 100644 --- a/utils/tr/strings.texy +++ b/utils/tr/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- UTF-8 dizesini URL'de kullanılan biçime dönüştürür, yani aksan işaretlerini kaldırır ve İngilizce alfabenin harfleri ve sayılar dışındaki tüm karakterleri tire ile değiştirir. @@ -129,8 +129,8 @@ Strings::webalize('Hello world', null, false); // 'Hello-world' PHP uzantısı gerektirir `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- UTF-8 kodlu bir dizeden sol ve sağ taraftaki tüm boşlukları (veya ikinci bağımsız değişken olarak aktarılan karakterleri) kaldırır. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Başlangıç konumu `$start` ve uzunluğu `$length` ile belirtilen UTF-8 dizesinin bir bölümünü döndürür. `$start` negatifse, döndürülen dize dizenin sonundan itibaren `$start`'inci karakterden başlar. @@ -266,8 +266,8 @@ Strings::contains($haystack, $needle); // true Yerel `str_contains()`:https://www.php.net/manual/en/function.str-contains.php adresini kullanın. -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Karakter durumunu dikkate almadan iki UTF-8 dizgisini veya parçalarını karşılaştırır. `$length` boşsa, tüm dizgiler karşılaştırılır, negatifse, dizgilerin sonundan itibaren karşılık gelen karakter sayısı karşılaştırılır, aksi takdirde başlangıçtan itibaren uygun karakter sayısı karşılaştırılır. diff --git a/utils/tr/validators.texy b/utils/tr/validators.texy index 37daf1a341..72957fef95 100644 --- a/utils/tr/validators.texy +++ b/utils/tr/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- `$array` dizisindeki `$key` öğesinin boru ile ayrılmış [beklenen türlerden |#expected types] olduğunu doğrular. Değilse, [api:Nette\Utils\AssertionException] istisnasını atar. İstisna mesajındaki `item '%' in array` dizesi `$label` parametresi ile değiştirilebilir. diff --git a/utils/uk/arrays.texy b/utils/uk/arrays.texy index 3099c3d6ff..e13c8e2313 100644 --- a/utils/uk/arrays.texy +++ b/utils/uk/arrays.texy @@ -148,8 +148,8 @@ $array = Arrays::flatten([1, 2, [3, 4, [5, 6]]]); ``` -get(array $array, string|int|array $key, mixed $default=null): mixed .[method] ------------------------------------------------------------------------------- +get(array $array, string|int|array $key, ?mixed $default=null): mixed .[method] +------------------------------------------------------------------------------- Повертає елемент `$array[$key]`. Якщо він не існує, то або видається виняток `Nette\InvalidArgumentException`, або, якщо задано третій параметр `$default`, то повертається цей параметр. @@ -340,8 +340,8 @@ $array = Arrays::mergeTree($array1, $array2); Значення з другого масиву завжди додаються до кінця першого. Зникнення значення `10` з другого поля може здатися трохи незрозумілим. Зверніть увагу, що це значення, як і значення `5` v poli prvním mají přiřazený stejný numerický klíč `0`, тому в результуючий масив потрапляє тільки елемент із першого поля. -normalize(array $array, string $filling=null): array .[method] --------------------------------------------------------------- +normalize(array $array, ?string $filling=null): array .[method] +--------------------------------------------------------------- Нормалізує масив до асоціативного масиву. Замінює цифрові клавіші їхніми значеннями, нове значення буде `$filling`. @@ -356,8 +356,8 @@ $array = Arrays::normalize([1 => 'first', 'a' => 'second'], 'foobar'); ``` -pick(array &$array, string|int $key, mixed $default=null): mixed .[method] --------------------------------------------------------------------------- +pick(array &$array, string|int $key, ?mixed $default=null): mixed .[method] +--------------------------------------------------------------------------- Повертає і видаляє значення елемента з масиву. Якщо він не існує, видає виняток або повертає значення `$default`, якщо воно існує. diff --git a/utils/uk/datetime.texy b/utils/uk/datetime.texy index 8649d1600d..ef85c044f3 100644 --- a/utils/uk/datetime.texy +++ b/utils/uk/datetime.texy @@ -38,8 +38,8 @@ DateTime::fromParts(1994, 2, 26, 4, 15, 32); ``` -static createFromFormat(string $format, string $time, string|\DateTimeZone $timezone=null): DateTime|false .[method] --------------------------------------------------------------------------------------------------------------------- +static createFromFormat(string $format, string $time, ?string|\DateTimeZone $timezone=null): DateTime|false .[method] +--------------------------------------------------------------------------------------------------------------------- Розширює [DateTime::createFromFormat() |https://www.php.net/manual/en/datetime.createfromformat.php] можливістю введення часового поясу у вигляді рядка. ```php DateTime::createFromFormat('d.m.Y', '26.02.1994', 'Europe/London'); diff --git a/utils/uk/images.texy b/utils/uk/images.texy index a2d84ce2fd..8cb7116d16 100644 --- a/utils/uk/images.texy +++ b/utils/uk/images.texy @@ -250,8 +250,8 @@ $blank->place($image, '80%', '80%', 25); // прозорість станови ========================================= -static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method] ----------------------------------------------------------------------------------- +static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method] +----------------------------------------------------------------------------------- Створює нове істинно кольорове зображення заданих розмірів. За замовчуванням використовується чорний колір. @@ -310,8 +310,8 @@ static calculateTextBox(string $text, string $fontFile, float $size, float $angl Обчислює розміри прямокутника, який охоплює текст заданого шрифту та розміру. Повертає асоціативний масив, що містить ключі `left`, `top`, `width`, `height`. Ліве поле може бути від'ємним, якщо текст починається з лівого відступу. -affine(array $affine, array $clip=null): Image .[method] --------------------------------------------------------- +affine(array $affine, ?array $clip=null): Image .[method] +--------------------------------------------------------- Повертає зображення, що містить афінно-трансформоване зображення src з використанням необов'язкової області обрізання. ([докладніше |https://www.php.net/manual/en/function.imageaffine]). @@ -320,8 +320,8 @@ affineMatrixConcat(array $m1, array $m2): array .[method] Повертає конкатенацію двох матриць афінного перетворення, що корисно, якщо до одного зображення необхідно застосувати одразу кілька перетворень. ([докладніше |https://www.php.net/manual/en/function.imageaffinematrixconcat]) -affineMatrixGet(int $type, mixed $options=null): array .[method] ----------------------------------------------------------------- +affineMatrixGet(int $type, ?mixed $options=null): array .[method] +----------------------------------------------------------------- Повертає матрицю перетворення матриці. ([докладніше |https://www.php.net/manual/en/function.imageaffinematrixget]) @@ -417,8 +417,8 @@ colorsTotal(): int .[method] Повертає кількість кольорів у палітрі зображення. ([докладніше |https://www.php.net/manual/en/function.imagecolorstotal]) -colorTransparent(int $color=null): int .[method] ------------------------------------------------- +colorTransparent(?int $color=null): int .[method] +------------------------------------------------- Отримує або встановлює прозорий колір зображення. ([докладніше |https://www.php.net/manual/en/function.imagecolortransparent]) @@ -553,8 +553,8 @@ getWidth(): int .[method] Повертає ширину зображення. -interlace(int $interlace=null): int .[method] ---------------------------------------------- +interlace(?int $interlace=null): int .[method] +---------------------------------------------- Увімкнення або вимкнення режиму черезрядкової розгортки. Якщо встановлено черезрядковий режим і зображення зберігається у форматі JPEG, воно буде збережено як прогресивний JPEG. ([докладніше |https://www.php.net/manual/en/function.imageinterlace]) @@ -613,8 +613,8 @@ resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Imag Зміна розмірів зображення, [додаткова інформація |#Image-Resize]. Розміри можуть бути вказані як цілі числа в пікселях або рядки у відсотках (наприклад, `'50%'`). -resolution(int $resX=null, int $resY=null): mixed .[method] ------------------------------------------------------------ +resolution(?int $resX=null, ?int $resY=null): mixed .[method] +------------------------------------------------------------- Встановлює або повертає роздільну здатність зображення в DPI (точках на дюйм). Якщо жоден із додаткових параметрів не вказано, поточну роздільну здатність повертають у вигляді індексованого поля. Якщо вказано тільки `$resX`, то горизонтальна і вертикальна роздільна здатність встановлюється на це значення. Якщо вказано обидва додаткові параметри, горизонтальну та вертикальну роздільну здатність встановлюють на ці значення. Роздільна здатність використовується як метаінформація тільки під час читання і запису зображень у формати, що підтримують таку інформацію (наразі це PNG і JPEG). Це не впливає ні на які операції малювання. Роздільна здатність нових зображень за замовчуванням становить 96 DPI. ([докладніше |https://www.php.net/manual/en/function.imageresolution]) @@ -628,8 +628,8 @@ rotate(float $angle, int $backgroundColor): Image .[method] Вимагає наявності *Bundled GD extension*, тому може працювати не скрізь. -save(string $file, int $quality=null, int $type=null): void .[method] ---------------------------------------------------------------------- +save(string $file, ?int $quality=null, ?int $type=null): void .[method] +----------------------------------------------------------------------- Зберігає зображення у файл. Якість стиснення знаходиться в діапазоні 0...100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0...9 для PNG (за замовчуванням 9). Якщо тип не очевидний з розширення файлу, ви можете вказати його за допомогою однієї з констант `ImageType`. @@ -647,8 +647,8 @@ scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[m Масштабування зображення з використанням заданого алгоритму інтерполяції. ([докладніше |https://www.php.net/manual/en/function.imagescale]) -send(int $type=ImageType::JPEG, int $quality=null): void .[method] ------------------------------------------------------------------- +send(int $type=ImageType::JPEG, ?int $quality=null): void .[method] +------------------------------------------------------------------- Виводить зображення в браузер. Якість стиснення знаходиться в діапазоні 0...100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0...9 для PNG (за замовчуванням 9). @@ -699,8 +699,8 @@ sharpen(): Image .[method] Вимагає наявності *Bundled GD extension*, тому може працювати не скрізь. -toString(int $type=ImageType::JPEG, int $quality=null): string .[method] ------------------------------------------------------------------------- +toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method] +------------------------------------------------------------------------- Зберігає зображення в рядку. Якість стиснення знаходиться в діапазоні 0...100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0...9 для PNG (за замовчуванням 9). diff --git a/utils/uk/json.texy b/utils/uk/json.texy index 63cea39d9e..c216332b20 100644 --- a/utils/uk/json.texy +++ b/utils/uk/json.texy @@ -77,7 +77,7 @@ decode(string $json, bool $forceArray=false): mixed .[method] ```php Json::decode('{"variable": true}'); // повертає об'єкт типу stdClass -Json::decode('{"variable": true}', forceArray: true); // повертає масив +Json::decode('{"variable": true}', forceArrays: true); // повертає масив ``` При виникненні помилки викидається виняток `Nette\Utils\JsonException`. diff --git a/utils/uk/strings.texy b/utils/uk/strings.texy index f6af01fbfb..03cabcbb8b 100644 --- a/utils/uk/strings.texy +++ b/utils/uk/strings.texy @@ -104,8 +104,8 @@ $platformLines = Strings::platformNewLines($string); ``` -webalize(string $s, string $charlist=null, bool $lower=true): string .[method] ------------------------------------------------------------------------------- +webalize(string $s, ?string $charlist=null, bool $lower=true): string .[method] +------------------------------------------------------------------------------- Змінює рядок UTF-8 до формату, використовуваного в URL, тобто видаляє діакритичні знаки та замінює всі символи, окрім букв англійського алфавіту та цифр, на дефіс. @@ -129,8 +129,8 @@ Strings::webalize('Dobrý den', null, false); // 'Dobry-den' Потрібне розширення PHP `intl`. -trim(string $s, string $charlist=null): string .[method] --------------------------------------------------------- +trim(string $s, ?string $charlist=null): string .[method] +--------------------------------------------------------- Обрізає пробіли (або інші символи, зазначені другим параметром) з початку і кінця рядка UTF-8. @@ -186,8 +186,8 @@ Strings::padRight('Nette', 8, '+*'); // 'Nette+*+' ``` -substring(string $s, int $start, int $length=null): string .[method] --------------------------------------------------------------------- +substring(string $s, int $start, ?int $length=null): string .[method] +--------------------------------------------------------------------- Повертає частину рядка UTF-8 `$s`, задану початковою позицією `$start` і довжиною `$length`. Якщо `$start` від'ємний, то рядок, що повертається, починатиметься з символу -`$start` символу з кінця. @@ -266,8 +266,8 @@ Strings::length('červená'); // 7 \-- -compare(string $left, string $right, int $length=null): bool .[method] ----------------------------------------------------------------------- +compare(string $left, string $right, ?int $length=null): bool .[method] +----------------------------------------------------------------------- Порівняння двох рядків UTF-8 або частин рядків без урахування регістру. Якщо `$length` містить null, то порівнюються цілі рядки, якщо від'ємно, то порівнюється відповідна кількість символів з кінця рядків, інакше порівнюється відповідна кількість символів з початку. diff --git a/utils/uk/validators.texy b/utils/uk/validators.texy index 3af96283f4..6b4583fd64 100644 --- a/utils/uk/validators.texy +++ b/utils/uk/validators.texy @@ -120,8 +120,8 @@ Validators::assert('Lorem ipsum dolor sit', 'string:78'); ``` -assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method] ------------------------------------------------------------------------------------------------------ +assertField(array $array, string|int $key, ?string $expected=null, ?string $label=null): void .[method] +------------------------------------------------------------------------------------------------------- Перевіряє, що елемент під ключем `$key` у полі `$array` є одним з [очікуваних типів |#Expected-Types], розділених зірочкою. Якщо ні, то викидається виняток [api:Nette\Utils\AssertionException]. Рядок `item '%' in array` у тексті виключення може бути замінено іншим параметром `$label`.