{"id":27320,"date":"2021-05-07T16:14:00","date_gmt":"2021-05-07T13:14:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27320"},"modified":"2021-10-18T03:49:13","modified_gmt":"2021-10-18T00:49:13","slug":"lepszy-sposob-tworzenia-kontrolera-laravel-dla-operacji-crud","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/lepszy-sposob-tworzenia-kontrolera-laravel-dla-operacji-crud\/","title":{"rendered":"Lepszy spos\u00f3b tworzenia kontrolera Laravel dla operacji CRUD"},"content":{"rendered":"<p>Laravel pracuje nad wzorcem architektonicznym MVC (Model-View-Controller). Je\u015bli uruchamiasz aplikacj\u0119 na frameworku Laravel, musisz stworzy\u0107 model, widok, kontrolery dla swojej aplikacji.<\/p>\n<p>W Laravel mo\u017cna stworzy\u0107 kontroler i model za pomoc\u0105 interfejsu wiersza polece\u0144. Laravel artisan to interfejs wiersza polece\u0144, kt\u00f3ry udost\u0119pnia szereg polece\u0144, kt\u00f3re pomagaj\u0105 nam w budowaniu aplikacji. Mo\u017cemy i powinni\u015bmy stworzy\u0107 kontroler za pomoc\u0105 polecenia artisan.<\/p>\n<h3>Utw\u00f3rz kontroler Laravel<\/h3>\n<p>Za\u0142\u00f3\u017cmy, \u017ce pracujesz na zapleczu i chcesz wykonywa\u0107 operacje CRUD na stronach. Oznacza to, \u017ce musisz zbudowa\u0107 system do zarz\u0105dzania stronami, kt\u00f3ry obejmuje tworzenie, pobieranie, aktualizowanie i usuwanie stron. Oczywi\u015bcie do tego zadania musisz stworzy\u0107 kontroler.<\/p>\n<p>Zwykle ludzie uruchamiaj\u0105 polecenie <code>php artisan make:controller PageController<\/code>. To polecenie generuje plik <code>PageController.php<\/code>w katalogu app\/Http\/Controllers.<\/p>\n<p><strong>Uwaga<\/strong>: Musisz uruchomi\u0107 to polecenie w katalogu g\u0142\u00f3wnym projektu za pomoc\u0105 interfejsu wiersza polece\u0144.<\/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>W tym wygenerowanym kontrolerze musisz napisa\u0107 metody i odpowiednio zdefiniowa\u0107 trasy. Dla ka\u017cdej metody musisz napisa\u0107 osobn\u0105 tras\u0119.<\/p>\n<p>Na przyk\u0142ad. dodajmy jedn\u0105 metod\u0119 <code>index()<\/code>i zdefiniujmy dla niej tras\u0119.<\/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>Aby wywo\u0142a\u0107 t\u0119 <code>index()<\/code>funkcj\u0119 w pliku trasy, nale\u017cy doda\u0107 poni\u017cszy kod.<\/p>\n<p><strong>trasy\/web.php<\/strong><\/p>\n<pre><code>Route::get('pages', 'PageController@index');<\/code><\/pre>\n<p>Ten sam proces b\u0119dzie mia\u0142 zastosowanie dla ka\u017cdej dodatkowej metody.<\/p>\n<p>Nie ma nic z\u0142ego w tym przep\u0142ywie. Ale to nie jest zalecany spos\u00f3b. Za popularno\u015bci\u0105 Laravela jest kilka powod\u00f3w. Jednym z powod\u00f3w s\u0105 pot\u0119\u017cne, zaawansowane polecenia rzemie\u015blnik\u00f3w.<\/p>\n<h3>Lepszy spos\u00f3b tworzenia kontrolera Laravel<\/h3>\n<p>W Laravelu nie musimy pisa\u0107 ka\u017cdej metody i definiowa\u0107 osobnej trasy dla ka\u017cdej metody. Za pomoc\u0105 polecenia artisan mo\u017cemy wygenerowa\u0107 sterownik za pomoc\u0105 predefiniowanych metod. I po prostu pisz\u0105c pojedyncz\u0105 tras\u0119 Laravel automatycznie wywo\u0142uje odpowiednie metody.<\/p>\n<p>Powiedziawszy to, otw\u00f3rz interfejs wiersza polece\u0144 w katalogu g\u0142\u00f3wnym swojego projektu i uruchom poni\u017csze polecenie. Uwaga, tym razem do naszego polecenia make:controller dodajemy \u2013resource.<\/p>\n<pre><code>php artisan make:controller PageController --resource<\/code><\/pre>\n<p>Teraz wygenerowany <code>PageController.php<\/code>wygl\u0105da jak poni\u017cej.<\/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>Mamy metody takie jak indeksowanie, tworzenie, przechowywanie, wy\u015bwietlanie, edycja, aktualizacja, automatyczne niszczenie. Mo\u017cesz przeczyta\u0107 komentarze dostarczone dla ka\u017cdej metody, kt\u00f3re wyja\u015bniaj\u0105, co robi ka\u017cda metoda. Teraz okre\u015blmy dla niego tras\u0119.<\/p>\n<p><strong>trasy\/web.php<\/strong><\/p>\n<pre><code>Route::resource('pages', 'PageController');<\/code><\/pre>\n<p>Ta zaradna trasa utworzy wiele tras do obs\u0142ugi r\u00f3\u017cnych dzia\u0142a\u0144. Teraz, aby uzyska\u0107 szczeg\u00f3\u0142owe informacje o akcjach, uruchom polecenie <code>php artisan route:list<\/code>. W przypadku trasy stron zobaczysz dane wyj\u015bciowe, jak pokazano na zrzucie ekranu.<\/p>\n<p>To wyj\u015bcie daje wyobra\u017cenie o metodzie HTTP, adresie URL oraz o tym, kt\u00f3ra metoda zostanie wywo\u0142ana na okre\u015blonym adresie URL.<\/p>\n<p>Na przyk\u0142ad, je\u015bli u\u017cywasz adresu URL TWOJA_WITRYNA\/DOMAIN\/stron za pomoc\u0105 metody GET, wywo\u0142a on <code>index()<\/code>metod\u0119 kontrolera stron.<\/p>\n<p>Je\u015bli chcesz utworzy\u0107 now\u0105 stron\u0119, adres URL to Twoja_SITE_DOMAIN\/strony\/utw\u00f3rz. Daje wywo\u0142anie <code>create()<\/code>metody, w kt\u00f3rej musisz za\u0142adowa\u0107 widok w celu utworzenia nowej strony.<\/p>\n<p>Kiedy przesy\u0142asz formularz z method=&quot;post&quot; i action=&quot;pages&quot;, wywo\u0142uje on <code>store()<\/code>metod\u0119.<\/p>\n<p>I tak dalej.<\/p>\n<p>Wszystko sprowadza si\u0119 do stworzenia kontrolera Laravel do operacji CRUD. Podziel si\u0119 swoimi przemy\u015bleniami w sekcji komentarzy poni\u017cej.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-wykonac-rozsiewanie-bazy-danych-w-laravel\/\" title=\"Jak zrobi\u0107 wysiew bazy danych w Laravel?\" >Jak zrobi\u0107 wysiew bazy danych w Laravel?<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/system-logowania-spolecznosciowego-za-pomoca-laravel-socialite\/\" title=\"System logowania spo\u0142eczno\u015bciowego za pomoc\u0105 Laravel Socialite\" >System logowania spo\u0142eczno\u015bciowego za pomoc\u0105 Laravel Socialite<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule dowiemy si\u0119, jak stworzy\u0107 kontroler Laravel dla operacji CRUD. Korzystaj\u0105c z zaradnego kontrolera, uzyskujemy wygenerowane predefiniowane metody<\/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":[501],"tags":[847],"class_list":["post-27320","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27320","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=27320"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/27320\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20716"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=27320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=27320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=27320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}