Pages

Sunday, February 18, 2018

Di chuyển controller trong Laravel sang sub-folder.

Mặc định thư mục controller của Laravel nằm trong thư mục: app\Http\Controllers.

Trong thư mục này, Laravel thiết kế sẵn một file Controller mặc định và một controller có tên HomeController dùng để điều khiển việc login/đăng ký. Tất cả các controller thiết kế đều extends Controller này.

Noted: cái controller mặc định không có S ở tên, nhưng nó nằm trong thư mục Controllers có S.

app\Http\Controllers\Controller

Khi số lượng Controller tăng lên, ta có nhu cầu chuyển Controller vào các thư mục hoặc tiểu thư mục (sub-folder). Ví dụ ta có sub-folder cho front-end và một sub-folder cho back-end.

Khi ta chuyển các controller sang các sub-folder trong thư mục Controllers thì đương nhiên, một số việc cần phải làm.

1) namespace mặc định, từ: namespace App\Http\Controllers;

sẽ thành: namespace App\Http\Controllers\frontend;

2) vì ta viết controller mới trong thư mục mới, nên ta phải triệu gọi Controller mặc định bằng lệnh: use App\Http\Controllers\Controller;

nếu không, ta không thể extends được.

3) Do đổi vị trí của controller nên đương nhiên route cũng phải đổi.

Từ Route::get('/', 'PhotoController@index')->name('photo.index');

Đổi thành Route::get('/', 'frontend\PhotoController@index')->name('photo.index');

Ta còn có cách nữa khi chỉnh sửa Route là dùng namespace. Ta cần đưa vào group như sau:

Route::group(['prefix' => 'admin', 'as' => 'admin.', 'namespace' => 'backend'], function(){

// các route

No comments:

Post a Comment