peri hokiperihokiclarustologisticsrimashaop.compola taktis menang gates of olympus x1000 perihokipemain perihoki bongkar trik jepep starlight princess x1000perihoki beri panduan lengkap bermain mahjong ways 2 pgsofttips cara penghasil uang pgsoft mahjong ways 2 perihokimahjong wins 3 perihoki memberikan penggali terbesarfenomena gates of olympus buka peluang besar bagi duta76cara dapat pola emas rahasia di duta7 wild west goldtrik menang pgsoft mahjong ways 2 modal receh maxwin duta76duta76 main pgsoft mahjong ways 2 di sela istirahatscatter hitam mahjong wins 3 spin pasti jepe duta76perihoki spin mahjong ways 2 pgsoft scatter hitam maxwinsimbol mahjong wins 3 yang sering muncul di awal perihokitrik gampang menang mahjong winscuan mahjong wins 3 tanpa hentipola spin taruhan kecil mahjong winsstrategi kunci scatter hitam beruntungacor total mahjong wayskemenangan maksimal mahjong wayskemenangan pria pekanbaru mahjong waysmahjong wins3 fenomena baru sumatera baratmenangkan mahjong dengan lincahmenembus batas keberuntungan mahjong waysmenjajal keberuntungan di mahjong wayspola gratis mahjong ways1scatter hitam senjata rahasia mahjong winsteknik spinning menguntungkan untuk scatter hitamanalisis rtp tertinggi mahjong winsfenomena scatter hitam mahjong winsibu rumah tangga dan keberuntungan mahjongkeseruan main mahjong wins3menang mahjong pengguna baru di sosial mediamenghargai setiap momen di mahjong waysserunya main mahjong di warung internetspin slow motion mancing scatterstrategi jitu maxwin mahjong waysstrategi jitu menang mahjong modal kecil jackpot besaranak kampung papua menggemparkan mahjongkeajaiban scatter hitam mahjong wayskeberhasilan joni mahjong winskejaiban mahjong ways di ujung jalanketua mahjong wins3 kehadiran kemenangan dimulai dari balimahjong kehadiran yang menguntungkanmahjong menggila adat88panduan kilat raih 108 jutatips memenangkan mahjongbarista kopi menang 110 juta spin mahjongdakota76 scatter hitam mahjong wins 3gagal cpns menang mahjong wins 3 rp120 jutakisah karyawan minimarket dapat thr lebih awal mahjong winskisah pelajar sma kuasai mahjong wins 3 inspirasi sekolahkisah penjaga parkir tanah abang motor baru mahjong winskisah sukses ibu rumah tangga bandung mahjong winsmahasiswa kkn beli iphone15 mahjong wins3 dakotamantan anak band influencer mahjong scatter hitampola rtp senin gates of olympus guru matematikaidola scatter hitam gampang meledakidola sensasi jackpotidola pola scatter hitamidola hasilkan jackpot dalam waktu singkatidola mahjong wins 3 bocortukang cuci motor menemukan keberuntungan di mahjong

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 282

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_cookie_params(): Cannot change session cookie parameters when headers already sent

Filename: Session/Session.php

Line Number: 294

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 304

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 314

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 315

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 316

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 317

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 375

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: drivers/Session_files_driver.php

Line Number: 108

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_save_handler(): Cannot change save handler when headers already sent

Filename: Session/Session.php

Line Number: 110

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_start(): Cannot start session when headers already sent

Filename: Session/Session.php

Line Number: 143

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

Sử dụng Route::controller và Route::resource trong laravel
LARAVEL 4X CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Bài 06: Sử dụng Route::controller và Route::resource trong laravel

Ở bài trước mình có giới thiệu tổng quan về rout trong Laravel và việc sử dụng các route post, get, any, ... để gọi đến 1 action của controller, nhưng nếu bạn có nhiều controller mà mỗi controller lại có nhiều action thì chẳng lẽ mỗi action ta viết 1 dòng Route::method() hay sao. Nên ở bài viết này mình sẽ giới thiệu và hướng dẫn sử dụng 2 route khá quan trọng trong laravel là Route::controller() và Route::resouce() có thể giải quyết vấn đề vừa nêu.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Route::controller trong laravel

Cú pháp sử dụng:

Route::controller($uri, $controller, $names);
//trong đó $names là một mảng quy định tên cho action trong controller, có thể có hoặc không.

Bài viết này được đăng tại [free tuts .net]

Ví dụ:

Giả sử bạn có controller là HomeController, controller này có 3 action khác nhau, nếu như theo bài trước thì cần phải viết 3 dòng cho 3 action của controller này. Nhưng nếu bạn sử dụng Route::controller() thì chỉ cần 1 dòng mà thôi:
Giả sử ta có 3 action như sau: File app/controllers/HomeController.php

<?php
	//Đây chỉ là một ví dụ nhỏ, bạn chưa cần để ý đến controller này nhiều
class HomeController extends Controller {
	public function getFirst(){
		return 'this is First action';
	}
	public function getSecond(){
		return 'this is Second action';
	}
	public function postThird(){
		return 'this is Third action';
	}
}

Bây giờ bạn mở file app/routes.php bạn thêm:

Route::controller('/controller','HomeController',['getFirst'=>'first','getSecond'=>'second','postThird'=>'third']);
/****************
trong đó:
/controller là uri
HomeController là controller sẽ hoạt động
['getFirst'=>'first','getSecond'=>'second','postThird'=>'third'] là một mảng chứa tên của các action của controller (tạm thời chưa cần quan tâm đến phần này).

**************/

Bây giờ bạn truy cập 3 vào 3 đường link:

