Nette Documentation Preview

syntax
Nasveti in triki
****************


Urejevalniki in IDE .[#toc-editors-and-ide]
===========================================

Predloge pišite v urejevalniku ali IDE, ki podpira Latte. Bilo bo veliko bolj prijetno.

- V okolju NetBeans IDE je vgrajena podpora
- PhpStorm: namestite [vtičnik Latte |https://plugins.jetbrains.com/plugin/7457-latte] v `Settings > Plugins > Marketplace`
- VS koda: iskanje markerplace za [Nette Latte + Neon |https://marketplace.visualstudio.com/items?itemName=Kasik96.latte] ali [Nette Latte predloge |https://marketplace.visualstudio.com/items?itemName=smuuf.latte-lang] plugin
- Sublime Text 3: v Upravljanju paketov poiščite in namestite paket `Nette` ter izberite Latte v `View > Syntax`
- V starih urejevalnikih uporabite Smartyjevo označevanje za datoteke .latte

Vtičnik za program PhpStorm je zelo napreden in omogoča odlično delo pri namigovanju kode PHP. Za optimalno delovanje uporabite [tipizirane predloge |type-system].

[* latte-phpstorm-plugin.webp *]

Podporo za Latte najdete tudi v spletnem označevalniku kode [Prism.js |https://prismjs.com/#supported-languages] in urejevalniku [Ace |https://ace.c9.io].


Latte znotraj JavaScript ali CSS .[#toc-latte-inside-javascript-or-css]
=======================================================================

Latte lahko zelo priročno uporabljate v programih JavaScript ali CSS. Toda kako se izogniti situaciji, ko Latte napačno uporabi kodo JavaScript ali slog CSS kot oznako Latte?

```latte
<style>
	/* CHYBA: interpretuje jako značku {color} */
	body {color: blue}
</style>

<script>
	// CHYBA: interpretuje jako značku {id}
	var obj = {id: 123};
</script>
```

**Opcija 1**

Izognite se situaciji, ko črka sledi takoj za `{`, na primer tako, da pred njo naredite presledek, prelom vrstice ali narekovaj:

```latte
<style>
	body {
		color: blue
	}
</style>

<script>
	var obj = {'id': 123};
</script>
```

**Opcija 2**

Popolnoma onemogočite obdelavo oznake Latte znotraj elementa z uporabo [n:sintakse |tags#Syntax]:

```latte
<script n:syntax="off">
	var obj = {id: 123};
</script>
```

**Premenljivka 3**

Zamenjajte sintakso oznake Latte znotraj elementa z dvojnimi sestavljenimi oklepaji:

```latte
<script n:syntax="double">
	var obj = {id: 123};          // tohle je JavaScript

	{{if $cond}} alert(); {{/if}} // tohle je Latte
</script>
```

JavaScript [okoli spremenljivke ne piše narekovajev |tags#printing-in-javascript].


Zamenjava `use` za telefonsko slušalko v Latte .[#toc-replacement-for-use-clause]
=================================================================================

Kako nadomestiti stavke `use` v Latte , ki se uporabljajo v PHP, da vam pri dostopu do razreda ni treba zapisati imenskega prostora? Primer v PHP:

```php
use Pets\Model\Dog;

if ($dog->status === Dog::StatusHungry) {
	// ...
}
```

**Premenljivka 1**

Namesto `use` shranimo ime razreda v spremenljivko in nato namesto `Dog` uporabimo `$Dog`:

```latte
{var $Dog = Pets\Model\Dog::class}

<div>
	{if $dog->status === $Dog::StatusHungry}
		...
	{/if}
</div>
```

**Premenljivka 2**

Če je predmet `$dog` primerek `Pets\Model\Dog`, se lahko uporabi `{if $dog->status === $dog::StatusHungry}`.


Ustvarjanje XML v Latte .[#toc-generating-xml-in-latte]
=======================================================

Latte lahko ustvari kateri koli format besedila (HTML, XML, CSV, iCal itd.), vendar mu moramo za pravilno izpisovanje izhodnih podatkov povedati, kateri format ustvarjamo. V ta namen se uporablja oznaka [`{contentType}` |tags#contentType].

```latte
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
...
```

Nato lahko na podoben način ustvarimo zemljevid spletnega mesta:

```latte
{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" >
	<url n:foreach="$urls as $url">
		<loc>{$url->loc}</loc>
		<lastmod>{$url->lastmod->format('Y-m-d')}</lastmod>
		<changefreq>{$url->frequency}</changefreq>
		<priority>{$url->priority}</priority>
	</url>
</urlset>
```


Posredovanje podatkov iz vključene predloge .[#toc-passing-data-from-an-included-template]
==========================================================================================

Spremenljivke, ki jih ustvarimo z uporabo `{var}` ali `{default}` v vključeni predlogi, obstajajo samo v vključeni predlogi in niso na voljo v vključeni predlogi.
Če želimo nekatere podatke iz vključene predloge prenesti nazaj v vključujočo predlogo, lahko predlogi posredujemo predmet in vanj vstavimo podatke.

Glavna predloga:

```latte
{* ustvari prazen predmet $vars *}
{var $vars = (object) null}

{include 'included.latte', vars: $vars}

{* zdaj vsebuje lastnost foo *}
{$vars->foo}
```

Vključujoča predloga `included.latte`:

```latte
{* zapisovanje podatkov v lastnino foo *}
{var $vars->foo = 123}
```

Nasveti in triki

Urejevalniki in IDE

Predloge pišite v urejevalniku ali IDE, ki podpira Latte. Bilo bo veliko bolj prijetno.

  • V okolju NetBeans IDE je vgrajena podpora
  • PhpStorm: namestite vtičnik Latte v Settings > Plugins > Marketplace
  • VS koda: iskanje markerplace za Nette Latte + Neon ali Nette Latte predloge plugin
  • Sublime Text 3: v Upravljanju paketov poiščite in namestite paket Nette ter izberite Latte v View > Syntax
  • V starih urejevalnikih uporabite Smartyjevo označevanje za datoteke .latte

Vtičnik za program PhpStorm je zelo napreden in omogoča odlično delo pri namigovanju kode PHP. Za optimalno delovanje uporabite tipizirane predloge.

Podporo za Latte najdete tudi v spletnem označevalniku kode Prism.js in urejevalniku Ace.

Latte znotraj JavaScript ali CSS

Latte lahko zelo priročno uporabljate v programih JavaScript ali CSS. Toda kako se izogniti situaciji, ko Latte napačno uporabi kodo JavaScript ali slog CSS kot oznako Latte?

<style>
	/* CHYBA: interpretuje jako značku {color} */
	body {color: blue}
</style>

<script>
	// CHYBA: interpretuje jako značku {id}
	var obj = {id: 123};
</script>

Opcija 1

Izognite se situaciji, ko črka sledi takoj za {, na primer tako, da pred njo naredite presledek, prelom vrstice ali narekovaj:

<style>
	body {
		color: blue
	}
</style>

<script>
	var obj = {'id': 123};
</script>

Opcija 2

Popolnoma onemogočite obdelavo oznake Latte znotraj elementa z uporabo n:sintakse:

<script n:syntax="off">
	var obj = {id: 123};
</script>

Premenljivka 3

Zamenjajte sintakso oznake Latte znotraj elementa z dvojnimi sestavljenimi oklepaji:

<script n:syntax="double">
	var obj = {id: 123};          // tohle je JavaScript

	{{if $cond}} alert(); {{/if}} // tohle je Latte
</script>

JavaScript okoli spremenljivke ne piše narekovajev.

Zamenjava use za telefonsko slušalko v Latte

Kako nadomestiti stavke use v Latte , ki se uporabljajo v PHP, da vam pri dostopu do razreda ni treba zapisati imenskega prostora? Primer v PHP:

use Pets\Model\Dog;

if ($dog->status === Dog::StatusHungry) {
	// ...
}

Premenljivka 1

Namesto use shranimo ime razreda v spremenljivko in nato namesto Dog uporabimo $Dog:

{var $Dog = Pets\Model\Dog::class}

<div>
	{if $dog->status === $Dog::StatusHungry}
		...
	{/if}
</div>

Premenljivka 2

Če je predmet $dog primerek Pets\Model\Dog, se lahko uporabi {if $dog->status === $dog::StatusHungry}.

Ustvarjanje XML v Latte

Latte lahko ustvari kateri koli format besedila (HTML, XML, CSV, iCal itd.), vendar mu moramo za pravilno izpisovanje izhodnih podatkov povedati, kateri format ustvarjamo. V ta namen se uporablja oznaka {contentType}.

{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
...

Nato lahko na podoben način ustvarimo zemljevid spletnega mesta:

{contentType application/xml}
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" >
	<url n:foreach="$urls as $url">
		<loc>{$url->loc}</loc>
		<lastmod>{$url->lastmod->format('Y-m-d')}</lastmod>
		<changefreq>{$url->frequency}</changefreq>
		<priority>{$url->priority}</priority>
	</url>
</urlset>

Posredovanje podatkov iz vključene predloge

Spremenljivke, ki jih ustvarimo z uporabo {var} ali {default} v vključeni predlogi, obstajajo samo v vključeni predlogi in niso na voljo v vključeni predlogi. Če želimo nekatere podatke iz vključene predloge prenesti nazaj v vključujočo predlogo, lahko predlogi posredujemo predmet in vanj vstavimo podatke.

Glavna predloga:

{* ustvari prazen predmet $vars *}
{var $vars = (object) null}

{include 'included.latte', vars: $vars}

{* zdaj vsebuje lastnost foo *}
{$vars->foo}

Vključujoča predloga included.latte:

{* zapisovanje podatkov v lastnino foo *}
{var $vars->foo = 123}