Deprecated: Creation of dynamic property Automattic\Jetpack\WP_JS_Data_Sync\Data_Sync::$namespace is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/jetpack_vendor/automattic/jetpack-wp-js-data-sync/src/class-data-sync.php on line 91

Deprecated: Creation of dynamic property Automattic\Jetpack_Boost\Features\Speed_Score\Speed_Score::$modules is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/app/features/speed-score/Speed_Score.php on line 20

Deprecated: Creation of dynamic property Jetpack_Publicize::$modules is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack/modules/publicize.php on line 38

Deprecated: Creation of dynamic property Automattic\Jetpack\Publicize\Publicize_UI::$in_jetpack is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack/modules/publicize.php on line 101

Deprecated: Creation of dynamic property JQueryColorbox::$colorboxSettings is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jquery-colorbox/jquery-colorbox.php on line 93

Deprecated: Creation of dynamic property JQueryColorbox::$colorboxThemes is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jquery-colorbox/jquery-colorbox.php on line 97

Deprecated: Creation of dynamic property JQueryColorbox::$colorboxUnits is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jquery-colorbox/jquery-colorbox.php on line 121

Deprecated: Creation of dynamic property JQueryColorbox::$colorboxTransitions is deprecated in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jquery-colorbox/jquery-colorbox.php on line 127

Warning: Cannot modify header information - headers already sent by (output started at /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/jetpack_vendor/automattic/jetpack-wp-js-data-sync/src/class-data-sync.php:91) in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-includes/rest-api/class-wp-rest-server.php on line 1768

Warning: Cannot modify header information - headers already sent by (output started at /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/jetpack_vendor/automattic/jetpack-wp-js-data-sync/src/class-data-sync.php:91) in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-includes/rest-api/class-wp-rest-server.php on line 1768

Warning: Cannot modify header information - headers already sent by (output started at /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/jetpack_vendor/automattic/jetpack-wp-js-data-sync/src/class-data-sync.php:91) in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-includes/rest-api/class-wp-rest-server.php on line 1768

Warning: Cannot modify header information - headers already sent by (output started at /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/jetpack_vendor/automattic/jetpack-wp-js-data-sync/src/class-data-sync.php:91) in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-includes/rest-api/class-wp-rest-server.php on line 1768

Warning: Cannot modify header information - headers already sent by (output started at /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/jetpack_vendor/automattic/jetpack-wp-js-data-sync/src/class-data-sync.php:91) in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-includes/rest-api/class-wp-rest-server.php on line 1768

Warning: Cannot modify header information - headers already sent by (output started at /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/jetpack_vendor/automattic/jetpack-wp-js-data-sync/src/class-data-sync.php:91) in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-includes/rest-api/class-wp-rest-server.php on line 1768

Warning: Cannot modify header information - headers already sent by (output started at /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/jetpack_vendor/automattic/jetpack-wp-js-data-sync/src/class-data-sync.php:91) in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-includes/rest-api/class-wp-rest-server.php on line 1768

