{"id":27096,"date":"2021-05-07T16:15:00","date_gmt":"2021-05-07T13:15:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27096"},"modified":"2021-10-18T04:16:16","modified_gmt":"2021-10-18T01:16:16","slug":"melhor-maneira-de-criar-um-controlador-laravel-para-operacoes-crud","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/melhor-maneira-de-criar-um-controlador-laravel-para-operacoes-crud\/","title":{"rendered":"Melhor maneira de criar um controlador Laravel para opera\u00e7\u00f5es CRUD"},"content":{"rendered":"<p>O Laravel trabalha no padr\u00e3o arquitet\u00f4nico MVC (Model-View-Controller). Se voc\u00ea est\u00e1 executando uma aplica\u00e7\u00e3o no framework Laravel, ent\u00e3o voc\u00ea deve criar o modelo, vis\u00e3o, controladores para sua aplica\u00e7\u00e3o.<\/p>\n<p>No Laravel, pode-se criar um Controlador e Modelo atrav\u00e9s da interface de linha de comando. Laravel artisan \u00e9 a interface de linha de comando que fornece uma s\u00e9rie de comandos que nos ajudam na constru\u00e7\u00e3o do aplicativo. Podemos e devemos criar um Controlador usando o comando artisan.<\/p>\n<h3>Crie um controlador Laravel<\/h3>\n<p>Digamos que voc\u00ea esteja trabalhando no back-end e deseje realizar opera\u00e7\u00f5es CRUD nas p\u00e1ginas. Isso significa que voc\u00ea precisa construir um sistema para gerenciar p\u00e1ginas que inclui criar, recuperar, atualizar e excluir p\u00e1ginas. Claro, para esta tarefa, voc\u00ea precisa criar um controlador.<\/p>\n<p>Normalmente, as pessoas executam o comando <code>php artisan make:controller PageController<\/code>. Este comando gera um arquivo <code>PageController.php<\/code>no diret\u00f3rio app \/ Http \/ Controllers.<\/p>\n<p><strong>Nota<\/strong>: Voc\u00ea precisa executar este comando no diret\u00f3rio raiz de um projeto usando a interface da linha de comandos.<\/p>\n<p><strong>PageController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\n\u00a0\nclass PageController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0\/\/\n}<\/code><\/pre>\n<p>Neste controlador gerado, voc\u00ea precisa escrever m\u00e9todos e definir as rotas de acordo. Para cada m\u00e9todo, voc\u00ea deve escrever uma rota separada.<\/p>\n<p>Por exemplo. vamos adicionar um m\u00e9todo <code>index()<\/code>e definir uma rota para ele.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\n\u00a0\nclass PageController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function index() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/do operations here\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Para chamar esta <code>index()<\/code>fun\u00e7\u00e3o no arquivo de rota, devemos adicionar o c\u00f3digo abaixo.<\/p>\n<p><strong>rotas \/ web.php<\/strong><\/p>\n<pre><code>Route::get('pages', 'PageController@index');<\/code><\/pre>\n<p>O mesmo processo se aplica a cada m\u00e9todo adicional.<\/p>\n<p>N\u00e3o h\u00e1 nada de errado com esse fluxo. Mas esta n\u00e3o \u00e9 a forma recomendada. Por tr\u00e1s da popularidade do Laravel, existem v\u00e1rios motivos. Um dos motivos s\u00e3o seus poderosos comandos artesanais avan\u00e7ados.<\/p>\n<h3>Melhor maneira de criar um controlador Laravel<\/h3>\n<p>No Laravel, n\u00e3o precisamos escrever cada m\u00e9todo e definir uma rota separada para cada m\u00e9todo. Usando o comando artisan podemos gerar um controlador com m\u00e9todos pr\u00e9-definidos. E apenas escrevendo uma \u00fanica rota, o Laravel chama automaticamente os m\u00e9todos apropriados.<\/p>\n<p>Dito isso, abra sua interface de linha de comando no diret\u00f3rio raiz do seu projeto e execute o comando abaixo. Observe, desta vez estamos adicionando \u2013resource ao nosso comando make: controller.<\/p>\n<pre><code>php artisan make:controller PageController --resource<\/code><\/pre>\n<p>Agora o gerado se <code>PageController.php<\/code>parece com o abaixo.<\/p>\n<p><strong>PageController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\n\u00a0\nclass PageController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Display a listing of the resource.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return IlluminateHttpResponse\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function index()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Show the form for creating a new resource.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return IlluminateHttpResponse\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function create()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Store a newly created resource in storage.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 IlluminateHttpRequest\u00a0 $request\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return IlluminateHttpResponse\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function store(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Display the specified resource.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 int\u00a0 $id\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return IlluminateHttpResponse\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function show($id)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Show the form for editing the specified resource.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 int\u00a0 $id\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return IlluminateHttpResponse\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function edit($id)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Update the specified resource in storage.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 IlluminateHttpRequest\u00a0 $request\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 int\u00a0 $id\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return IlluminateHttpResponse\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function update(Request $request, $id)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Remove the specified resource from storage.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 int\u00a0 $id\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return IlluminateHttpResponse\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function destroy($id)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Temos m\u00e9todos como indexar, criar, armazenar, mostrar, editar, atualizar e destruir automaticamente. Voc\u00ea pode ler os coment\u00e1rios fornecidos para cada m\u00e9todo, o que explica o que cada m\u00e9todo faz. Agora vamos especificar a rota para isso.<\/p>\n<p><strong>rotas \/ web.php<\/strong><\/p>\n<pre><code>Route::resource('pages', 'PageController');<\/code><\/pre>\n<p>Esta rota engenhosa criar\u00e1 v\u00e1rias rotas para lidar com a\u00e7\u00f5es diferentes. Agora, para obter os detalhes sobre as a\u00e7\u00f5es, execute o comando <code>php artisan route:list<\/code>. Para a rota de p\u00e1ginas, voc\u00ea ver\u00e1 a sa\u00edda conforme mostrado na captura de tela.<\/p>\n<p>Esta sa\u00edda d\u00e1 uma ideia do m\u00e9todo HTTP, URL e qual m\u00e9todo chamar\u00e1 no URL especificado.<\/p>\n<p>Por exemplo, se voc\u00ea estiver executando um URL YOUR_SITE_DOMAIN \/ pages com o m\u00e9todo GET, ele dar\u00e1 uma chamada ao <code>index()<\/code>m\u00e9todo de um PageController.<\/p>\n<p>Se voc\u00ea deseja criar uma nova p\u00e1gina, o URL ser\u00e1 YOUR_SITE_DOMAIN \/ pages \/ create. Ele d\u00e1 uma chamada para o <code>create()<\/code>m\u00e9todo em que voc\u00ea precisa carregar uma visualiza\u00e7\u00e3o para criar uma nova p\u00e1gina.<\/p>\n<p>Quando voc\u00ea envia um formul\u00e1rio com method = &quot;post&quot; e action = &#8220;pages&#8221;, ele d\u00e1 uma chamada para o <code>store()<\/code>m\u00e9todo.<\/p>\n<p>E assim por diante.<\/p>\n<p>\u00c9 tudo sobre como criar um controlador Laravel para opera\u00e7\u00f5es CRUD. Por favor, compartilhe suas id\u00e9ias na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-fazer-a-propagacao-do-banco-de-dados-no-laravel\/\" title=\"Como fazer a propaga\u00e7\u00e3o do banco de dados no Laravel\" >Como fazer a propaga\u00e7\u00e3o do banco de dados no Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/sistema-de-login-social-usando-laravel-socialite\/\" title=\"Sistema de login social usando Laravel Socialite\" >Sistema de login social usando Laravel Socialite<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, estudamos como criar um controlador Laravel para opera\u00e7\u00f5es CRUD. Ao usar o controlador de recursos, obtemos os m\u00e9todos predefinidos gerados<\/p>\n","protected":false},"author":1,"featured_media":20716,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[502],"tags":[848],"class_list":["post-27096","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27096"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27096\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/20716"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}