{"id":4135,"date":"2018-07-21T15:08:50","date_gmt":"2018-07-21T18:08:50","guid":{"rendered":"http:\/\/blog.dialhost.com.br\/?p=4135"},"modified":"2019-10-01T17:27:02","modified_gmt":"2019-10-01T20:27:02","slug":"laravel-controller","status":"publish","type":"post","link":"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/","title":{"rendered":"Laravel Controller: Aprenda em 5 passos a desenvolver a l\u00f3gica da sua aplica\u00e7\u00e3o"},"content":{"rendered":"\n<p>Nos primeiros artigos desta s\u00e9rie trabalhamos massivamente para aprender e desenvolver o m\u00e1ximo que pud\u00e9ssemos no tratamento dos dados do banco de dados. Fomos desde a cria\u00e7\u00e3o da estrutura do banco com as <a href=\"http:\/\/blog.dialhost.com.br\/desenvolvimento-2\/migrations-relacionando-tabelas-laravel\/\">migrations<\/a>\u00a0at\u00e9 a cria\u00e7\u00e3o de respostas RESTful atrav\u00e9s dos <a href=\"http:\/\/blog.dialhost.com.br\/desenvolvimento-2\/api-resources-do-laravel-criando-repostas-restfull\/\">resources<\/a>. Agora chegou a hora de desenvolvermos a l\u00f3gica da aplica\u00e7\u00e3o com o <strong>Laravel Controller<\/strong>.<\/p>\n\n\n\n<p>Se voc\u00ea j\u00e1 conhece sobre o MVC, fica claro que o Controller n\u00e3o se trata de uma exclusividade do Laravel. Mas, como todo framework, o <strong>Laravel Controller<\/strong> tem sua forma de trabalhar. <\/p>\n\n\n\n<p>Em sua documenta\u00e7\u00e3o, podemos ver que a fun\u00e7\u00e3o dos Controllers \u00e9 organizar e agrupar\u00a0<em>requests<\/em> relacionadas, manipulando sua l\u00f3gica em uma \u00fanica classe.\u00a0 O que eles querem dizer \u00e9 que tiraremos toda a complexidade de c\u00f3digo que inicialmente estaria na <em>closure<\/em>\u00a0das rotas.<\/p>\n\n\n\n<div id=\"toc_container\" class=\"have_bullets\"><p class=\"toc_title\">T&oacute;picos<\/p><ul class=\"toc_list\"><li><a href=\"#1-criando-o-seu-primeiro-laravel-controller\">1 -Criando o seu primeiro Laravel Controller<\/a><\/li><li><a href=\"#2-8211-criando-os-metodos-do-controller\">2 &#8211; Criando os m\u00e9todos do Controller<\/a><\/li><li><a href=\"#3-8211-registrando-as-rotas\">3 &#8211; Registrando as rotas<\/a><\/li><li><a href=\"#4-8211-implementando-os-metodos-de-crud-no-laravel-controller\">4 &#8211; Implementando os m\u00e9todos de CRUD no Laravel Controller<\/a><ul><li><a href=\"#5-8211-salvando-dados-no-banco-de-dados\">5 &#8211; Salvando dados no Banco de dados<\/a><\/li><\/ul><\/li><li><a href=\"#conclusao\">Conclus\u00e3o<\/a><\/li><\/ul><\/div>\n<h2><span id=\"1-criando-o-seu-primeiro-laravel-controller\">1 -Criando o seu primeiro Laravel Controller<\/span><\/h2>\n\n\n\n<p>Para iniciar o trabalho primeiramente voc\u00ea ter\u00e1 que criar o Controller que ir\u00e1 trabalhar. Voltando ao nosso exemplo pr\u00e1tico, vou montar o Controller para criar os endpoints dos nossos produtos. Para isto utilizarei o php artisan.<\/p>\n\n\n<p>[code] php artisan make:controller ProductsController [\/code]<\/p>\n\n\n\n<p>Este comando \u00e9 o mais indicado pois voc\u00ea ter\u00e1 a estrutura e as depend\u00eancias todas montadas pelo pr\u00f3prio Laravel. Isto pode evitar muita dor de cabe\u00e7a. Bem, se tudo der certo voc\u00ea ter\u00e1 o seguinte arquivo dentro da sua pasta Http\/Controllers.<\/p>\n\n\n\n<p>[php]\n&lt;?php\nnamespace App\\Http\\Controllers;\nuse Illuminate\\Http\\Request;\nclass ProductsController extends Controller\n{\n\/\/\n}\n[\/php]<\/p>\n\n\n\n<p>O <strong>Laravel Controller<\/strong> sempre extende a classe Controller padr\u00e3o do Laravel. Assim, voc\u00ea j\u00e1 ter\u00e1 convenientemente m\u00e9todos comuns como por exemplo o Middleware.<\/p>\n\n\n\n<h2><span id=\"2-8211-criando-os-metodos-do-controller\">2 &#8211; Criando os m\u00e9todos do Controller<\/span><\/h2>\n\n\n\n<p>Para todo CRUD b\u00e1sico n\u00f3s teremos 7 fun\u00e7\u00f5es que resolver\u00e3o em 7 rotas diferentes. Criarei elas aqui dentro do padr\u00e3o do Laravel com os nomes:<\/p>\n\n\n\n<ul><li>index &#8211; Lista os dados da tabela<\/li><li>show &#8211; Mostra um item espec\u00edfco<\/li><li>create &#8211; Retorna a View para criar um item da tabela<\/li><li>store &#8211; Salva o novo item na tabela<\/li><li>edit &#8211; Retorna a View para edi\u00e7\u00e3o do dado<\/li><li>update &#8211; Salva a atualiza\u00e7\u00e3o do dado<\/li><li>destroy &#8211; Remove o dado<\/li><\/ul>\n\n\n\n<p>Dependendo do seu projeto, voc\u00ea consegue economizar aqui a tela do create e do edit. No mais, o CRUD vai exigir pelo menos as 5 rotas de intera\u00e7\u00e3o com a Model. <\/p>\n\n\n\n<p>No nosso caso ser\u00e3o 6 pois colocamos a adi\u00e7\u00e3o de produtos junto com a listagem. Assim, nosso <strong>Laravel Controller<\/strong> ficar\u00e1 como abaixo:<\/p>\n\n\n<p>[php]<\/p>\n<p>&lt;?php<\/p>\n<p>namespace App\\Http\\Controllers;<\/p>\n<p>use Illuminate\\Http\\Request;<br \/>\nuse App\\Product;<br \/>\nuse App\\Product_line;<\/p>\n<p>class ProductsController extends Controller<br \/>\n{<br \/>\npublic function index(){<br \/>\nreturn view(&#8216;products&#8217;);<br \/>\n}<\/p>\n<p>public function show(Product $product){<br \/>\nreturn view(&#8216;the_product&#8217;);<br \/>\n}<\/p>\n<p>public function store(){<br \/>\n\/\/<br \/>\n}<\/p>\n<p>public function edit(Product $product){<br \/>\nreturn view(&#8216;product_edit&#8217;);<br \/>\n}<\/p>\n<p>public function update(Product $product, Request $request){<br \/>\n\/\/<br \/>\n}<\/p>\n<p>public function destroy(Product $product){<br \/>\n\/\/<br \/>\n}<br \/>\n}<br \/>\n[\/php]<\/p>\n\n\n\n<p>Uma observa\u00e7\u00e3o especial para os m\u00e9todos show(), edit(), update() e delete(). Nestas fun\u00e7\u00f5es voc\u00ea pode ver que temos par\u00e2metros vinculados para repassarmos paras as views ou para salvar no banco de dados. O $product ir\u00e1 injetar a inst\u00e2ncia de <strong>Product<\/strong> com o dado que ser\u00e1 passado na rota (<strong>GET<\/strong>) ou <strong>POST<\/strong>. <\/p>\n\n\n\n<p>Para entender melhor vamos seguir e registrar as rotas para este controller.<\/p>\n\n\n\n<h2><span id=\"3-8211-registrando-as-rotas\">3 &#8211; Registrando as rotas<\/span><\/h2>\n\n\n\n<p>Agora que as fun\u00e7\u00f5es est\u00e3o estruturadas \u00e9 hora de montar os endpoints. Para isto utilizaremos o arquivo <strong>web.php<\/strong> que est\u00e1 na pasta <strong>routes<\/strong>. Este arquivo \u00e9 respons\u00e1vel por rotear o caminho da request para a fun\u00e7\u00e3o correta no controller e retornar o resultado. <\/p>\n\n\n\n<p>Abaixo segue o nosso exemplo.<\/p>\n\n\n<p>[php]<br \/>\nRoute::get(&#8216;products&#8217;,&#8217;ProductsController@index&#8217;);<br \/>\nRoute::post(&#8216;products&#8217;,&#8217;ProductsController@store&#8217;);<br \/>\nRoute::get(&#8216;products\/{product}&#8217;,&#8217;ProductsController@show&#8217;);<br \/>\nRoute::get(&#8216;products\/{product}\/edit&#8217;,&#8217;ProductsController@edit&#8217;);<br \/>\nRoute::patch(&#8216;products\/{product}&#8217;,&#8217;ProductsController@update&#8217;);<br \/>\nRoute::delete(&#8216;products\/{product}&#8217;,&#8217;ProductsController@destroy&#8217;);<br \/>\n[\/php]<\/p>\n\n\n\n<p>Aqui utilizamos 4 m\u00e9todos de <em>request <\/em>para executar cada a\u00e7\u00e3o. <strong>GET<\/strong> e <strong>POST<\/strong> que s\u00e3o os mais comuns, e <strong>PATCH<\/strong> e <strong>DELETE<\/strong> que s\u00e3o respectivamente para atualiza\u00e7\u00e3o e remo\u00e7\u00e3o de dados.<\/p>\n\n\n\n<p>Voc\u00ea tamb\u00e9m reparar\u00e1 que nas quatro \u00faltimas rotas temos a palavra <strong>{ product }<\/strong>. Lembra-se da inje\u00e7\u00e3o autom\u00e1tica da inst\u00e2ncia <strong>Product<\/strong>? Ent\u00e3o&#8230; a inst\u00e2ncia de <strong>Product<\/strong> ser\u00e1 o <em>model<\/em> referente ao id do produto que voc\u00ea passar nesta rota. <\/p>\n\n\n\n<p>Isso \u00e9 para o caso de voc\u00ea querer deletar o produto de id 1, basta passar pela URI\u00a0 &#8216;products\/1&#8217;, com o m\u00e9todo delete, e implementar a dele\u00e7\u00e3o no <strong>Laravel Controller<\/strong>.<\/p>\n\n\n<p>[php]<br \/>\npublic function destroy(Product $product){<br \/>\n$product-&gt;delete();<br \/>\nreturn redirect(&#8216;products&#8217;);<br \/>\n}<br \/>\n[\/php]<\/p>\n\n\n\n<p>Veja acima como ficou simples deletar um produto. <\/p>\n\n\n\n<p>A inst\u00e2ncia j\u00e1 possui todas as refer\u00eancias do model do produto 1. Assim, \u00e9 s\u00f3 executar o comando delete do <a href=\"http:\/\/blog.dialhost.com.br\/desenvolvimento-2\/eloquent-simplificando-models-laravel\/\">Eloquent<\/a> que ele faz o resto sozinho.<\/p>\n\n\n\n<h2><span id=\"4-8211-implementando-os-metodos-de-crud-no-laravel-controller\">4 &#8211; Implementando os m\u00e9todos de CRUD no Laravel Controller<\/span><\/h2>\n\n\n\n<p>Come\u00e7aremos pelos m\u00e9todos de Visualiza\u00e7\u00e3o, pois eles s\u00e3o simples m\u00e9todos que v\u00e3o receber os dados dos models e repassar para as suas respectivas <strong>Views<\/strong>.<\/p>\n\n\n<p>[php]<br \/>\npublic function index() {<br \/>\n$products = Product::all();<br \/>\nreturn view(&#8216;products&#8217;,compact(&#8216;products&#8217;,&#8217;product_lines&#8217;));<br \/>\n}<\/p>\n<p>public function show(Product $product){<br \/>\nreturn view(&#8216;the_product&#8217;,compact(&#8216;product&#8217;));<br \/>\n}<\/p>\n<p>public function edit(Product $product){<\/p>\n<p>$product_lines = Product_line::all();<\/p>\n<p>return view(&#8216;product_edit&#8217;,compact(&#8216;product&#8217;,&#8217;product_lines&#8217;));<\/p>\n<p>}<br \/>\n[\/php]<\/p>\n\n\n\n<p>Vejam que em edit fizemos tamb\u00e9m uma busca dentro da model Product_lines. Isto porque eu precisaremos de todas as linhas de produto caso eu queira mudar este produto de linha.<\/p>\n\n\n\n<p>Por fim, vamos aos&nbsp; m\u00e9todos de escrita, store e update<\/p>\n\n\n\n<h3><span id=\"5-8211-salvando-dados-no-banco-de-dados\">5 &#8211; Salvando dados no Banco de dados<\/span><\/h3>\n\n\n<p>[php]<br \/>\npublic function store(){<br \/>\n$data = [<br \/>\n&#8216;product_line_id&#8217; =&gt; request(&#8216;product_line_id&#8217;),<br \/>\n&#8216;description&#8217; =&gt; request(&#8216;description&#8217;),<br \/>\n&#8216;expiration_time&#8217; =&gt; request(&#8216;expiration_time&#8217;),<br \/>\n&#8216;price&#8217; =&gt; request(&#8216;price&#8217;)<br \/>\n];<br \/>\nProduct::create($data);<br \/>\nreturn redirect(&#8216;product&#8217;);<br \/>\n}<\/p>\n<p>public function update(Product $product, Request $request){<br \/>\n$product-&gt;product_line_id = $request-&gt;product_line_id;<br \/>\n$product-&gt;description = $request-&gt;description;<br \/>\n$product-&gt;expiration_time = $request-&gt;expiration_time;<br \/>\n$product-&gt;price = $request-&gt;price;<br \/>\n$product-&gt;save();<\/p>\n<p>return redirect(&#8216;product&#8217;);<br \/>\n}<\/p>\n<p>[\/php]<\/p>\n\n\n\n<p>Se voc\u00ea leu esta s\u00e9rie desde o come\u00e7o, ver\u00e1 que esta parte j\u00e1 havia sido feita, em parte, no artigo\u00a0<a href=\"https:\/\/www.dialhost.com.br\/blog\/eloquent-simplificando-models-laravel\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (abre numa nova aba)\">Simplificando models no Laravel<\/a>.\u00a0<\/p>\n\n\n\n<p>Na fun\u00e7\u00e3o store() fizemos o mass assignment e na fun\u00e7\u00e3o update setamos cada dado enviado pela Request na inst\u00e2ncia do model <strong>Product\u00a0<\/strong>e ent\u00e3o utilizamos o save() para efetivar a mudan\u00e7a no banco de dados.<\/p>\n\n\n\n<p>Ent\u00e3o c\u00f3digo final ficou assim:<\/p>\n\n\n<p>[php]<\/p>\n<p>&lt;?php<\/p>\n<p>namespace App\\Http\\Controllers;<\/p>\n<p>use Illuminate\\Http\\Request;<br \/>\nuse App\\Product;<br \/>\nuse App\\Product_line;<\/p>\n<p>class ProductsController extends Controller<br \/>\n{<br \/>\npublic function index(){<br \/>\n$products = Product::all();<br \/>\nreturn view(&#8216;products&#8217;,compact(&#8216;products&#8217;));<br \/>\n}<\/p>\n<p>public function show(Product $product){<br \/>\nreturn view(&#8216;the_product&#8217;,compact(&#8216;product&#8217;));<br \/>\n}<\/p>\n<p>public function store(){<br \/>\n$data = [<br \/>\n&#8216;product_line_id&#8217; =&gt; request(&#8216;product_line_id&#8217;),<br \/>\n&#8216;description&#8217; =&gt; request(&#8216;description&#8217;),<br \/>\n&#8216;expiration_time&#8217; =&gt; request(&#8216;expiration_time&#8217;),<br \/>\n&#8216;price&#8217; =&gt; request(&#8216;price&#8217;)<br \/>\n];<\/p>\n<p>Product::create($data);<\/p>\n<p>return back();<br \/>\n}<\/p>\n<p>public function edit(Product $product){<br \/>\n$product_lines = Product_line::all();<br \/>\nreturn view(&#8216;product_edit&#8217;,compact(&#8216;product&#8217;,&#8217;product_lines&#8217;));<br \/>\n}<\/p>\n<p>public function update(Product $product, Request $request){<\/p>\n<p>$product-&gt;product_line_id = $request-&gt;product_line_id;<br \/>\n$product-&gt;description = $request-&gt;description;<br \/>\n$product-&gt;expiration_time = $request-&gt;expiration_time;<br \/>\n$product-&gt;price = $request-&gt;price;<br \/>\n$product-&gt;save();<\/p>\n<p>return redirect(&#8216;products&#8217;);<br \/>\n}<\/p>\n<p>public function delete(Product $product){<br \/>\n$product-&gt;delete();<br \/>\nreturn redirect(&#8216;products&#8217;);<br \/>\n}<br \/>\n}<\/p>\n<p>[\/php]<\/p>\n\n\n\n<h2><span id=\"conclusao\">Conclus\u00e3o<\/span><\/h2>\n\n\n\n<p>O <strong>Laravel Controller<\/strong> \u00e9 onde manipulamos a l\u00f3gica de tratamento das requisi\u00e7\u00f5es recebendo os dados do model e transmitindo-os para a view. \u00c9 ele que abstrair\u00e1 toda a complexidade da rota que, como j\u00e1 diz o nome, apenas rotear\u00e1 a Request feita para sua devida l\u00f3gica.<\/p>\n\n\n\n<p>Este \u00e9 apenas um artigo inicial sobre <strong>Laravel controller<\/strong> nele ainda podemos implementar <a href=\"https:\/\/laravel.com\/docs\/5.6\/validation\">valida\u00e7\u00f5es<\/a> de dados e <a href=\"https:\/\/laravel.com\/docs\/5.6\/middleware\">middlewares<\/a> que garantir\u00e3o seguran\u00e7a e estabilidade ao projeto.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Laravel Controller \u00e9 onde manipulamos a l\u00f3gica de tratamento das requisi\u00e7\u00f5es recebendo os dados do model e transmitindo-os para a view.\t<\/p>\n","protected":false},"author":1,"featured_media":7583,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[23,24,12],"tags":[76,102,138,140,167],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Laravel Controller: 5 passos para desenvolver a l\u00f3gica da sua aplica\u00e7\u00e3o<\/title>\n<meta name=\"description\" content=\"O Laravel Controller \u00e9 onde manipulamos a l\u00f3gica de tratamento das requisi\u00e7\u00f5es recebendo os dados do model e transmitindo-os para a view.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel Controller: 5 passos para desenvolver a l\u00f3gica da sua aplica\u00e7\u00e3o\" \/>\n<meta property=\"og:description\" content=\"O Laravel Controller \u00e9 onde manipulamos a l\u00f3gica de tratamento das requisi\u00e7\u00f5es recebendo os dados do model e transmitindo-os para a view.\" \/>\n<meta property=\"og:url\" content=\"\/blog\/laravel-controller\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog DialHost\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/DialHost\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-21T18:08:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-01T20:27:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2018\/07\/laravel-controller-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialhost\" \/>\n<meta name=\"twitter:site\" content=\"@dialhost\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\",\"name\":\"DialHost Internet\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\",\"https:\/\/twitter.com\/dialhost\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2019\/03\/marca-dialhost.png\",\"width\":81,\"height\":81,\"caption\":\"DialHost Internet\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/\",\"name\":\"Blog DialHost\",\"description\":\"Os melhores conte\\u00fados sobre Desenvolvimento Web, Marketing e Neg\\u00f3cios\",\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.dialhost.com.br\/blog\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/wp-content\/uploads\/2018\/07\/laravel-controller-1.jpg\",\"width\":1920,\"height\":1080,\"caption\":\"\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/#webpage\",\"url\":\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/\",\"name\":\"Laravel Controller: 5 passos para desenvolver a l\\u00f3gica da sua aplica\\u00e7\\u00e3o\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/#primaryimage\"},\"datePublished\":\"2018-07-21T18:08:50+00:00\",\"dateModified\":\"2019-10-01T20:27:02+00:00\",\"description\":\"O Laravel Controller \\u00e9 onde manipulamos a l\\u00f3gica de tratamento das requisi\\u00e7\\u00f5es recebendo os dados do model e transmitindo-os para a view.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/\",\"url\":\"\/blog\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"\/blog\/laravel-controller\/\",\"url\":\"\/blog\/laravel-controller\/\",\"name\":\"Laravel Controller: Aprenda em 5 passos a desenvolver a l\\u00f3gica da sua aplica\\u00e7\\u00e3o\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\"},\"headline\":\"Laravel Controller: Aprenda em 5 passos a desenvolver a l\\u00f3gica da sua aplica\\u00e7\\u00e3o\",\"datePublished\":\"2018-07-21T18:08:50+00:00\",\"dateModified\":\"2019-10-01T20:27:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/#webpage\"},\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/#primaryimage\"},\"keywords\":\"desenvolvimento,frameworks,laravel,laravel5.5,php\",\"articleSection\":\"Laravel,PHP,Tecnologias\",\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dialhost.com.br\/blog\/laravel-controller\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#\/schema\/person\/a0b10cbe35449dea173a06d4664f9fcc\",\"name\":\"DialHost Internet\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.dialhost.com.br\/blog\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/05feec2f99aef1c42b09aeaa637ee66f?s=96&r=g\",\"caption\":\"DialHost Internet\"},\"description\":\"H\\u00e1 mais de 18 anos proporcionando um servi\\u00e7o de hospedagem de sites voltado 100% na Experi\\u00eancia e Sucesso do Cliente, prezando a qualidade, transpar\\u00eancia e seguran\\u00e7a.\",\"sameAs\":[\"https:\/\/www.facebook.com\/DialHost\",\"https:\/\/www.instagram.com\/dialhost_oficial\/\",\"https:\/\/www.linkedin.com\/company\/dialhost-internet\",\"https:\/\/twitter.com\/dialhost\",\"https:\/\/www.youtube.com\/channel\/UCAiqiX8IiqTSfA8wQhpzgXQ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/4135"}],"collection":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/comments?post=4135"}],"version-history":[{"count":0,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/posts\/4135\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media\/7583"}],"wp:attachment":[{"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/media?parent=4135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/categories?post=4135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dialhost.com.br\/blog\/wp-json\/wp\/v2\/tags?post=4135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}