{"id":28495,"date":"2018-04-07T22:09:11","date_gmt":"2018-04-07T19:09:11","guid":{"rendered":"http:\/\/kamil-abzalov.com\/tutorials\/create-php-mvc-app-angular-js-edit-and-delete-product-from-app\/"},"modified":"2020-04-11T11:37:57","modified_gmt":"2020-04-11T08:37:57","slug":"create-php-mvc-app-angular-js-edit-and-delete-product-from-app","status":"publish","type":"post","link":"https:\/\/kamil-abzalov.com\/en\/tutorials\/phpmysql\/create-php-mvc-app-angular-js-edit-and-delete-product-from-app\/","title":{"rendered":"Create php MVC app. Angular js &#8211; edit and delete product from app"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; fullwidth=&#8221;on&#8221; _builder_version=&#8221;3.22&#8243;][et_pb_fullwidth_header title=&#8221;Create php MVC app. Angular js &#8211; edit and delete product from app&#8221; _builder_version=&#8221;3.16&#8243; button_one_text_size__hover_enabled=&#8221;off&#8221; button_two_text_size__hover_enabled=&#8221;off&#8221; button_one_text_color__hover_enabled=&#8221;off&#8221; button_two_text_color__hover_enabled=&#8221;off&#8221; button_one_border_width__hover_enabled=&#8221;off&#8221; button_two_border_width__hover_enabled=&#8221;off&#8221; button_one_border_color__hover_enabled=&#8221;off&#8221; button_two_border_color__hover_enabled=&#8221;off&#8221; button_one_border_radius__hover_enabled=&#8221;off&#8221; button_two_border_radius__hover_enabled=&#8221;off&#8221; button_one_letter_spacing__hover_enabled=&#8221;off&#8221; button_two_letter_spacing__hover_enabled=&#8221;off&#8221; button_one_bg_color__hover_enabled=&#8221;off&#8221; button_two_bg_color__hover_enabled=&#8221;off&#8221;][\/et_pb_fullwidth_header][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;section&#8221; _builder_version=&#8221;3.22&#8243;][et_pb_row admin_label=&#8221;row&#8221; _builder_version=&#8221;3.25&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; custom_padding=&#8221;0px|||&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;3.25&#8243; custom_padding=&#8221;|||&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_dcsbcm_divi_breadcrumbs_module homebreadcrumbtext=&#8221;Home&#8221; hide_currentbreadcrumb=&#8221;off&#8221; _builder_version=&#8221;3.0.106&#8243; custom_padding=&#8221;0px|||&#8221; hover_enabled=&#8221;0&#8243; fontsbreadcrumbs_font_size_tablet=&#8221;51&#8243; fontsbreadcrumbs_line_height_tablet=&#8221;2&#8243; fontsseperator_font_size_tablet=&#8221;51&#8243; fontsseperator_line_height_tablet=&#8221;2&#8243; fontsbreadcrumblinks_font_size_tablet=&#8221;51&#8243; fontsbreadcrumblinks_line_height_tablet=&#8221;2&#8243;][\/et_pb_dcsbcm_divi_breadcrumbs_module][et_pb_text _builder_version=&#8221;3.27.4&#8243; border_color_all=&#8221;#ffffff&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]<\/p>\n<p>In <a href=\"https:\/\/kamil-abzalov.com\/en\/tutorials\/phpmysql-tuts\/create-php-mvc-application-use-angularjs\/\">last lesson<\/a> we began using angular js in our app. Today we continue to write angular code &#8211; we will make edit and delete functions in our app.<\/p>\n<p>[\/et_pb_text][et_pb_video src=&#8221;https:\/\/www.youtube.com\/watch?v=pNk8YfhNjy4&#8243; _builder_version=&#8221;3.0.106&#8243;][\/et_pb_video][et_pb_text _builder_version=&#8221;3.27.4&#8243; border_color_all=&#8221;#ffffff&#8221; use_border_color=&#8221;off&#8221; border_color=&#8221;#ffffff&#8221; border_style=&#8221;solid&#8221;]For the server connection we use $http build-in angular service. In homework I suggest you to write add product function by yourself.<br \/>\n[\/et_pb_text][et_pb_dmb_code_snippet title=&#8221;Code lesson (product.tpl.php)&#8221; code=&#8221;PGZvcm0gY2xhc3M9ImZvcm0taG9yaXpvbnRhbCIgbmFtZT0icHJvZHVjdEluZm8iIGRhdGEtbmctc3VibWl0PSJzYXZlUHJvZHVjdCgpIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwcm9kdWN0SWQiIGRhdGEtbmctbW9kZWw9InByb2R1Y3RJZCI+CiAgICA8bGVnZW5kPtCg0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40LUg0YLQvtCy0LDRgNCwPC9sZWdlbmQ+CiAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICA8bGFiZWwgZm9yPSJwcm9kdWN0TmFtZSIgY2xhc3M9ImNvbC1zbS0zIj7QndCw0LjQvNC10L3QvtCy0LDQvdC40LUg0YLQvtCy0LDRgNCwPC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBkYXRhLW5nLW1vZGVsPSJwcm9kdWN0TmFtZSIgaWQ9InByb2R1Y3ROYW1lIiBjbGFzcz0iZm9ybS1jb250cm9sIj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgPGxhYmVsIGZvcj0icHJvZHVjdFByaWNlIiBjbGFzcz0iY29sLXNtLTMiPtCh0YLQvtC40LzQvtGB0YLRjCDRgtC+0LLQsNGA0LA8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGRhdGEtbmctbW9kZWw9InByb2R1Y3RQcmljZSIgaWQ9InByb2R1Y3RQcmljZSIgY2xhc3M9ImZvcm0tY29udHJvbCI+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS1vZmZzZXQtMyBjb2wtc20tOSI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGVmYXVsdCI+0KHQvtGF0YDQsNC90LjRgtGMPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGFuZ2VyIiB0eXBlPSJidXR0b24iIGRhdGEtbmctY2xpY2s9ImRlbGV0ZVByb2R1Y3QocHJvZHVjdElkKSI+0KPQtNCw0LvQuNGC0Yw8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Zvcm0+Cg==&#8221; admin_label=&#8221;\u041a\u043e\u0434 \u0443\u0440\u043e\u043a\u0430&#8221; style=&#8221;docco&#8221; linenums=&#8221;on&#8221; usetabwidth=&#8221;on&#8221; tabwidth=&#8221;4&#8243; _builder_version=&#8221;3.0.106&#8243;]PGZvcm0gY2xhc3M9ImZvcm0taG9yaXpvbnRhbCIgbmFtZT0icHJvZHVjdEluZm8iIGRhdGEtbmctc3VibWl0PSJzYXZlUHJvZHVjdCgpIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwcm9kdWN0SWQiIGRhdGEtbmctbW9kZWw9InByb2R1Y3RJZCI+CiAgICA8bGVnZW5kPtCg0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40LUg0YLQvtCy0LDRgNCwPC9sZWdlbmQ+CiAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICA8bGFiZWwgZm9yPSJwcm9kdWN0TmFtZSIgY2xhc3M9ImNvbC1zbS0zIj7QndCw0LjQvNC10L3QvtCy0LDQvdC40LUg0YLQvtCy0LDRgNCwPC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBkYXRhLW5nLW1vZGVsPSJwcm9kdWN0TmFtZSIgaWQ9InByb2R1Y3ROYW1lIiBjbGFzcz0iZm9ybS1jb250cm9sIj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgPGxhYmVsIGZvcj0icHJvZHVjdFByaWNlIiBjbGFzcz0iY29sLXNtLTMiPtCh0YLQvtC40LzQvtGB0YLRjCDRgtC+0LLQsNGA0LA8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGRhdGEtbmctbW9kZWw9InByb2R1Y3RQcmljZSIgaWQ9InByb2R1Y3RQcmljZSIgY2xhc3M9ImZvcm0tY29udHJvbCI+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS1vZmZzZXQtMyBjb2wtc20tOSI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGVmYXVsdCI+0KHQvtGF0YDQsNC90LjRgtGMPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGFuZ2VyIiB0eXBlPSJidXR0b24iIGRhdGEtbmctY2xpY2s9ImRlbGV0ZVByb2R1Y3QocHJvZHVjdElkKSI+0KPQtNCw0LvQuNGC0Yw8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Zvcm0+Cg==[\/et_pb_dmb_code_snippet][et_pb_dmb_code_snippet title=&#8221;Code lesson (app.js)&#8221; code=&#8221;IHZhciBhcHAgPSBhbmd1bGFyLm1vZHVsZSgncHJvZHVjdHMnLCBbIm5nUm91dGUiXSk7CmFwcC5jb25maWcoZnVuY3Rpb24oJHJvdXRlUHJvdmlkZXIsICRsb2NhdGlvblByb3ZpZGVyKXsKICAgICRyb3V0ZVByb3ZpZGVyCiAgICAgICAgLndoZW4oIi86aWQiLCB7CiAgICAgICAgICAgIHRlbXBsYXRlVXJsIDogIi92aWV3cy9wcm9kdWN0LnRwbC5waHAiCiAgICAgICAgfSk7CgogICAgICRsb2NhdGlvblByb3ZpZGVyLmh0bWw1TW9kZSh0cnVlKTsKfSkKCmFwcC5jb250cm9sbGVyKCdwcm9kdWN0c0NvbnRyb2xsZXInLCBmdW5jdGlvbigkc2NvcGUsICRodHRwLCAkd2luZG93KSB7CgogICAgJHNjb3BlLmdldEluZm9CeVByb2R1Y3RJZCA9IGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgJGh0dHAoewogICAgICAgICAgICBtZXRob2Q6ICJHRVQiLAogICAgICAgICAgICB1cmw6ICJodHRwOi8vY2FiaW5ldC5jb2RldG9nZXRoZXIucnUvY2FiaW5ldC9wcm9kdWN0cy9nZXRQcm9kdWN0IiwKICAgICAgICAgICAgcGFyYW1zOiB7aWQ6IGlkfQogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXsKICAgICAgICAgICAgJHNjb3BlLnByb2R1Y3RJZCA9IHJlc3VsdC5kYXRhLmlkOwogICAgICAgICAgICAkc2NvcGUucHJvZHVjdE5hbWUgPSByZXN1bHQuZGF0YS5uYW1lOwogICAgICAgICAgICAkc2NvcGUucHJvZHVjdFByaWNlID0gcmVzdWx0LmRhdGEucHJpY2U7CiAgICAgICAgfSkKICAgIH0KCiAgICAkc2NvcGUuc2F2ZVByb2R1Y3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyBUT0RPOiDQlNC+0LzQsNGI0L3QtdC1INC30LDQtNCw0L3QuNC1IC0g0LTQvtCx0LDQstC40YLRjCDQstCw0LvQuNC00LDRhtC40Y4g0LTQsNC90L3Ri9GFLCDRgNC10LDQu9C40LfQvtCy0LDRgtGMINGD0LTQsNC70LXQvdC40LUg0YLQvtCy0LDRgNCwCgogICAgICAgICRzY29wZS5wcm9kdWN0TmFtZSA9IGFuZ3VsYXIuZWxlbWVudCgiI3Byb2R1Y3ROYW1lIikudmFsKCk7CiAgICAgICAgJHNjb3BlLnByb2R1Y3RQcmljZSA9IGFuZ3VsYXIuZWxlbWVudCgiI3Byb2R1Y3RQcmljZSIpLnZhbCgpOwoKICAgICAgICAkaHR0cCh7CiAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLAogICAgICAgICAgICB1cmw6ICJodHRwOi8vY2FiaW5ldC5jb2RldG9nZXRoZXIucnUvY2FiaW5ldC9wcm9kdWN0cy9zYXZlUHJvZHVjdCIsCiAgICAgICAgICAgIGRhdGE6ICQucGFyYW0oe2lkOiAkc2NvcGUucHJvZHVjdElkLCBuYW1lOiAkc2NvcGUucHJvZHVjdE5hbWUsIHByaWNlOiAkc2NvcGUucHJvZHVjdFByaWNlfSksCiAgICAgICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9CiAgICAgICAgfSkudGhlbihmdW5jdGlvbihyZXN1bHQpewogICAgICAgICAgICBpZihyZXN1bHQuZGF0YS5zdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAkd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2NhYmluZXQvcHJvZHVjdHMvJzsKICAgICAgICAgICAgfQogICAgICAgIH0pCgogICAgfQoKICAgICRzY29wZS5hZGRQcm9kdWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gVE9ETzog0LTQvtCx0LDQstC40YLRjCDQstCw0LvQuNC00LDRhtC40Y4g0LTQsNC90L3Ri9GFCiAgICAgICAgJGh0dHAoewogICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwKICAgICAgICAgICAgdXJsOiAiaHR0cDovL2NhYmluZXQuY29kZXRvZ2V0aGVyLnJ1L2NhYmluZXQvcHJvZHVjdHMvYWRkUHJvZHVjdCIsCiAgICAgICAgICAgIGRhdGE6ICQucGFyYW0oe3Byb2R1Y3ROYW1lOiAkc2NvcGUubmV3UHJvZHVjdE5hbWUsIHByb2R1Y3RQcmljZTogJHNjb3BlLm5ld1Byb2R1Y3RQcmljZX0pLAogICAgICAgICAgICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfQogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXsKICAgICAgICAgICAgLy8gVE9ETzog0L3QsNC\/0LjRgdCw0YLRjCDQuCDQstGL0LfQstCw0YLRjCDQvNC10YLQvtC0INC\/0L7Qu9GD0YfQtdC90LjRjyDQstGB0LXRhSDQv9GA0L7QtNGD0LrRgtC+0LIKICAgICAgICAgICAgaWYocmVzdWx0LmRhdGEuc3VjY2VzcykgewogICAgICAgICAgICAgICAgJHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0pCgogICAgfQoKICAgICRzY29wZS5kZWxldGVQcm9kdWN0ID0gZnVuY3Rpb24oaWQpIHsKICAgICAgICAkaHR0cCh7CiAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLAogICAgICAgICAgICB1cmw6ICJodHRwOi8vY2FiaW5ldC5jb2RldG9nZXRoZXIucnUvY2FiaW5ldC9wcm9kdWN0cy9kZWxldGVQcm9kdWN0IiwKICAgICAgICAgICAgZGF0YTogJC5wYXJhbSh7aWQ6IGlkfSksCiAgICAgICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9CiAgICAgICAgfSkudGhlbihmdW5jdGlvbihyZXN1bHQpewogICAgICAgICAgICAgICAgJHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9jYWJpbmV0L3Byb2R1Y3RzLyc7CiAgICAgICAgfSk7CiAgICB9Cgp9KTsK&#8221; admin_label=&#8221;\u041a\u043e\u0434 \u0443\u0440\u043e\u043a\u0430&#8221; style=&#8221;docco&#8221; linenums=&#8221;on&#8221; usetabwidth=&#8221;on&#8221; tabwidth=&#8221;4&#8243; _builder_version=&#8221;3.0.106&#8243;]IHZhciBhcHAgPSBhbmd1bGFyLm1vZHVsZSgncHJvZHVjdHMnLCBbIm5nUm91dGUiXSk7CmFwcC5jb25maWcoZnVuY3Rpb24oJHJvdXRlUHJvdmlkZXIsICRsb2NhdGlvblByb3ZpZGVyKXsKICAgICRyb3V0ZVByb3ZpZGVyCiAgICAgICAgLndoZW4oIi86aWQiLCB7CiAgICAgICAgICAgIHRlbXBsYXRlVXJsIDogIi92aWV3cy9wcm9kdWN0LnRwbC5waHAiCiAgICAgICAgfSk7CgogICAgICRsb2NhdGlvblByb3ZpZGVyLmh0bWw1TW9kZSh0cnVlKTsKfSkKCmFwcC5jb250cm9sbGVyKCdwcm9kdWN0c0NvbnRyb2xsZXInLCBmdW5jdGlvbigkc2NvcGUsICRodHRwLCAkd2luZG93KSB7CgogICAgJHNjb3BlLmdldEluZm9CeVByb2R1Y3RJZCA9IGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgJGh0dHAoewogICAgICAgICAgICBtZXRob2Q6ICJHRVQiLAogICAgICAgICAgICB1cmw6ICJodHRwOi8vY2FiaW5ldC5jb2RldG9nZXRoZXIucnUvY2FiaW5ldC9wcm9kdWN0cy9nZXRQcm9kdWN0IiwKICAgICAgICAgICAgcGFyYW1zOiB7aWQ6IGlkfQogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXsKICAgICAgICAgICAgJHNjb3BlLnByb2R1Y3RJZCA9IHJlc3VsdC5kYXRhLmlkOwogICAgICAgICAgICAkc2NvcGUucHJvZHVjdE5hbWUgPSByZXN1bHQuZGF0YS5uYW1lOwogICAgICAgICAgICAkc2NvcGUucHJvZHVjdFByaWNlID0gcmVzdWx0LmRhdGEucHJpY2U7CiAgICAgICAgfSkKICAgIH0KCiAgICAkc2NvcGUuc2F2ZVByb2R1Y3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyBUT0RPOiDQlNC+0LzQsNGI0L3QtdC1INC30LDQtNCw0L3QuNC1IC0g0LTQvtCx0LDQstC40YLRjCDQstCw0LvQuNC00LDRhtC40Y4g0LTQsNC90L3Ri9GFLCDRgNC10LDQu9C40LfQvtCy0LDRgtGMINGD0LTQsNC70LXQvdC40LUg0YLQvtCy0LDRgNCwCgogICAgICAgICRzY29wZS5wcm9kdWN0TmFtZSA9IGFuZ3VsYXIuZWxlbWVudCgiI3Byb2R1Y3ROYW1lIikudmFsKCk7CiAgICAgICAgJHNjb3BlLnByb2R1Y3RQcmljZSA9IGFuZ3VsYXIuZWxlbWVudCgiI3Byb2R1Y3RQcmljZSIpLnZhbCgpOwoKICAgICAgICAkaHR0cCh7CiAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLAogICAgICAgICAgICB1cmw6ICJodHRwOi8vY2FiaW5ldC5jb2RldG9nZXRoZXIucnUvY2FiaW5ldC9wcm9kdWN0cy9zYXZlUHJvZHVjdCIsCiAgICAgICAgICAgIGRhdGE6ICQucGFyYW0oe2lkOiAkc2NvcGUucHJvZHVjdElkLCBuYW1lOiAkc2NvcGUucHJvZHVjdE5hbWUsIHByaWNlOiAkc2NvcGUucHJvZHVjdFByaWNlfSksCiAgICAgICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9CiAgICAgICAgfSkudGhlbihmdW5jdGlvbihyZXN1bHQpewogICAgICAgICAgICBpZihyZXN1bHQuZGF0YS5zdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAkd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2NhYmluZXQvcHJvZHVjdHMvJzsKICAgICAgICAgICAgfQogICAgICAgIH0pCgogICAgfQoKICAgICRzY29wZS5hZGRQcm9kdWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gVE9ETzog0LTQvtCx0LDQstC40YLRjCDQstCw0LvQuNC00LDRhtC40Y4g0LTQsNC90L3Ri9GFCiAgICAgICAgJGh0dHAoewogICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwKICAgICAgICAgICAgdXJsOiAiaHR0cDovL2NhYmluZXQuY29kZXRvZ2V0aGVyLnJ1L2NhYmluZXQvcHJvZHVjdHMvYWRkUHJvZHVjdCIsCiAgICAgICAgICAgIGRhdGE6ICQucGFyYW0oe3Byb2R1Y3ROYW1lOiAkc2NvcGUubmV3UHJvZHVjdE5hbWUsIHByb2R1Y3RQcmljZTogJHNjb3BlLm5ld1Byb2R1Y3RQcmljZX0pLAogICAgICAgICAgICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfQogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXsKICAgICAgICAgICAgLy8gVE9ETzog0L3QsNC\/0LjRgdCw0YLRjCDQuCDQstGL0LfQstCw0YLRjCDQvNC10YLQvtC0INC\/0L7Qu9GD0YfQtdC90LjRjyDQstGB0LXRhSDQv9GA0L7QtNGD0LrRgtC+0LIKICAgICAgICAgICAgaWYocmVzdWx0LmRhdGEuc3VjY2VzcykgewogICAgICAgICAgICAgICAgJHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0pCgogICAgfQoKICAgICRzY29wZS5kZWxldGVQcm9kdWN0ID0gZnVuY3Rpb24oaWQpIHsKICAgICAgICAkaHR0cCh7CiAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLAogICAgICAgICAgICB1cmw6ICJodHRwOi8vY2FiaW5ldC5jb2RldG9nZXRoZXIucnUvY2FiaW5ldC9wcm9kdWN0cy9kZWxldGVQcm9kdWN0IiwKICAgICAgICAgICAgZGF0YTogJC5wYXJhbSh7aWQ6IGlkfSksCiAgICAgICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9CiAgICAgICAgfSkudGhlbihmdW5jdGlvbihyZXN1bHQpewogICAgICAgICAgICAgICAgJHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9jYWJpbmV0L3Byb2R1Y3RzLyc7CiAgICAgICAgfSk7CiAgICB9Cgp9KTsK[\/et_pb_dmb_code_snippet][et_pb_dmb_code_snippet title=&#8221;Code lesson (ProductsController.php)&#8221; code=&#8221;PD9waHAKCmNsYXNzIFByb2R1Y3RzQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIgewoKICAgIHByaXZhdGUgJHBhZ2VUcGwgPSAiL3ZpZXdzL3Byb2R1Y3RzLnRwbC5waHAiOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKICAgICAgICAkdGhpcy0+bW9kZWwgPSBuZXcgUHJvZHVjdHNNb2RlbCgpOwogICAgICAgICR0aGlzLT52aWV3ID0gbmV3IFZpZXcoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5kZXgoKSB7CiAgICAgICAgaWYoISRfU0VTU0lPTlsndXNlciddKSB7CiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246IC8iKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnBhZ2VEYXRhWydwcm9kdWN0cyddID0gJHRoaXMtPm1vZGVsLT5nZXRBbGxQcm9kdWN0cygpOwogICAgICAgICR0aGlzLT5wYWdlRGF0YVsndGl0bGUnXSA9ICLQotC+0LLQsNGA0YsiOwogICAgICAgICR0aGlzLT52aWV3LT5yZW5kZXIoJHRoaXMtPnBhZ2VUcGwsICR0aGlzLT5wYWdlRGF0YSk7CgogICAgICAgIGlmKCRfRklMRVMpIHsKICAgICAgICAgICAgaWYoJF9GSUxFU1snY3N2J11bJ3R5cGUnXSAhPSAndGV4dC9jc3YnIHx8ICRfRklMRVNbJ2NzdiddWyd0eXBlJ10gPT0gJycpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5wYWdlRGF0YVsnZXJyb3JzJ10gPSAi0J7RiNC40LHQutCwISDQktC+0LfQvNC+0LbQvdC+INC00LDQvdC90YvQuSDRhNCw0LnQuyDQuNC80LXQtdGCINC90LXQutC+0YDRgNC10LrRgtC90YvQuSDRhNC+0YDQvNCw0YIiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYobW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2NzdiddWyd0bXBfbmFtZSddLFVQTE9BRF9GT0xERVIuJF9GSUxFU1snY3N2J11bJ25hbWUnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IGZvcGVuKFVQTE9BRF9GT0xERVIuJF9GSUxFU1snY3N2J11bJ25hbWUnXSwgInIiKTsKICAgICAgICAgICAgICAgICAgICAkcm93ID0gMTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSgkZGF0YSA9IGZnZXRjc3YoJGZpbGUsIDIwMCwgIjsiKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZigkcm93ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3crKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1vZGVsLT5hZGRGcm9tQ1NWKCRkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZpbGUpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5tb2RlbC0+Z2V0QWxsUHJvZHVjdHMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvZHVjdCgpIHsKICAgICAgICBpZighJF9TRVNTSU9OWyd1c2VyJ10pIHsKICAgICAgICAgICAgaGVhZGVyKCJMb2NhdGlvbjogLyIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZighaXNzZXQoJF9HRVRbJ2lkJ10pKSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IGZhbHNlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHByb2R1Y3RJZCA9ICRfR0VUWydpZCddOwogICAgICAgICAgICAkcHJvZHVjdEluZm8gPSBqc29uX2VuY29kZSgkdGhpcy0+bW9kZWwtPmdldFByb2R1Y3RCeUlkKCRwcm9kdWN0SWQpKTsKICAgICAgICAgICAgZWNobyAkcHJvZHVjdEluZm87CiAgICAgICAgfQoKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZVByb2R1Y3QoKSB7CiAgICAgICAgaWYoISRfU0VTU0lPTlsndXNlciddKSB7CiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246IC8iKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYoIWlzc2V0KCRfUE9TVFsnaWQnXSkgfHwgdHJpbSgkX1BPU1RbJ25hbWUnXSkgPT0gJycgfHwgdHJpbSgkX1BPU1RbJ3ByaWNlJ10pID09ICcnKSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IGZhbHNlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHByb2R1Y3RJZCA9ICRfUE9TVFsnaWQnXTsKICAgICAgICAgICAgJHByb2R1Y3ROYW1lID0gdHJpbSgkX1BPU1RbJ25hbWUnXSk7CiAgICAgICAgICAgICRwcm9kdWN0UHJpY2UgPSB0cmltKCRfUE9TVFsncHJpY2UnXSk7CgogICAgICAgICAgICBpZigkdGhpcy0+bW9kZWwtPnNhdmVQcm9kdWN0SW5mbygkcHJvZHVjdElkLCAkcHJvZHVjdE5hbWUsICRwcm9kdWN0UHJpY2UpKSB7CiAgICAgICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCJzdWNjZXNzIiA9PiB0cnVlKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCJzdWNjZXNzIiA9PiBmYWxzZSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRQcm9kdWN0KCkgewogICAgICAgIGlmKCEkX1NFU1NJT05bJ3VzZXInXSkgewogICAgICAgICAgICBoZWFkZXIoIkxvY2F0aW9uOiAvIik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmKGVtcHR5KCRfUE9TVCkgfHwgdHJpbSgkX1BPU1RbJ3Byb2R1Y3ROYW1lJ10pID09ICcnIHx8IHRyaW0oJF9QT1NUWydwcm9kdWN0UHJpY2UnXSkgPT0gJycpIHsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgic3VjY2VzcyIgPT4gZmFsc2UpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcHJvZHVjdE5hbWUgPSB0cmltKCRfUE9TVFsncHJvZHVjdE5hbWUnXSk7CiAgICAgICAgICAgICRwcm9kdWN0UHJpY2UgPSB0cmltKCRfUE9TVFsncHJvZHVjdFByaWNlJ10pOwoKICAgICAgICAgICAgaWYoJHRoaXMtPm1vZGVsLT5hZGRQcm9kdWN0KCRwcm9kdWN0TmFtZSwgJHByb2R1Y3RQcmljZSkpIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IHRydWUpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IGZhbHNlKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZVByb2R1Y3QoKSB7CiAgICAgICAgaWYoISRfU0VTU0lPTlsndXNlciddKSB7CiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246IC8iKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYoZW1wdHkoJF9QT1NUKSB8fCAhaXNzZXQoJF9QT1NUWydpZCddKSkgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCJzdWNjZXNzIiA9PiBmYWxzZSkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRwcm9kdWN0SWQgPSAkX1BPU1RbJ2lkJ107CiAgICAgICAgICAgIGlmKCR0aGlzLT5tb2RlbC0+ZGVsZXRlUHJvZHVjdCgkcHJvZHVjdElkKSkgewogICAgICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgic3VjY2VzcyIgPT4gdHJ1ZSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgic3VjY2VzcyIgPT4gZmFsc2UpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0KCiA\/Pgo=&#8221; admin_label=&#8221;\u041a\u043e\u0434 \u0443\u0440\u043e\u043a\u0430&#8221; style=&#8221;docco&#8221; linenums=&#8221;on&#8221; usetabwidth=&#8221;on&#8221; tabwidth=&#8221;4&#8243; _builder_version=&#8221;3.0.106&#8243; hover_enabled=&#8221;0&#8243;]PD9waHAKCmNsYXNzIFByb2R1Y3RzQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIgewoKICAgIHByaXZhdGUgJHBhZ2VUcGwgPSAiL3ZpZXdzL3Byb2R1Y3RzLnRwbC5waHAiOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKICAgICAgICAkdGhpcy0+bW9kZWwgPSBuZXcgUHJvZHVjdHNNb2RlbCgpOwogICAgICAgICR0aGlzLT52aWV3ID0gbmV3IFZpZXcoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5kZXgoKSB7CiAgICAgICAgaWYoISRfU0VTU0lPTlsndXNlciddKSB7CiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246IC8iKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnBhZ2VEYXRhWydwcm9kdWN0cyddID0gJHRoaXMtPm1vZGVsLT5nZXRBbGxQcm9kdWN0cygpOwogICAgICAgICR0aGlzLT5wYWdlRGF0YVsndGl0bGUnXSA9ICLQotC+0LLQsNGA0YsiOwogICAgICAgICR0aGlzLT52aWV3LT5yZW5kZXIoJHRoaXMtPnBhZ2VUcGwsICR0aGlzLT5wYWdlRGF0YSk7CgogICAgICAgIGlmKCRfRklMRVMpIHsKICAgICAgICAgICAgaWYoJF9GSUxFU1snY3N2J11bJ3R5cGUnXSAhPSAndGV4dC9jc3YnIHx8ICRfRklMRVNbJ2NzdiddWyd0eXBlJ10gPT0gJycpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5wYWdlRGF0YVsnZXJyb3JzJ10gPSAi0J7RiNC40LHQutCwISDQktC+0LfQvNC+0LbQvdC+INC00LDQvdC90YvQuSDRhNCw0LnQuyDQuNC80LXQtdGCINC90LXQutC+0YDRgNC10LrRgtC90YvQuSDRhNC+0YDQvNCw0YIiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYobW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2NzdiddWyd0bXBfbmFtZSddLFVQTE9BRF9GT0xERVIuJF9GSUxFU1snY3N2J11bJ25hbWUnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IGZvcGVuKFVQTE9BRF9GT0xERVIuJF9GSUxFU1snY3N2J11bJ25hbWUnXSwgInIiKTsKICAgICAgICAgICAgICAgICAgICAkcm93ID0gMTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSgkZGF0YSA9IGZnZXRjc3YoJGZpbGUsIDIwMCwgIjsiKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZigkcm93ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3crKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1vZGVsLT5hZGRGcm9tQ1NWKCRkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZpbGUpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5tb2RlbC0+Z2V0QWxsUHJvZHVjdHMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvZHVjdCgpIHsKICAgICAgICBpZighJF9TRVNTSU9OWyd1c2VyJ10pIHsKICAgICAgICAgICAgaGVhZGVyKCJMb2NhdGlvbjogLyIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZighaXNzZXQoJF9HRVRbJ2lkJ10pKSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IGZhbHNlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHByb2R1Y3RJZCA9ICRfR0VUWydpZCddOwogICAgICAgICAgICAkcHJvZHVjdEluZm8gPSBqc29uX2VuY29kZSgkdGhpcy0+bW9kZWwtPmdldFByb2R1Y3RCeUlkKCRwcm9kdWN0SWQpKTsKICAgICAgICAgICAgZWNobyAkcHJvZHVjdEluZm87CiAgICAgICAgfQoKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZVByb2R1Y3QoKSB7CiAgICAgICAgaWYoISRfU0VTU0lPTlsndXNlciddKSB7CiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246IC8iKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYoIWlzc2V0KCRfUE9TVFsnaWQnXSkgfHwgdHJpbSgkX1BPU1RbJ25hbWUnXSkgPT0gJycgfHwgdHJpbSgkX1BPU1RbJ3ByaWNlJ10pID09ICcnKSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IGZhbHNlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHByb2R1Y3RJZCA9ICRfUE9TVFsnaWQnXTsKICAgICAgICAgICAgJHByb2R1Y3ROYW1lID0gdHJpbSgkX1BPU1RbJ25hbWUnXSk7CiAgICAgICAgICAgICRwcm9kdWN0UHJpY2UgPSB0cmltKCRfUE9TVFsncHJpY2UnXSk7CgogICAgICAgICAgICBpZigkdGhpcy0+bW9kZWwtPnNhdmVQcm9kdWN0SW5mbygkcHJvZHVjdElkLCAkcHJvZHVjdE5hbWUsICRwcm9kdWN0UHJpY2UpKSB7CiAgICAgICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCJzdWNjZXNzIiA9PiB0cnVlKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCJzdWNjZXNzIiA9PiBmYWxzZSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRQcm9kdWN0KCkgewogICAgICAgIGlmKCEkX1NFU1NJT05bJ3VzZXInXSkgewogICAgICAgICAgICBoZWFkZXIoIkxvY2F0aW9uOiAvIik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmKGVtcHR5KCRfUE9TVCkgfHwgdHJpbSgkX1BPU1RbJ3Byb2R1Y3ROYW1lJ10pID09ICcnIHx8IHRyaW0oJF9QT1NUWydwcm9kdWN0UHJpY2UnXSkgPT0gJycpIHsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgic3VjY2VzcyIgPT4gZmFsc2UpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcHJvZHVjdE5hbWUgPSB0cmltKCRfUE9TVFsncHJvZHVjdE5hbWUnXSk7CiAgICAgICAgICAgICRwcm9kdWN0UHJpY2UgPSB0cmltKCRfUE9TVFsncHJvZHVjdFByaWNlJ10pOwoKICAgICAgICAgICAgaWYoJHRoaXMtPm1vZGVsLT5hZGRQcm9kdWN0KCRwcm9kdWN0TmFtZSwgJHByb2R1Y3RQcmljZSkpIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IHRydWUpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IGZhbHNlKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZVByb2R1Y3QoKSB7CiAgICAgICAgaWYoISRfU0VTU0lPTlsndXNlciddKSB7CiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246IC8iKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYoZW1wdHkoJF9QT1NUKSB8fCAhaXNzZXQoJF9QT1NUWydpZCddKSkgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCJzdWNjZXNzIiA9PiBmYWxzZSkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRwcm9kdWN0SWQgPSAkX1BPU1RbJ2lkJ107CiAgICAgICAgICAgIGlmKCR0aGlzLT5tb2RlbC0+ZGVsZXRlUHJvZHVjdCgkcHJvZHVjdElkKSkgewogICAgICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgic3VjY2VzcyIgPT4gdHJ1ZSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgic3VjY2VzcyIgPT4gZmFsc2UpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0KCiA\/Pgo=[\/et_pb_dmb_code_snippet][et_pb_dmb_code_snippet title=&#8221;Code lesson (ProductsModel.php)&#8221; code=&#8221;PD9waHAKCmNsYXNzIFByb2R1Y3RzTW9kZWwgZXh0ZW5kcyBNb2RlbCB7CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsbFByb2R1Y3RzKCkgewogICAgICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgICAgICRzcWwgPSAiU0VMRUNUICogRlJPTSBwcm9kdWN0cyI7CiAgICAgICAgJHN0bXQgPSAkdGhpcy0+ZGItPnByZXBhcmUoJHNxbCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICB3aGlsZSgkcm93ID0gJHN0bXQtPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpKSB7CiAgICAgICAgICAgICRyZXN1bHRbJHJvd1snaWQnXV0gPSAkcm93OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkRnJvbUNTVigkZGF0YSkgewogICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gcHJvZHVjdHMobmFtZSwgcHJpY2UpIFZBTFVFUyg6bmFtZSwgOnByaWNlKSI7CgogICAgICAgICRzdG10ID0gJHRoaXMtPmRiLT5wcmVwYXJlKCRzcWwpOwogICAgICAgICRzdG10LT5iaW5kVmFsdWUoIjpuYW1lIiwgJGRhdGFbMF0sIFBETzo6UEFSQU1fU1RSKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6cHJpY2UiLCAkZGF0YVsxXSwgUERPOjpQQVJBTV9JTlQpOwogICAgICAgICRzdG10LT5leGVjdXRlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFByb2R1Y3RCeUlkKCRpZCkgewogICAgICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgICAgICRzcWwgPSAiU0VMRUNUICogRlJPTSBwcm9kdWN0cyBXSEVSRSBpZCA9IDppZCI7CiAgICAgICAgJHN0bXQgPSAkdGhpcy0+ZGItPnByZXBhcmUoJHNxbCk7CiAgICAgICAgJHN0bXQtPmJpbmRWYWx1ZSgiOmlkIiwgJGlkLCBQRE86OlBBUkFNX0lOVCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICAkcmVzdWx0ID0gJHN0bXQtPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpOwogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlUHJvZHVjdEluZm8oJGlkLCAkbmFtZSwgJHByaWNlKSB7CiAgICAgICAgJHNxbCA9ICJVUERBVEUgcHJvZHVjdHMKICAgICAgICAgICAgICAgIFNFVCBwcmljZSA9IDpwcmljZSwgbmFtZSA9IDpuYW1lCiAgICAgICAgICAgICAgICBXSEVSRSBpZCA9IDppZAogICAgICAgICAgICAgICAgIjsKICAgICAgICAkc3RtdCA9ICR0aGlzLT5kYi0+cHJlcGFyZSgkc3FsKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6cHJpY2UiLCAkcHJpY2UsIFBETzo6UEFSQU1fSU5UKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6bmFtZSIsICRuYW1lLCBQRE86OlBBUkFNX1NUUik7CiAgICAgICAgJHN0bXQtPmJpbmRWYWx1ZSgiOmlkIiwgJGlkLCBQRE86OlBBUkFNX0lOVCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCgogICAgcHVibGljIGZ1bmN0aW9uIGFkZFByb2R1Y3QoJHByb2R1Y3ROYW1lLCAkcHJvZHVjdFByaWNlKSB7CiAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyBwcm9kdWN0cyhuYW1lLCBwcmljZSkKICAgICAgICAgICAgICAgIFZBTFVFUyg6cHJvZHVjdE5hbWUsIDpwcm9kdWN0UHJpY2UpCiAgICAgICAgICAgICAgICAiOwogICAgICAgICRzdG10ID0gJHRoaXMtPmRiLT5wcmVwYXJlKCRzcWwpOwogICAgICAgICRzdG10LT5iaW5kVmFsdWUoIjpwcm9kdWN0TmFtZSIsICRwcm9kdWN0TmFtZSwgUERPOjpQQVJBTV9TVFIpOwogICAgICAgICRzdG10LT5iaW5kVmFsdWUoIjpwcm9kdWN0UHJpY2UiLCAkcHJvZHVjdFByaWNlLCBQRE86OlBBUkFNX0lOVCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlUHJvZHVjdCgkaWQpIHsKICAgICAgICAkc3FsID0gIkRFTEVURSBGUk9NIHByb2R1Y3RzIFdIRVJFIGlkID0gOmlkIjsKICAgICAgICAkc3RtdCA9ICR0aGlzLT5kYi0+cHJlcGFyZSgkc3FsKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6aWQiLCAkaWQsIFBETzo6UEFSQU1fSU5UKTsKICAgICAgICAkc3RtdC0+ZXhlY3V0ZSgpOwogICAgICAgICRjb3VudCA9ICRzdG10LT5yb3dDb3VudCgpOwogICAgICAgIGlmKCRjb3VudCA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICB9Cgp9CgogPz4K&#8221; admin_label=&#8221;\u041a\u043e\u0434 \u0443\u0440\u043e\u043a\u0430&#8221; style=&#8221;docco&#8221; linenums=&#8221;on&#8221; usetabwidth=&#8221;on&#8221; tabwidth=&#8221;4&#8243; _builder_version=&#8221;3.0.106&#8243;]PD9waHAKCmNsYXNzIFByb2R1Y3RzTW9kZWwgZXh0ZW5kcyBNb2RlbCB7CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsbFByb2R1Y3RzKCkgewogICAgICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgICAgICRzcWwgPSAiU0VMRUNUICogRlJPTSBwcm9kdWN0cyI7CiAgICAgICAgJHN0bXQgPSAkdGhpcy0+ZGItPnByZXBhcmUoJHNxbCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICB3aGlsZSgkcm93ID0gJHN0bXQtPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpKSB7CiAgICAgICAgICAgICRyZXN1bHRbJHJvd1snaWQnXV0gPSAkcm93OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkRnJvbUNTVigkZGF0YSkgewogICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gcHJvZHVjdHMobmFtZSwgcHJpY2UpIFZBTFVFUyg6bmFtZSwgOnByaWNlKSI7CgogICAgICAgICRzdG10ID0gJHRoaXMtPmRiLT5wcmVwYXJlKCRzcWwpOwogICAgICAgICRzdG10LT5iaW5kVmFsdWUoIjpuYW1lIiwgJGRhdGFbMF0sIFBETzo6UEFSQU1fU1RSKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6cHJpY2UiLCAkZGF0YVsxXSwgUERPOjpQQVJBTV9JTlQpOwogICAgICAgICRzdG10LT5leGVjdXRlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFByb2R1Y3RCeUlkKCRpZCkgewogICAgICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgICAgICRzcWwgPSAiU0VMRUNUICogRlJPTSBwcm9kdWN0cyBXSEVSRSBpZCA9IDppZCI7CiAgICAgICAgJHN0bXQgPSAkdGhpcy0+ZGItPnByZXBhcmUoJHNxbCk7CiAgICAgICAgJHN0bXQtPmJpbmRWYWx1ZSgiOmlkIiwgJGlkLCBQRE86OlBBUkFNX0lOVCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICAkcmVzdWx0ID0gJHN0bXQtPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpOwogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlUHJvZHVjdEluZm8oJGlkLCAkbmFtZSwgJHByaWNlKSB7CiAgICAgICAgJHNxbCA9ICJVUERBVEUgcHJvZHVjdHMKICAgICAgICAgICAgICAgIFNFVCBwcmljZSA9IDpwcmljZSwgbmFtZSA9IDpuYW1lCiAgICAgICAgICAgICAgICBXSEVSRSBpZCA9IDppZAogICAgICAgICAgICAgICAgIjsKICAgICAgICAkc3RtdCA9ICR0aGlzLT5kYi0+cHJlcGFyZSgkc3FsKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6cHJpY2UiLCAkcHJpY2UsIFBETzo6UEFSQU1fSU5UKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6bmFtZSIsICRuYW1lLCBQRE86OlBBUkFNX1NUUik7CiAgICAgICAgJHN0bXQtPmJpbmRWYWx1ZSgiOmlkIiwgJGlkLCBQRE86OlBBUkFNX0lOVCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCgogICAgcHVibGljIGZ1bmN0aW9uIGFkZFByb2R1Y3QoJHByb2R1Y3ROYW1lLCAkcHJvZHVjdFByaWNlKSB7CiAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyBwcm9kdWN0cyhuYW1lLCBwcmljZSkKICAgICAgICAgICAgICAgIFZBTFVFUyg6cHJvZHVjdE5hbWUsIDpwcm9kdWN0UHJpY2UpCiAgICAgICAgICAgICAgICAiOwogICAgICAgICRzdG10ID0gJHRoaXMtPmRiLT5wcmVwYXJlKCRzcWwpOwogICAgICAgICRzdG10LT5iaW5kVmFsdWUoIjpwcm9kdWN0TmFtZSIsICRwcm9kdWN0TmFtZSwgUERPOjpQQVJBTV9TVFIpOwogICAgICAgICRzdG10LT5iaW5kVmFsdWUoIjpwcm9kdWN0UHJpY2UiLCAkcHJvZHVjdFByaWNlLCBQRE86OlBBUkFNX0lOVCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlUHJvZHVjdCgkaWQpIHsKICAgICAgICAkc3FsID0gIkRFTEVURSBGUk9NIHByb2R1Y3RzIFdIRVJFIGlkID0gOmlkIjsKICAgICAgICAkc3RtdCA9ICR0aGlzLT5kYi0+cHJlcGFyZSgkc3FsKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6aWQiLCAkaWQsIFBETzo6UEFSQU1fSU5UKTsKICAgICAgICAkc3RtdC0+ZXhlY3V0ZSgpOwogICAgICAgICRjb3VudCA9ICRzdG10LT5yb3dDb3VudCgpOwogICAgICAgIGlmKCRjb3VudCA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICB9Cgp9CgogPz4K[\/et_pb_dmb_code_snippet][et_pb_comments _builder_version=&#8221;4.4.3&#8243; custom_margin=&#8221;30px||||false|false&#8221; hover_enabled=&#8221;0&#8243;][\/et_pb_comments][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In last lesson we began using angular js in our app. Today we continue to write angular code &#8211; we will make edit and delete functions in our app. For the server connection we use $http build-in angular service. In homework I suggest you to write add product function by yourself. PGZvcm0gY2xhc3M9ImZvcm0taG9yaXpvbnRhbCIgbmFtZT0icHJvZHVjdEluZm8iIGRhdGEtbmctc3VibWl0PSJzYXZlUHJvZHVjdCgpIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwcm9kdWN0SWQiIGRhdGEtbmctbW9kZWw9InByb2R1Y3RJZCI+CiAgICA8bGVnZW5kPtCg0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40LUg0YLQvtCy0LDRgNCwPC9sZWdlbmQ+CiAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICA8bGFiZWwgZm9yPSJwcm9kdWN0TmFtZSIgY2xhc3M9ImNvbC1zbS0zIj7QndCw0LjQvNC10L3QvtCy0LDQvdC40LUg0YLQvtCy0LDRgNCwPC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBkYXRhLW5nLW1vZGVsPSJwcm9kdWN0TmFtZSIgaWQ9InByb2R1Y3ROYW1lIiBjbGFzcz0iZm9ybS1jb250cm9sIj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgPGxhYmVsIGZvcj0icHJvZHVjdFByaWNlIiBjbGFzcz0iY29sLXNtLTMiPtCh0YLQvtC40LzQvtGB0YLRjCDRgtC+0LLQsNGA0LA8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGRhdGEtbmctbW9kZWw9InByb2R1Y3RQcmljZSIgaWQ9InByb2R1Y3RQcmljZSIgY2xhc3M9ImZvcm0tY29udHJvbCI+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS1vZmZzZXQtMyBjb2wtc20tOSI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGVmYXVsdCI+0KHQvtGF0YDQsNC90LjRgtGMPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tZGFuZ2VyIiB0eXBlPSJidXR0b24iIGRhdGEtbmctY2xpY2s9ImRlbGV0ZVByb2R1Y3QocHJvZHVjdElkKSI+0KPQtNCw0LvQuNGC0Yw8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Zvcm0+Cg==IHZhciBhcHAgPSBhbmd1bGFyLm1vZHVsZSgncHJvZHVjdHMnLCBbIm5nUm91dGUiXSk7CmFwcC5jb25maWcoZnVuY3Rpb24oJHJvdXRlUHJvdmlkZXIsICRsb2NhdGlvblByb3ZpZGVyKXsKICAgICRyb3V0ZVByb3ZpZGVyCiAgICAgICAgLndoZW4oIi86aWQiLCB7CiAgICAgICAgICAgIHRlbXBsYXRlVXJsIDogIi92aWV3cy9wcm9kdWN0LnRwbC5waHAiCiAgICAgICAgfSk7CgogICAgICRsb2NhdGlvblByb3ZpZGVyLmh0bWw1TW9kZSh0cnVlKTsKfSkKCmFwcC5jb250cm9sbGVyKCdwcm9kdWN0c0NvbnRyb2xsZXInLCBmdW5jdGlvbigkc2NvcGUsICRodHRwLCAkd2luZG93KSB7CgogICAgJHNjb3BlLmdldEluZm9CeVByb2R1Y3RJZCA9IGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgJGh0dHAoewogICAgICAgICAgICBtZXRob2Q6ICJHRVQiLAogICAgICAgICAgICB1cmw6ICJodHRwOi8vY2FiaW5ldC5jb2RldG9nZXRoZXIucnUvY2FiaW5ldC9wcm9kdWN0cy9nZXRQcm9kdWN0IiwKICAgICAgICAgICAgcGFyYW1zOiB7aWQ6IGlkfQogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXsKICAgICAgICAgICAgJHNjb3BlLnByb2R1Y3RJZCA9IHJlc3VsdC5kYXRhLmlkOwogICAgICAgICAgICAkc2NvcGUucHJvZHVjdE5hbWUgPSByZXN1bHQuZGF0YS5uYW1lOwogICAgICAgICAgICAkc2NvcGUucHJvZHVjdFByaWNlID0gcmVzdWx0LmRhdGEucHJpY2U7CiAgICAgICAgfSkKICAgIH0KCiAgICAkc2NvcGUuc2F2ZVByb2R1Y3QgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyBUT0RPOiDQlNC+0LzQsNGI0L3QtdC1INC30LDQtNCw0L3QuNC1IC0g0LTQvtCx0LDQstC40YLRjCDQstCw0LvQuNC00LDRhtC40Y4g0LTQsNC90L3Ri9GFLCDRgNC10LDQu9C40LfQvtCy0LDRgtGMINGD0LTQsNC70LXQvdC40LUg0YLQvtCy0LDRgNCwCgogICAgICAgICRzY29wZS5wcm9kdWN0TmFtZSA9IGFuZ3VsYXIuZWxlbWVudCgiI3Byb2R1Y3ROYW1lIikudmFsKCk7CiAgICAgICAgJHNjb3BlLnByb2R1Y3RQcmljZSA9IGFuZ3VsYXIuZWxlbWVudCgiI3Byb2R1Y3RQcmljZSIpLnZhbCgpOwoKICAgICAgICAkaHR0cCh7CiAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLAogICAgICAgICAgICB1cmw6ICJodHRwOi8vY2FiaW5ldC5jb2RldG9nZXRoZXIucnUvY2FiaW5ldC9wcm9kdWN0cy9zYXZlUHJvZHVjdCIsCiAgICAgICAgICAgIGRhdGE6ICQucGFyYW0oe2lkOiAkc2NvcGUucHJvZHVjdElkLCBuYW1lOiAkc2NvcGUucHJvZHVjdE5hbWUsIHByaWNlOiAkc2NvcGUucHJvZHVjdFByaWNlfSksCiAgICAgICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9CiAgICAgICAgfSkudGhlbihmdW5jdGlvbihyZXN1bHQpewogICAgICAgICAgICBpZihyZXN1bHQuZGF0YS5zdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAkd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2NhYmluZXQvcHJvZHVjdHMvJzsKICAgICAgICAgICAgfQogICAgICAgIH0pCgogICAgfQoKICAgICRzY29wZS5hZGRQcm9kdWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gVE9ETzog0LTQvtCx0LDQstC40YLRjCDQstCw0LvQuNC00LDRhtC40Y4g0LTQsNC90L3Ri9GFCiAgICAgICAgJGh0dHAoewogICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwKICAgICAgICAgICAgdXJsOiAiaHR0cDovL2NhYmluZXQuY29kZXRvZ2V0aGVyLnJ1L2NhYmluZXQvcHJvZHVjdHMvYWRkUHJvZHVjdCIsCiAgICAgICAgICAgIGRhdGE6ICQucGFyYW0oe3Byb2R1Y3ROYW1lOiAkc2NvcGUubmV3UHJvZHVjdE5hbWUsIHByb2R1Y3RQcmljZTogJHNjb3BlLm5ld1Byb2R1Y3RQcmljZX0pLAogICAgICAgICAgICBoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfQogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXsKICAgICAgICAgICAgLy8gVE9ETzog0L3QsNC\/0LjRgdCw0YLRjCDQuCDQstGL0LfQstCw0YLRjCDQvNC10YLQvtC0INC\/0L7Qu9GD0YfQtdC90LjRjyDQstGB0LXRhSDQv9GA0L7QtNGD0LrRgtC+0LIKICAgICAgICAgICAgaWYocmVzdWx0LmRhdGEuc3VjY2VzcykgewogICAgICAgICAgICAgICAgJHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0pCgogICAgfQoKICAgICRzY29wZS5kZWxldGVQcm9kdWN0ID0gZnVuY3Rpb24oaWQpIHsKICAgICAgICAkaHR0cCh7CiAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLAogICAgICAgICAgICB1cmw6ICJodHRwOi8vY2FiaW5ldC5jb2RldG9nZXRoZXIucnUvY2FiaW5ldC9wcm9kdWN0cy9kZWxldGVQcm9kdWN0IiwKICAgICAgICAgICAgZGF0YTogJC5wYXJhbSh7aWQ6IGlkfSksCiAgICAgICAgICAgIGhlYWRlcnM6IHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9CiAgICAgICAgfSkudGhlbihmdW5jdGlvbihyZXN1bHQpewogICAgICAgICAgICAgICAgJHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9jYWJpbmV0L3Byb2R1Y3RzLyc7CiAgICAgICAgfSk7CiAgICB9Cgp9KTsKPD9waHAKCmNsYXNzIFByb2R1Y3RzQ29udHJvbGxlciBleHRlbmRzIENvbnRyb2xsZXIgewoKICAgIHByaXZhdGUgJHBhZ2VUcGwgPSAiL3ZpZXdzL3Byb2R1Y3RzLnRwbC5waHAiOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKICAgICAgICAkdGhpcy0+bW9kZWwgPSBuZXcgUHJvZHVjdHNNb2RlbCgpOwogICAgICAgICR0aGlzLT52aWV3ID0gbmV3IFZpZXcoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5kZXgoKSB7CiAgICAgICAgaWYoISRfU0VTU0lPTlsndXNlciddKSB7CiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246IC8iKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnBhZ2VEYXRhWydwcm9kdWN0cyddID0gJHRoaXMtPm1vZGVsLT5nZXRBbGxQcm9kdWN0cygpOwogICAgICAgICR0aGlzLT5wYWdlRGF0YVsndGl0bGUnXSA9ICLQotC+0LLQsNGA0YsiOwogICAgICAgICR0aGlzLT52aWV3LT5yZW5kZXIoJHRoaXMtPnBhZ2VUcGwsICR0aGlzLT5wYWdlRGF0YSk7CgogICAgICAgIGlmKCRfRklMRVMpIHsKICAgICAgICAgICAgaWYoJF9GSUxFU1snY3N2J11bJ3R5cGUnXSAhPSAndGV4dC9jc3YnIHx8ICRfRklMRVNbJ2NzdiddWyd0eXBlJ10gPT0gJycpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5wYWdlRGF0YVsnZXJyb3JzJ10gPSAi0J7RiNC40LHQutCwISDQktC+0LfQvNC+0LbQvdC+INC00LDQvdC90YvQuSDRhNCw0LnQuyDQuNC80LXQtdGCINC90LXQutC+0YDRgNC10LrRgtC90YvQuSDRhNC+0YDQvNCw0YIiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYobW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2NzdiddWyd0bXBfbmFtZSddLFVQTE9BRF9GT0xERVIuJF9GSUxFU1snY3N2J11bJ25hbWUnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IGZvcGVuKFVQTE9BRF9GT0xERVIuJF9GSUxFU1snY3N2J11bJ25hbWUnXSwgInIiKTsKICAgICAgICAgICAgICAgICAgICAkcm93ID0gMTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSgkZGF0YSA9IGZnZXRjc3YoJGZpbGUsIDIwMCwgIjsiKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZigkcm93ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3crKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1vZGVsLT5hZGRGcm9tQ1NWKCRkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZpbGUpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5tb2RlbC0+Z2V0QWxsUHJvZHVjdHMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvZHVjdCgpIHsKICAgICAgICBpZighJF9TRVNTSU9OWyd1c2VyJ10pIHsKICAgICAgICAgICAgaGVhZGVyKCJMb2NhdGlvbjogLyIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZighaXNzZXQoJF9HRVRbJ2lkJ10pKSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IGZhbHNlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHByb2R1Y3RJZCA9ICRfR0VUWydpZCddOwogICAgICAgICAgICAkcHJvZHVjdEluZm8gPSBqc29uX2VuY29kZSgkdGhpcy0+bW9kZWwtPmdldFByb2R1Y3RCeUlkKCRwcm9kdWN0SWQpKTsKICAgICAgICAgICAgZWNobyAkcHJvZHVjdEluZm87CiAgICAgICAgfQoKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZVByb2R1Y3QoKSB7CiAgICAgICAgaWYoISRfU0VTU0lPTlsndXNlciddKSB7CiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246IC8iKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYoIWlzc2V0KCRfUE9TVFsnaWQnXSkgfHwgdHJpbSgkX1BPU1RbJ25hbWUnXSkgPT0gJycgfHwgdHJpbSgkX1BPU1RbJ3ByaWNlJ10pID09ICcnKSB7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IGZhbHNlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHByb2R1Y3RJZCA9ICRfUE9TVFsnaWQnXTsKICAgICAgICAgICAgJHByb2R1Y3ROYW1lID0gdHJpbSgkX1BPU1RbJ25hbWUnXSk7CiAgICAgICAgICAgICRwcm9kdWN0UHJpY2UgPSB0cmltKCRfUE9TVFsncHJpY2UnXSk7CgogICAgICAgICAgICBpZigkdGhpcy0+bW9kZWwtPnNhdmVQcm9kdWN0SW5mbygkcHJvZHVjdElkLCAkcHJvZHVjdE5hbWUsICRwcm9kdWN0UHJpY2UpKSB7CiAgICAgICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCJzdWNjZXNzIiA9PiB0cnVlKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCJzdWNjZXNzIiA9PiBmYWxzZSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRQcm9kdWN0KCkgewogICAgICAgIGlmKCEkX1NFU1NJT05bJ3VzZXInXSkgewogICAgICAgICAgICBoZWFkZXIoIkxvY2F0aW9uOiAvIik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmKGVtcHR5KCRfUE9TVCkgfHwgdHJpbSgkX1BPU1RbJ3Byb2R1Y3ROYW1lJ10pID09ICcnIHx8IHRyaW0oJF9QT1NUWydwcm9kdWN0UHJpY2UnXSkgPT0gJycpIHsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgic3VjY2VzcyIgPT4gZmFsc2UpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcHJvZHVjdE5hbWUgPSB0cmltKCRfUE9TVFsncHJvZHVjdE5hbWUnXSk7CiAgICAgICAgICAgICRwcm9kdWN0UHJpY2UgPSB0cmltKCRfUE9TVFsncHJvZHVjdFByaWNlJ10pOwoKICAgICAgICAgICAgaWYoJHRoaXMtPm1vZGVsLT5hZGRQcm9kdWN0KCRwcm9kdWN0TmFtZSwgJHByb2R1Y3RQcmljZSkpIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IHRydWUpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoInN1Y2Nlc3MiID0+IGZhbHNlKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZVByb2R1Y3QoKSB7CiAgICAgICAgaWYoISRfU0VTU0lPTlsndXNlciddKSB7CiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246IC8iKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYoZW1wdHkoJF9QT1NUKSB8fCAhaXNzZXQoJF9QT1NUWydpZCddKSkgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCJzdWNjZXNzIiA9PiBmYWxzZSkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRwcm9kdWN0SWQgPSAkX1BPU1RbJ2lkJ107CiAgICAgICAgICAgIGlmKCR0aGlzLT5tb2RlbC0+ZGVsZXRlUHJvZHVjdCgkcHJvZHVjdElkKSkgewogICAgICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgic3VjY2VzcyIgPT4gdHJ1ZSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZShhcnJheSgic3VjY2VzcyIgPT4gZmFsc2UpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0KCiA\/Pgo=PD9waHAKCmNsYXNzIFByb2R1Y3RzTW9kZWwgZXh0ZW5kcyBNb2RlbCB7CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsbFByb2R1Y3RzKCkgewogICAgICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgICAgICRzcWwgPSAiU0VMRUNUICogRlJPTSBwcm9kdWN0cyI7CiAgICAgICAgJHN0bXQgPSAkdGhpcy0+ZGItPnByZXBhcmUoJHNxbCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICB3aGlsZSgkcm93ID0gJHN0bXQtPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpKSB7CiAgICAgICAgICAgICRyZXN1bHRbJHJvd1snaWQnXV0gPSAkcm93OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkRnJvbUNTVigkZGF0YSkgewogICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gcHJvZHVjdHMobmFtZSwgcHJpY2UpIFZBTFVFUyg6bmFtZSwgOnByaWNlKSI7CgogICAgICAgICRzdG10ID0gJHRoaXMtPmRiLT5wcmVwYXJlKCRzcWwpOwogICAgICAgICRzdG10LT5iaW5kVmFsdWUoIjpuYW1lIiwgJGRhdGFbMF0sIFBETzo6UEFSQU1fU1RSKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6cHJpY2UiLCAkZGF0YVsxXSwgUERPOjpQQVJBTV9JTlQpOwogICAgICAgICRzdG10LT5leGVjdXRlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFByb2R1Y3RCeUlkKCRpZCkgewogICAgICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgICAgICRzcWwgPSAiU0VMRUNUICogRlJPTSBwcm9kdWN0cyBXSEVSRSBpZCA9IDppZCI7CiAgICAgICAgJHN0bXQgPSAkdGhpcy0+ZGItPnByZXBhcmUoJHNxbCk7CiAgICAgICAgJHN0bXQtPmJpbmRWYWx1ZSgiOmlkIiwgJGlkLCBQRE86OlBBUkFNX0lOVCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICAkcmVzdWx0ID0gJHN0bXQtPmZldGNoKFBETzo6RkVUQ0hfQVNTT0MpOwogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlUHJvZHVjdEluZm8oJGlkLCAkbmFtZSwgJHByaWNlKSB7CiAgICAgICAgJHNxbCA9ICJVUERBVEUgcHJvZHVjdHMKICAgICAgICAgICAgICAgIFNFVCBwcmljZSA9IDpwcmljZSwgbmFtZSA9IDpuYW1lCiAgICAgICAgICAgICAgICBXSEVSRSBpZCA9IDppZAogICAgICAgICAgICAgICAgIjsKICAgICAgICAkc3RtdCA9ICR0aGlzLT5kYi0+cHJlcGFyZSgkc3FsKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6cHJpY2UiLCAkcHJpY2UsIFBETzo6UEFSQU1fSU5UKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6bmFtZSIsICRuYW1lLCBQRE86OlBBUkFNX1NUUik7CiAgICAgICAgJHN0bXQtPmJpbmRWYWx1ZSgiOmlkIiwgJGlkLCBQRE86OlBBUkFNX0lOVCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCgogICAgcHVibGljIGZ1bmN0aW9uIGFkZFByb2R1Y3QoJHByb2R1Y3ROYW1lLCAkcHJvZHVjdFByaWNlKSB7CiAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyBwcm9kdWN0cyhuYW1lLCBwcmljZSkKICAgICAgICAgICAgICAgIFZBTFVFUyg6cHJvZHVjdE5hbWUsIDpwcm9kdWN0UHJpY2UpCiAgICAgICAgICAgICAgICAiOwogICAgICAgICRzdG10ID0gJHRoaXMtPmRiLT5wcmVwYXJlKCRzcWwpOwogICAgICAgICRzdG10LT5iaW5kVmFsdWUoIjpwcm9kdWN0TmFtZSIsICRwcm9kdWN0TmFtZSwgUERPOjpQQVJBTV9TVFIpOwogICAgICAgICRzdG10LT5iaW5kVmFsdWUoIjpwcm9kdWN0UHJpY2UiLCAkcHJvZHVjdFByaWNlLCBQRE86OlBBUkFNX0lOVCk7CiAgICAgICAgJHN0bXQtPmV4ZWN1dGUoKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlUHJvZHVjdCgkaWQpIHsKICAgICAgICAkc3FsID0gIkRFTEVURSBGUk9NIHByb2R1Y3RzIFdIRVJFIGlkID0gOmlkIjsKICAgICAgICAkc3RtdCA9ICR0aGlzLT5kYi0+cHJlcGFyZSgkc3FsKTsKICAgICAgICAkc3RtdC0+YmluZFZhbHVlKCI6aWQiLCAkaWQsIFBETzo6UEFSQU1fSU5UKTsKICAgICAgICAkc3RtdC0+ZXhlY3V0ZSgpOwogICAgICAgICRjb3VudCA9ICRzdG10LT5yb3dDb3VudCgpOwogICAgICAgIGlmKCRjb3VudCA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICB9Cgp9CgogPz4K<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[274,219],"tags":[],"class_list":["post-28495","post","type-post","status-publish","format-standard","hentry","category-phpmysql","category-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Create php MVC app. Angular js - edit and delete product from app - \u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430<\/title>\n<meta name=\"description\" content=\"Today we will make editing and delete products features in our app with angular js\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create php MVC app. Angular js - edit and delete product from app - \u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430\" \/>\n<meta property=\"og:description\" content=\"Today we will make editing and delete products features in our app with angular js\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/kamabzalov\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-07T19:09:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-04-11T08:37:57+00:00\" \/>\n<meta name=\"author\" content=\"Kamil&#039; Abzalov\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Create php MVC app. Angular js - edit and delete product from app\" \/>\n<meta name=\"twitter:description\" content=\"Today we will make editing and delete products features in our app with angular js\" \/>\n<meta name=\"twitter:creator\" content=\"@kamabzalov\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kamil&#039; Abzalov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/videouroki\\\/phpmysql\\\/create-phpmvc-app-create-and-delete-product\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/videouroki\\\/phpmysql\\\/create-phpmvc-app-create-and-delete-product\\\/\"},\"author\":{\"name\":\"Kamil' Abzalov\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/#\\\/schema\\\/person\\\/9c53360f21b83306ba40c2231573c600\"},\"headline\":\"Create php MVC app. Angular js &#8211; edit and delete product from app\",\"datePublished\":\"2018-04-07T19:09:11+00:00\",\"dateModified\":\"2020-04-11T08:37:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/videouroki\\\/phpmysql\\\/create-phpmvc-app-create-and-delete-product\\\/\"},\"wordCount\":2892,\"commentCount\":0,\"articleSection\":[\"PHP+MySQL\",\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/kamil-abzalov.com\\\/videouroki\\\/phpmysql\\\/create-phpmvc-app-create-and-delete-product\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/videouroki\\\/phpmysql\\\/create-phpmvc-app-create-and-delete-product\\\/\",\"url\":\"https:\\\/\\\/kamil-abzalov.com\\\/videouroki\\\/phpmysql\\\/create-phpmvc-app-create-and-delete-product\\\/\",\"name\":\"Create php MVC app. Angular js - edit and delete product from app - \u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/#website\"},\"datePublished\":\"2018-04-07T19:09:11+00:00\",\"dateModified\":\"2020-04-11T08:37:57+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/#\\\/schema\\\/person\\\/9c53360f21b83306ba40c2231573c600\"},\"description\":\"Today we will make editing and delete products features in our app with angular js\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/videouroki\\\/phpmysql\\\/create-phpmvc-app-create-and-delete-product\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/kamil-abzalov.com\\\/videouroki\\\/phpmysql\\\/create-phpmvc-app-create-and-delete-product\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/videouroki\\\/phpmysql\\\/create-phpmvc-app-create-and-delete-product\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\\\/\\\/kamil-abzalov.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create php MVC app. Angular js &#8212; edit and delete product from app\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/#website\",\"url\":\"https:\\\/\\\/kamil-abzalov.com\\\/\",\"name\":\"\u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/kamil-abzalov.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/kamil-abzalov.com\\\/#\\\/schema\\\/person\\\/9c53360f21b83306ba40c2231573c600\",\"name\":\"Kamil' Abzalov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g\",\"caption\":\"Kamil' Abzalov\"},\"sameAs\":[\"https:\\\/\\\/kamil-abzalov.com\\\/\",\"https:\\\/\\\/www.facebook.com\\\/kamabzalov\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/kamabzalov\",\"https:\\\/\\\/x.com\\\/kamabzalov\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/kamabzalov\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Create php MVC app. Angular js - edit and delete product from app - \u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430","description":"Today we will make editing and delete products features in our app with angular js","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:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/","og_locale":"en_US","og_type":"article","og_title":"Create php MVC app. Angular js - edit and delete product from app - \u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430","og_description":"Today we will make editing and delete products features in our app with angular js","og_url":"https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/","og_site_name":"\u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430","article_author":"https:\/\/www.facebook.com\/kamabzalov","article_published_time":"2018-04-07T19:09:11+00:00","article_modified_time":"2020-04-11T08:37:57+00:00","author":"Kamil' Abzalov","twitter_card":"summary_large_image","twitter_title":"Create php MVC app. Angular js - edit and delete product from app","twitter_description":"Today we will make editing and delete products features in our app with angular js","twitter_creator":"@kamabzalov","twitter_misc":{"Written by":"Kamil' Abzalov","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/#article","isPartOf":{"@id":"https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/"},"author":{"name":"Kamil' Abzalov","@id":"https:\/\/kamil-abzalov.com\/#\/schema\/person\/9c53360f21b83306ba40c2231573c600"},"headline":"Create php MVC app. Angular js &#8211; edit and delete product from app","datePublished":"2018-04-07T19:09:11+00:00","dateModified":"2020-04-11T08:37:57+00:00","mainEntityOfPage":{"@id":"https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/"},"wordCount":2892,"commentCount":0,"articleSection":["PHP+MySQL","Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/","url":"https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/","name":"Create php MVC app. Angular js - edit and delete product from app - \u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430","isPartOf":{"@id":"https:\/\/kamil-abzalov.com\/#website"},"datePublished":"2018-04-07T19:09:11+00:00","dateModified":"2020-04-11T08:37:57+00:00","author":{"@id":"https:\/\/kamil-abzalov.com\/#\/schema\/person\/9c53360f21b83306ba40c2231573c600"},"description":"Today we will make editing and delete products features in our app with angular js","breadcrumb":{"@id":"https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kamil-abzalov.com\/videouroki\/phpmysql\/create-phpmvc-app-create-and-delete-product\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/kamil-abzalov.com\/en\/"},{"@type":"ListItem","position":2,"name":"Create php MVC app. Angular js &#8212; edit and delete product from app"}]},{"@type":"WebSite","@id":"https:\/\/kamil-abzalov.com\/#website","url":"https:\/\/kamil-abzalov.com\/","name":"\u0441\u0430\u0439\u0442 \u041a\u0430\u043c\u0438\u043b\u044f \u0410\u0431\u0437\u0430\u043b\u043e\u0432\u0430","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kamil-abzalov.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/kamil-abzalov.com\/#\/schema\/person\/9c53360f21b83306ba40c2231573c600","name":"Kamil' Abzalov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3ad2daebcb3a4d03f8573b49054a003cd26a151ecc58ccfccc75b823131d1ead?s=96&d=mm&r=g","caption":"Kamil' Abzalov"},"sameAs":["https:\/\/kamil-abzalov.com\/","https:\/\/www.facebook.com\/kamabzalov","https:\/\/www.linkedin.com\/in\/kamabzalov","https:\/\/x.com\/kamabzalov","https:\/\/www.youtube.com\/user\/kamabzalov"]}]}},"_links":{"self":[{"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/posts\/28495","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/comments?post=28495"}],"version-history":[{"count":6,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/posts\/28495\/revisions"}],"predecessor-version":[{"id":31987,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/posts\/28495\/revisions\/31987"}],"wp:attachment":[{"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/media?parent=28495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/categories?post=28495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kamil-abzalov.com\/en\/wp-json\/wp\/v2\/tags?post=28495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}