Warning: Cannot modify header information - headers already sent by (output started at /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-content/plugins/jetpack-boost/jetpack_vendor/automattic/jetpack-wp-js-data-sync/src/class-data-sync.php:91) in /home/owl_piotrek/blog.piotr.rybaltowski.pl/wp-includes/rest-api/class-wp-rest-server.php on line 1768
{"id":234,"date":"2008-03-30T12:46:32","date_gmt":"2008-03-30T12:46:32","guid":{"rendered":""},"modified":"2013-05-14T10:01:36","modified_gmt":"2013-05-14T08:01:36","slug":"ajax-i-json-w-zend-framework","status":"publish","type":"post","link":"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/","title":{"rendered":"AJAX i JSON w Zend Framework"},"content":{"rendered":"
Podobny wpis dla Zend Framework 2 mo\u017cna znale\u017a\u0107 tutaj (13 maja 2013)<\/a>.<\/div>\n

Zacz\u0105\u0142em niedawno nowy projekt. Kolejny oparty o Zend Framework<\/a>, a tym razem w znacznym stopniu wykorzystuj\u0105cy tzw. AJAX<\/abbr>. Jednak zamiast zwraca\u0107 XML<\/abbr> wol\u0119 dane dostawa\u0107 jako JSON<\/abbr>. Jak to robi\u0119, wykorzystuj\u0105c dobrodziejstwa ZF<\/abbr>? Poka\u017c\u0119 na przyk\u0142adzie akcji logowania.<\/p>\n

Akcja logowania nie generuje u mnie \u017cadnych formularzy ani tekstu. S\u0142u\u017cy tylko do wywo\u0142ania przez zapytanie asynchroniczne i zwr\u00f3cenia danych jako JSON<\/abbr>.<\/p>\n

Oto kod akcji:<\/p>\n

class AccountController extends Zend_Controller_Action\r\n{\r\n    function signinAction()\r\n    {\r\n        if($this->view->checkLogin())die();\r\n        $this->_helper->layout->setLayout('json');\r\n        $this->view->json = array('error'=>0, 'signin'=>false, 'message'=>'');\r\n        if($this->_request->isPost())\r\n        {\r\n            $f = new Zend_Filter_StripTags();\r\n            $login = $f->filter($this->_request->getPost('login',''));\r\n            $password = $f->filter($this->_request->getPost('password',''));\r\n            if(!empty($login))\r\n            {\r\n                $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter(), 'users', 'email', 'passwd', 'MD5(?) AND is_deleted = 0');\r\n                $authAdapter->setIdentity($login);\r\n                $authAdapter->setCredential($password);\r\n                $auth = Zend_Auth::getInstance();\r\n                $result = $auth->authenticate($authAdapter);\r\n                if($result->isValid())\r\n                {\r\n                    $data = $authAdapter->getResultRowObject(array('id_user', 'email', 'name', 'user_role'));\r\n                    $auth->getStorage()->write($data);\r\n                    $this->view->json['signin']=true;\r\n                }\r\n            }\r\n        }\r\n        if(!$this->view->json['signin'])\r\n            $this->view->json['message']='Podane e-mail i has\u0142o nie pasuj\u0105 do siebie.';\r\n    }\r\n}<\/pre>\n

Po kolei<\/h3>\n

Ca\u0142a magia zaczyna si\u0119 od<\/p>\n

$this->_helper->layout->setLayout('json');\r\n$this->view->json = array('error'=>0, 'signin'=>false, 'message'=>'');<\/pre>\n

czyli wybrania layoutu dla tej akcji i zainicjowania tablicy json<\/i> w obiekcie view<\/i>. Dalej odbywa si\u0119 logowanie za pomoc\u0105 modu\u0142u Zend_Auth<\/a> (o tym mo\u017ce przy innej okazji) i odpowiednie wype\u0142nianie tablicy json<\/i>.<\/p>\n

A po co by\u0142 ten wyb\u00f3r layoutu? To nowo\u015b\u0107 w wersji 1.5 frameworka. W pliku bootstrap<\/i> (zazwyczaj index.php<\/i>) nale\u017cy go zainicjowa\u0107 dodaj\u0105c linijk\u0119:<\/p>\n

Zend_Layout::startMvc(array('layoutPath'=>ROOT_DIR.'\/application\/views\/layouts\/'));<\/pre>\n

Domy\u015blny layout nale\u017cy umie\u015bci\u0107 w pliku \/application\/views\/layouts\/layout.phtml<\/i> – b\u0119dzie on wczytywany dop\u00f3ki go dla danej akcji nie wy\u0142\u0105czymy lub nie zmienimy. To drugie zrobi\u0142em w\u0142a\u015bnie w akcji logowania. A w pliku \/application\/views\/layouts\/json.phtml<\/i> wrzuci\u0142em tylko:<\/p>\n

json(isset($this->json)?$this->json:array())?><\/pre>\n

i wtedy ca\u0142a odpowied\u017a akcji to przerobiona tablica json<\/i> za pomoc\u0105 zendowego helpera json()<\/i>. Reszta to ju\u017c kwestia JS<\/abbr> i odpowiedniego odczytania zwr\u00f3conego obiektu. Korzystam z mootools<\/a> i tamtejszej metody Json.evaluate()<\/i>; pobieranie danych za pomoc\u0105 Json.Remote<\/i> generowa\u0142o b\u0142\u0119dy.<\/p>\n

\/*\r\n * url - adres akcji logowania - w przyk\u0142adzie \/account\/signin\/\r\n * params - informacje logowania\r\n *\/\r\nnew Ajax(url, {'data':params, 'method': 'post', 'onComplete': function(t){\r\n        var data = Json.evaluate(t);\r\n        if(!data)\r\n                alert('Wyst\u0105pi\u0142 b\u0142\u0105d podczas logowania!');\r\n        if(data.error)\r\n                alert('Wyst\u0105pi\u0142 b\u0142\u0105d podczas logowania!');\r\n        if(data.signin)\r\n                alert('Zalogowany!');\r\n        else\r\n                alert(data.message);\r\n}<\/pre>\n

Podsumowanie<\/h3>\n

Oczywi\u015bcie logowanie to tylko przyk\u0142ad tworzenia wyniku JSON<\/abbr>. Najwa\u017cniejsze elementy to:<\/p>\n

    \n
  • zainicjowanie Zend_Layout<\/i>;<\/li>\n
  • utworzenie tablicy json<\/i> (tylko ten krok nale\u017cy wykona\u0107 w ka\u017cdej akcji<\/strong>, pozosta\u0142e wykonaj\u0105 si\u0119 automagicznie);<\/li>\n
  • zdefiniowanie layoutu jsonowego;<\/li>\n
  • przekszta\u0142cenie tablicy do JSON<\/abbr> w layoucie;<\/li>\n
  • skrypt akcji w views<\/i> mo\u017ce zosta\u0107 pusty.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"

    Podobny wpis dla Zend Framework 2 mo\u017cna znale\u017a\u0107 tutaj (13 maja 2013). Zacz\u0105\u0142em niedawno nowy projekt. Kolejny oparty o Zend<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[6,4,5],"tags":[],"jetpack_publicize_connections":[],"yoast_head":"\nAJAX i JSON w Zend Framework<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AJAX i JSON w Zend Framework\" \/>\n<meta property=\"og:description\" content=\"Podobny wpis dla Zend Framework 2 mo\u017cna znale\u017a\u0107 tutaj (13 maja 2013). Zacz\u0105\u0142em niedawno nowy projekt. Kolejny oparty o Zend\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/\" \/>\n<meta property=\"og:site_name\" content=\"Piotr Ryba\u0142towski\" \/>\n<meta property=\"article:published_time\" content=\"2008-03-30T12:46:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-05-14T08:01:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/blog.piotr.rybaltowski.pl\/wp-content\/uploads\/2013\/03\/DSC07165_enchanced_300_450.jpg?fit=300%2C450&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"450\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Piotr Ryba\u0142towski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@prybaltowski\" \/>\n<meta name=\"twitter:site\" content=\"@prybaltowski\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Piotr Ryba\u0142towski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/\",\"url\":\"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/\",\"name\":\"AJAX i JSON w Zend Framework\",\"isPartOf\":{\"@id\":\"https:\/\/blog.piotr.rybaltowski.pl\/#website\"},\"datePublished\":\"2008-03-30T12:46:32+00:00\",\"dateModified\":\"2013-05-14T08:01:36+00:00\",\"author\":{\"@id\":\"https:\/\/blog.piotr.rybaltowski.pl\/#\/schema\/person\/83a30be3ae1b549124de4ba1aadb7338\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/blog.piotr.rybaltowski.pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programowanie\",\"item\":\"https:\/\/blog.piotr.rybaltowski.pl\/kategoria\/programowanie\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"JavaScript\",\"item\":\"https:\/\/blog.piotr.rybaltowski.pl\/kategoria\/programowanie\/javascript\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"AJAX i JSON w Zend Framework\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.piotr.rybaltowski.pl\/#website\",\"url\":\"https:\/\/blog.piotr.rybaltowski.pl\/\",\"name\":\"Piotr Ryba\u0142towski\",\"description\":\"Programista PHP, Symfony\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.piotr.rybaltowski.pl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.piotr.rybaltowski.pl\/#\/schema\/person\/83a30be3ae1b549124de4ba1aadb7338\",\"name\":\"Piotr Ryba\u0142towski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/blog.piotr.rybaltowski.pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a4d8f9da3bba9f9c09eab549d2baa674?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a4d8f9da3bba9f9c09eab549d2baa674?s=96&d=wavatar&r=g\",\"caption\":\"Piotr Ryba\u0142towski\"},\"sameAs\":[\"http:\/\/www.piotr.rybaltowski.pl\/\",\"https:\/\/twitter.com\/prybaltowski\"],\"url\":\"https:\/\/blog.piotr.rybaltowski.pl\/author\/piotr\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AJAX i JSON w Zend Framework","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/","og_locale":"pl_PL","og_type":"article","og_title":"AJAX i JSON w Zend Framework","og_description":"Podobny wpis dla Zend Framework 2 mo\u017cna znale\u017a\u0107 tutaj (13 maja 2013). Zacz\u0105\u0142em niedawno nowy projekt. Kolejny oparty o Zend","og_url":"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/","og_site_name":"Piotr Ryba\u0142towski","article_published_time":"2008-03-30T12:46:32+00:00","article_modified_time":"2013-05-14T08:01:36+00:00","og_image":[{"width":300,"height":450,"url":"https:\/\/i0.wp.com\/blog.piotr.rybaltowski.pl\/wp-content\/uploads\/2013\/03\/DSC07165_enchanced_300_450.jpg?fit=300%2C450&ssl=1","type":"image\/jpeg"}],"author":"Piotr Ryba\u0142towski","twitter_card":"summary_large_image","twitter_creator":"@prybaltowski","twitter_site":"@prybaltowski","twitter_misc":{"Napisane przez":"Piotr Ryba\u0142towski","Szacowany czas czytania":"3 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/","url":"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/","name":"AJAX i JSON w Zend Framework","isPartOf":{"@id":"https:\/\/blog.piotr.rybaltowski.pl\/#website"},"datePublished":"2008-03-30T12:46:32+00:00","dateModified":"2013-05-14T08:01:36+00:00","author":{"@id":"https:\/\/blog.piotr.rybaltowski.pl\/#\/schema\/person\/83a30be3ae1b549124de4ba1aadb7338"},"breadcrumb":{"@id":"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.piotr.rybaltowski.pl\/ajax-i-json-w-zend-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/blog.piotr.rybaltowski.pl\/"},{"@type":"ListItem","position":2,"name":"Programowanie","item":"https:\/\/blog.piotr.rybaltowski.pl\/kategoria\/programowanie\/"},{"@type":"ListItem","position":3,"name":"JavaScript","item":"https:\/\/blog.piotr.rybaltowski.pl\/kategoria\/programowanie\/javascript\/"},{"@type":"ListItem","position":4,"name":"AJAX i JSON w Zend Framework"}]},{"@type":"WebSite","@id":"https:\/\/blog.piotr.rybaltowski.pl\/#website","url":"https:\/\/blog.piotr.rybaltowski.pl\/","name":"Piotr Ryba\u0142towski","description":"Programista PHP, Symfony","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.piotr.rybaltowski.pl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/blog.piotr.rybaltowski.pl\/#\/schema\/person\/83a30be3ae1b549124de4ba1aadb7338","name":"Piotr Ryba\u0142towski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/blog.piotr.rybaltowski.pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a4d8f9da3bba9f9c09eab549d2baa674?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4d8f9da3bba9f9c09eab549d2baa674?s=96&d=wavatar&r=g","caption":"Piotr Ryba\u0142towski"},"sameAs":["http:\/\/www.piotr.rybaltowski.pl\/","https:\/\/twitter.com\/prybaltowski"],"url":"https:\/\/blog.piotr.rybaltowski.pl\/author\/piotr\/"}]}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3k68g-3M","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":877,"url":"https:\/\/blog.piotr.rybaltowski.pl\/ajax-json-zend-framework-2\/","url_meta":{"origin":234,"position":0},"title":"AJAX i JSON w Zend Framework 2","date":"13 maja 2013","format":false,"excerpt":"Patrz\u0105c na fora w Internecie oraz zapytania programist\u00f3w, mam wra\u017cenie, \u017ce obs\u0142uga zapyta\u0144 AJAXowych oraz zwracanie odpowiedzi w formacie JSON w Zend Framework 2 nie jest oczywista. Poni\u017cej postaram si\u0119 przybli\u017cy\u0107 ten temat. 5 lat temu pisa\u0142em o tym temacie w kontek\u015bcie Zend Framework 1. Dzisiaj, kilka miesi\u0119cy po premierze\u2026","rel":"","context":"In "PHP"","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":344,"url":"https:\/\/blog.piotr.rybaltowski.pl\/ksiazka-zend-framework-od-podstaw-wlodzimierza-gajdy\/","url_meta":{"origin":234,"position":1},"title":"Ksi\u0105\u017cka \u201cZend Framework od podstaw\u201d W\u0142odzimierza Gajdy","date":"5 grudnia 2011","format":false,"excerpt":"Na co dzie\u0144 pracuj\u0119 przy tworzeniu i rozwijaniu aplikacji webowych dzia\u0142aj\u0105cych w oparciu o przegl\u0105dark\u0119 internetow\u0105. Programuj\u0119 przede wszystkim w j\u0119zyku PHP z wykorzystaniem Zend Framework, poniewa\u017c to znacznie przyspiesza pisanie cz\u0119sto powtarzanych element\u00f3w i czynno\u015bci, kt\u00f3re s\u0105 po prostu od razu gotowe do u\u017cycia w postaci odpowiednich klas. Do\u2026","rel":"","context":"In "Ksi\u0105\u017cki"","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.piotr.rybaltowski.pl\/wp-content\/uploads\/2011\/12\/zend-framework-wlodzimierz-gajda.list_.png?fit=200%2C307&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":346,"url":"https:\/\/blog.piotr.rybaltowski.pl\/routery-part-w-zend-framework-2-i-sprawdzanie-nazwy-domeny\/","url_meta":{"origin":234,"position":2},"title":"Routery Part w Zend Framework 2 i sprawdzanie nazwy domeny","date":"21 marca 2012","format":false,"excerpt":"Zend Framework 2 jest ju\u017c w wersji beta 3 i wielkimi krokami zbli\u017ca si\u0119 faza RC i w ko\u0144cu oficjalny release. Mam okazj\u0119 pracowa\u0107 w tym frameworku przy kilku projektach i poznawa\u0107 mniejsze i wi\u0119ksze nowo\u015bci, kt\u00f3re nowe wydanie oferuje programistom. Jedn\u0105 z tych mniejszych, ale bardzo ciekawych zmian jest\u2026","rel":"","context":"In "PHP"","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.piotr.rybaltowski.pl\/wp-content\/uploads\/2012\/03\/zf2-part-router-domain-example-thumb.png?fit=300%2C300&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":327,"url":"https:\/\/blog.piotr.rybaltowski.pl\/praca-php-zend-framework\/","url_meta":{"origin":234,"position":3},"title":"Praca PHP\/Zend Framework","date":"1 listopada 2010","format":false,"excerpt":"Jest zlecenie do zrobienia. Jest ju\u017c aplikacja napisana w Zend Framework (1.10) + MySQL i do niej b\u0119dzie dopisywany kolejny modu\u0142. Du\u017co w nim b\u0119dzie te\u017c JavaScript z jQuery. Pracy jest na oko\u0142o 6 tygodni w dobrym tempie. Centralna cze\u015b\u0107 sk\u0142adu jest w Warszawie, ale pracujemy w zaciszu w\u0142asnych dom\u00f3w,\u2026","rel":"","context":"In "Praca"","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":339,"url":"https:\/\/blog.piotr.rybaltowski.pl\/modele-i-formularze-zend-framework-automatyzacja-zapisu\/","url_meta":{"origin":234,"position":4},"title":"Modele i formularze Zend Framework – automatyzacja zapisu","date":"21 wrze\u015bnia 2011","format":false,"excerpt":"Na codzie\u0144 pracuj\u0119 w Zend Framework. Praca jest bardzo przyjemna, framework jest fajnie napisany, obiektowo, elastycznie (wiele klas mo\u017cna rozszerzy\u0107, jest wiele miejsc, w kt\u00f3rych domy\u015blne klasy s\u0105 gotowe do uruchomienia naszego kodu, itp.). Ale ma te\u017c wiele wad i brak\u00f3w, kt\u00f3re cz\u0119sto s\u0105 rozwi\u0105zane w innych frameworkach. Tw\u00f3rcy ZF\u2026","rel":"","context":"In "PHP"","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":228,"url":"https:\/\/blog.piotr.rybaltowski.pl\/zend-php-framework\/","url_meta":{"origin":234,"position":5},"title":"Zend PHP Framework","date":"20 marca 2008","format":false,"excerpt":"Ko\u0144cz\u0119 pierwszy projekt wykorzystuj\u0105cy Zend Framework. Ma swoje wady, ale ma bardzo du\u017co zalet. Tworzony przez go\u015bci od samego PHP - to ju\u017c brzmi kusz\u0105co. No i nie zawiod\u0142em si\u0119.Teraz b\u0119d\u0119 zaczyna\u0142 drugi projekt z t\u0105 bibliotek\u0105. Chcia\u0142bym jednak troch\u0119 usystematyzowa\u0107 swoj\u0105 widz\u0119 o frameworku, a nie opiera\u0107 si\u0119 tylko\u2026","rel":"","context":"In "Programowanie"","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.piotr.rybaltowski.pl\/wp-json\/wp\/v2\/posts\/234"}],"collection":[{"href":"https:\/\/blog.piotr.rybaltowski.pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.piotr.rybaltowski.pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.piotr.rybaltowski.pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.piotr.rybaltowski.pl\/wp-json\/wp\/v2\/comments?post=234"}],"version-history":[{"count":3,"href":"https:\/\/blog.piotr.rybaltowski.pl\/wp-json\/wp\/v2\/posts\/234\/revisions"}],"predecessor-version":[{"id":1028,"href":"https:\/\/blog.piotr.rybaltowski.pl\/wp-json\/wp\/v2\/posts\/234\/revisions\/1028"}],"wp:attachment":[{"href":"https:\/\/blog.piotr.rybaltowski.pl\/wp-json\/wp\/v2\/media?parent=234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.piotr.rybaltowski.pl\/wp-json\/wp\/v2\/categories?post=234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.piotr.rybaltowski.pl\/wp-json\/wp\/v2\/tags?post=234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}