ບັນທຶກການ Upgrade Laravel 4.0 -> 5.5
ບັນທຶກນີ້ເປັນອາການຄືກັບ ດິນພອກຫາງຫມູ
ເນື່ອງຈາກລະບົບທີ່ໃຫ້ບໍລິການລູກຄ້າແລ້ວມາດົນຫລາຍປີໃຊ້ Laravel 4.0 ແຕ່ບໍ່ໄດ້ອັບເດດ ປັນຫາຄືມັນມີບາງຢ່າງທີ່ຕ້ອງໄດ້ເຮັດເພິ່ມຈົນຕ້ອງການລົງ Lib ເພີ່ມ.
ປັນຫາເກີດຂຶ້ນຄື Lib Repo Outdate ແລະ ມັນບໍ່ຮອງຮັບ
ກໍໄດ້ມານັ່ງງົມ Up version ກັນ ຫລ້າສຸດມື້ນີ້ ວັນທີ 29 ກັນຍາ 2017 ຫາກໍຮອດ Laravel Framework version 5.1.46 (LTS) ຍັງ ອີກ 5.2, 5.3, 5.4, 5.5
ສຳລັບຂັ້ນຕອນແມ່ນ ໄລ່ລຽງມາຕາມນີ້ເລີຍ https://laravel.com/docs/5.3/upgrade#upgrade-4.1
ສຳລັບ ຕໍ່ໄປນີ້ຈະເປັນການ ບັນທຶກ ປັນຫາທີ່ພົບແລະການແກ້ປັນຫາ
ປັນຫາທີ່ 1
ປັນຫາ Error Pagination ເນື່ອງຈາກ ໃນເວີຊັ່ນ 5 ມີການປ່ຽນແປງຟັງຊັ່ນໃນການແບ່ງຫນ້າ ຈາກແບບເກົ່າເປັນແບບໃຫມ່ ເຊັ່ນ : $paginator->links() with $paginator->render().
Pagination Replace any calls to $paginator->links() with $paginator->render(). Replace any calls to $paginator->getFrom() and $paginator->getTo() with $paginator->firstItem() and $paginator->lastItem() respectively. Remove the "get" prefix from calls to $paginator->getPerPage(), $paginator->getCurrentPage(), $paginator->getLastPage() and $paginator->getTotal() (e.g. $paginator->perPage()).
ປັນກາທີ່ 2 Middleware
ຈາກ route.php ແມ່ນໃນ ເວີຊັ່ນເກົ່າ ແມ່ນໃຊ້ຄຳສັ່ງ if (Auth::check() && (Auth::user()->inbox_role==’yes’)) {ເພື່ອການກວດສອບສິດຂອງ User ແຕ່ໃນ Laravel 5 ເຂົາໄດ້ປ່ຽນມາເປັນ Middleware ໃນການກວດສອບ ແທນຈາກ Code ເກົ່າໃນ route.php ຈະເຮັດໃຫ້ ບໍ່ເຫັນ route
if (Auth::check() && (Auth::user()->inbox_role=='yes')) { Route::get('/', ['as' => 'home', 'uses' => 'TrackingController@listProcess']); } else {
ວິທີແກ້ຄື setup middleware
ໃນຄອມມານ
php artisan make:middleware InboxRole
ຈາກນັ້ນລະບົບຈະສ້າງໄຟລອອກມາ ໄວ້ທີ່
App/Http/Middleware/InboxRole.php
ຈາກນັ້ນກໍໄປແກ້ ໃນໄຟລ
if (!$request->user()->inbox_role=='yes') { returnredirect('/'); //return redirect('/rerror404'); to redirect to any page }
ໃນທີ່ນີ້ສັງເກດວ່າເຮົາຈະປ່ຽນ Code ຈາກ if (Auth::check() && (Auth::user()->inbox_role==’yes’)) ມາເປັນ
if (!$request->user()->inbox_role==’yes’)
ເຊິ່ງແປວ່າ ຫາກ $request->user()->inbox_role==’yes’ ບໍ່ມີ ຄ່າ yes ແມ່ນຈະໃຫ້ redirect ໄປ /
ຫລັງຈາກນັ້ນ ກໍໄປ register Middleware ໃນ Kernel.php
ຈາກນັ້ນກໍເອົາໄປໃສ່ protected $routeMiddleware= [ ແລ້ວ ເພີ່ມ route ໃສ່ໄປແບບນີ້
'inbox_role' => 'App\Http\Middleware\InboxRole',
ຈານັ້ນກໍແກ້ file route.php ໃຫ້ເປັນ
ຈາກ
if (Auth::check() && (Auth::user()->inbox_role=='yes')) { Route::get('/', ['as' => 'home', 'uses' => 'TrackingController@listProcess']); }
ໃຫ້ເປັນ
Route::group(['middleware' => 'inbox_role'], function () { Route::get('/', ['as' => 'home', 'uses' => 'TrackingController@listProcess']); });
ກໍຖືວ່າເປັນ ການປ່ຽນມາໃຊ້ Middleware ແບບສົມບູນແລ້ວ