{"id":96,"date":"2023-01-31T09:58:00","date_gmt":"2023-01-31T08:58:00","guid":{"rendered":"https:\/\/josefnemec.cz\/blog\/?p=96"},"modified":"2024-12-31T10:00:10","modified_gmt":"2024-12-31T09:00:10","slug":"co-je-nette-a-proc-byste-ho-meli-pouzivat","status":"publish","type":"post","link":"https:\/\/josefnemec.cz\/blog\/technologie\/co-je-nette-a-proc-byste-ho-meli-pouzivat\/","title":{"rendered":"Co je Nette a pro\u010d byste ho m\u011bli pou\u017e\u00edvat?"},"content":{"rendered":"\n<p>Nette je popul\u00e1rn\u00ed \u010desk\u00fd PHP framework pro tvorbu webov\u00fdch aplikac\u00ed. Je zn\u00e1m\u00fd svou jednoduchost\u00ed, bezpe\u010dnost\u00ed a efektivitou. Poskytuje n\u00e1stroje pro usnadn\u011bn\u00ed v\u00fdvoje, od strukturovan\u00e9ho n\u00e1vrhu aplikac\u00ed a\u017e po pr\u00e1ci s datab\u00e1zemi, formul\u00e1\u0159i a \u0161ablonami. D\u00edky Nette se m\u016f\u017eete soust\u0159edit na logiku aplikace a m\u00e9n\u011b se starat o technick\u00e9 detaily.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hlavn\u00ed vlastnosti Nette<\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Modularita:<\/strong> Nette je slo\u017een\u00e9 z jednotliv\u00fdch komponent, kter\u00e9 lze pou\u017e\u00edt samostatn\u011b (nap\u0159. Latte, Tracy, Forms).<\/li>\n\n\n\n<li><strong>Bezpe\u010dnost:<\/strong> Framework chr\u00e1n\u00ed proti nej\u010dast\u011bj\u0161\u00edm hrozb\u00e1m, jako je SQL injection, XSS nebo CSRF.<\/li>\n\n\n\n<li><strong>Flexibilita:<\/strong> Nette se p\u0159izp\u016fsob\u00ed pot\u0159eb\u00e1m v\u00fdvoj\u00e1\u0159e a podporuje r\u016fzn\u00e9 p\u0159\u00edstupy k v\u00fdvoji.<\/li>\n\n\n\n<li><strong>Snadn\u00e9 u\u010den\u00ed:<\/strong> Dokumentace je rozs\u00e1hl\u00e1 a komunitn\u00ed podpora velmi aktivn\u00ed.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Uk\u00e1zka struktury Nette aplikace<\/h3>\n\n\n\n<p>Typick\u00e1 struktura aplikace v Nette vypad\u00e1 takto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/project\n  \/app\n    \/Presenters\n    \/Templates\n    \/Components\n  \/www\n    index.php\n  \/vendor\n  config.neon\n  composer.json<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\/app<\/strong> obsahuje hlavn\u00ed logiku aplikace.<\/li>\n\n\n\n<li><strong>\/www<\/strong> je ve\u0159ejn\u00fd adres\u00e1\u0159 p\u0159\u00edstupn\u00fd z prohl\u00ed\u017ee\u010de.<\/li>\n\n\n\n<li><strong>config.neon<\/strong> slou\u017e\u00ed k nastaven\u00ed aplikace.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">P\u0159\u00edklad jednoduch\u00e9ho presenteru<\/h3>\n\n\n\n<p>Presenter je t\u0159\u00edda, kter\u00e1 zpracov\u00e1v\u00e1 po\u017eadavky a vrac\u00ed odpov\u011bdi. Nap\u0159\u00edklad <code>HomepagePresenter<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nnamespace App\\Presenters;\n\nuse Nette\\Application\\UI\\Presenter;\n\nclass HomepagePresenter extends Presenter\n{\n    public function renderDefault(): void\n    {\n        $this-&gt;template-&gt;greeting = 'V\u00edtejte v Nette!';\n    }\n}<\/code><\/pre>\n\n\n\n<p>\u0160ablona pro tento presenter (<code>Homepage\/default.latte<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"cs\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Nette Aplikace&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;{$greeting}&lt;\/h1&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<p>V\u00fdstupem bude str\u00e1nka s textem \u201eV\u00edtejte v Nette!\u201c.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pr\u00e1ce s formul\u00e1\u0159i<\/h3>\n\n\n\n<p>Nette usnad\u0148uje tvorbu formul\u00e1\u0159\u016f. Nap\u0159\u00edklad formul\u00e1\u0159 pro p\u0159ihl\u00e1\u0161en\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$form = new Nette\\Application\\UI\\Form;\n$form-&gt;addText('username', 'U\u017eivatelsk\u00e9 jm\u00e9no:')-&gt;setRequired();\n$form-&gt;addPassword('password', 'Heslo:')-&gt;setRequired();\n$form-&gt;addSubmit('login', 'P\u0159ihl\u00e1sit se');\n\n$form-&gt;onSuccess&#91;] = function ($form, $values) {\n    \/\/ Zpracov\u00e1n\u00ed p\u0159ihl\u00e1\u0161en\u00ed\n    echo 'P\u0159ihl\u00e1\u0161en jako: ' . $values-&gt;username;\n};\n\nreturn $form;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Pro\u010d pou\u017e\u00edvat Nette?<\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Rychl\u00fd v\u00fdvoj:<\/strong> D\u00edky mnoha vestav\u011bn\u00fdm funkc\u00edm a komponent\u00e1m.<\/li>\n\n\n\n<li><strong>Bezpe\u010dnost:<\/strong> V\u00fdchoz\u00ed nastaven\u00ed chr\u00e1n\u00ed aplikaci p\u0159ed b\u011b\u017en\u00fdmi \u00fatoky.<\/li>\n\n\n\n<li><strong>Komunita:<\/strong> Aktivn\u00ed \u010desk\u00e1 i mezin\u00e1rodn\u00ed komunita a skv\u011bl\u00e1 dokumentace.<\/li>\n\n\n\n<li><strong>\u0160k\u00e1lovatelnost:<\/strong> Od mal\u00fdch projekt\u016f po rozs\u00e1hl\u00e9 aplikace.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Jak za\u010d\u00edt s Nette?<\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Nainstalujte Composer:<\/strong> Nette vyu\u017e\u00edv\u00e1 Composer pro spr\u00e1vu z\u00e1vislost\u00ed.<\/li>\n\n\n\n<li><strong>Vytvo\u0159te nov\u00fd projekt:<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>composer create-project nette\/web-project moje-aplikace<\/code><\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Spus\u0165te vestav\u011bn\u00fd server:<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>php -S localhost:8000 -t www<\/code><\/pre>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>Prozkoumejte dokumentaci:<\/strong> <a href=\"https:\/\/doc.nette.org\">https:\/\/doc.nette.org<\/a><\/li>\n<\/ol>\n\n\n\n<p>Nette je ide\u00e1ln\u00ed volbou pro ka\u017ed\u00e9ho, kdo chce vytv\u00e1\u0159et robustn\u00ed a bezpe\u010dn\u00e9 webov\u00e9 aplikace v PHP.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nette je popul\u00e1rn\u00ed \u010desk\u00fd PHP framework pro tvorbu webov\u00fdch aplikac\u00ed. Je zn\u00e1m\u00fd svou jednoduchost\u00ed, bezpe\u010dnost\u00ed a efektivitou. Poskytuje n\u00e1stroje pro usnadn\u011bn\u00ed v\u00fdvoje, od strukturovan\u00e9ho n\u00e1vrhu aplikac\u00ed a\u017e po pr\u00e1ci s datab\u00e1zemi, formul\u00e1\u0159i a \u0161ablonami. D\u00edky Nette se m\u016f\u017eete soust\u0159edit na<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[77],"tags":[29,62,47,10,49],"class_list":["post-96","post","type-post","status-publish","format-standard","hentry","category-technologie","tag-latte","tag-nette","tag-php","tag-php8","tag-programovani"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/96","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/comments?post=96"}],"version-history":[{"count":1,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/96\/revisions"}],"predecessor-version":[{"id":97,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/posts\/96\/revisions\/97"}],"wp:attachment":[{"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/media?parent=96"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/categories?post=96"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/josefnemec.cz\/blog\/wp-json\/wp\/v2\/tags?post=96"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}