http://tênmiềnảocủabạn/controller/first
http://tênmiềnảocủabạn/controller/second
http://tênmiềnảocủabạn/controller/third

Sẽ nhận được các kết quả tương ứng như sau: (nếu đường dẫn thứ 3 chỉ thông báo ra câu "Whoops, looks like something went wrong." thì bạn phải bật debug của laravel lên - mình đã nói đến ở cuối bài cấu trúc thư mục Laravel)

su dung route controller va routere source trong laravel PNG

su dung route controller va routere source trong laravel 2 PNG

su dung route controller va routere source trong laravel 3 400x213 PNG

Tới đây bạn sẽ có hai câu hỏi thắc mắc như sau:

  • 2 cái đầu chạy ngon ơ sao cái cuối lại lỗi kỳ ta?
  • Nếu như thế thì làm sao biết action nào nhận method POST, action nào nhận method GET để làm việc?

Chắc hẳn đây là 2 câu hỏi mà các bạn đang thắc mắc đúng không nào! Các bạn nhìn lại file HomeController đi, có thấy điểm gì đặc biệt ở các action không nào, đó chính là tiền tố get hoặc post, Laravel dựa vào tiền tố này để phân biệt action nào nhận POST action nào sẽ nhận GET. Đó chính là lý do vì sao ở action postThird báo lỗi, bởi vì khi bạn truy cập trên thanh địa chỉ thì đó là phương thức GET.

2. Route::resource() trong laravel

Route này được laravel tạo ra nhằm mục đích chính là xây dựng RESTful (xây dựng Webservice), route này sẽ đi kèm với một RESTful controller. Là người mới làm quen với laravel hay php thì route này chưa có nhiều ý nghĩa.

Trong RESTful controller sẽ có các action cơ bản sau:

//hiển thị cả danh sách
index()
//thêm mới
create()
//lưu trữ một tài nguyên mới
store()
//hiển thị 1 tài nguyên theo tham số truyền vào
show($id)
//sửa 1 tài nguyên theo tham số truyền vào
edit($id)
//cập nhật 1 tài nguyên theo tham số truyền vào
update($id)
//xóa 1 tài nguyên
destroy($id)
//trong đó $id là tham số truyền vào

Để tạo 1 RESTful controller thì có 2 cách:

  • Cách 1 là tự tạo bằng tay file controller
  • Cách 2: sử dụng dòng lệnh của laravel hỗ trợ

//Cú pháp sử dụng:
php artisan controller:make "têncontroller" [tùy chọn]
/**************************
Ví dụ:
//tạo RESTful controller với tên DemoController có đầy đủ các action<br />
php artisan controller:make DemoController<br />
//tạo RESTful controller với tên DemoController chỉ có 2 action là index và show
php artisan controller:make DemoController --only=index,show
//tạo RESTful controller với tên DemoController có tất cả action ngoại trừ index
php artisan controller:make DemoController --except=index
*************************/

Các action của RESTful controller mà Route::resource hỗ trợ:

Method URI Action Route name
GET /resource index resource.index
GET /resource/create create resource.create
POST /resource store resource.store
GET /resource/{id} show resource.show
GET /resource/{id}/edit edit resource.edit
PUT/PATCH /resource/{id} update resource.update
PUT/PATCH /resource/{id} destroy resource.destroy

Tuy route này khá quan trọng nhưng vì đang ở mức cơ bản nên mình chỉ giới thiệu qua cho các bạn biết.

3. Lời kết

Tới đây ta đã thấy laravel thật tuyệt vời phải không, chỉ với 2 loại route này đã giúp ta giảm được kha khá công sức rồi đó. Nhưng trong laravel không chỉ có vậy, và trong bài tiếp theo mình sẽ giới thiệu tới các bạn 2 loại route cũng không kém phần quan trọng đó là Route::filer và Route::group, hãy đón đọc nhé.

Cùng chuyên mục:

Cách sử dụng Relationships trong Laravel

Cách sử dụng Relationships trong Laravel

Cách dùng Encryption và decryption trong Laravel

Cách dùng Encryption và decryption trong Laravel

Cách sử dụng Error Handling trong Laravel

Cách sử dụng Error Handling trong Laravel

Cách dùng URL Generation trong Larevel

Cách dùng URL Generation trong Larevel

Cách sử dụng Email Verification trong Laravel

Cách sử dụng Email Verification trong Laravel

Facades là gì? Cách dùng Facades trong Laravel

Facades là gì? Cách dùng Facades trong Laravel

Tìm hiểu và sử dụng Service Provider trong Laravel

Tìm hiểu và sử dụng Service Provider trong Laravel

Sử dụng Service Container trong Laravel dễ dàng

Sử dụng Service Container trong Laravel dễ dàng

Cách xử lý đa ngôn ngữ trong Laravel dễ dàng

Cách xử lý đa ngôn ngữ trong Laravel dễ dàng

Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản

Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản

Cách dùng Event Sourcing trong Laravel

Cách dùng Event Sourcing trong Laravel

Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel

Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel

Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ

Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ

Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản

Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản

Cách dùng Long polling trong Laravel để cải thiện trải nghiệm

Cách dùng Long polling trong Laravel để cải thiện trải nghiệm

Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime

Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime

Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime

Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime

Laravel WebSockets, các bước tạo WebSockets trong Laravel

Laravel WebSockets, các bước tạo WebSockets trong Laravel

Real-time web applications là gì ? Tầm quan trọng  trong Laravel

Real-time web applications là gì ? Tầm quan trọng trong Laravel

Cách tạo Database Testing trong Laravel

Cách tạo Database Testing trong Laravel

Top