Closed reactmore closed 2 years ago
It seems you don't pass $pager
to your view.
So it is natural the error Undefined variable $pager
.
I don't get what you do. Can you show us minimum code to reproduce the error? The code you wrote does not work on my environment.
It seems you don't pass
$pager
to your view. So it is natural the errorUndefined variable $pager
.I don't get what you do. Can you show us minimum code to reproduce the error? The code you wrote does not work on my environment.
in the previous version the variable was passed
this is the code https://github.com/reactmore/pagination-codeigniter
@reactmore Thank you for the code.
I don't know why you wrote such code, but
you still did not pass $pager
to your view.
In the previous versions $pager
was passed, but it was a bug.
Workaround:
--- a/app/Controllers/Home.php
+++ b/app/Controllers/Home.php
@@ -3,6 +3,8 @@
namespace App\Controllers;
use App\Models\UsersModel;
+use CodeIgniter\Pager\PagerRenderer;
+use Config\Services;
class Home extends BaseController
{
@@ -14,6 +16,8 @@ class Home extends BaseController
$pager = paginate(20, $numRows);
$data['users'] = $usersModel->getUsersPaginated(20, $pager->offset);
+ $data['pager'] = new PagerRenderer(Services::pager()->getDetails());
+
return view('welcome_message', $data);
}
}
I recommend you use the framework functionality.
--- a/app/Config/Pager.php
+++ b/app/Config/Pager.php
@@ -21,7 +21,7 @@ class Pager extends BaseConfig
* @var array<string, string>
*/
public $templates = [
- 'default_full' => 'CodeIgniter\Pager\Views\default_full',
+ 'default_full' => 'App\Views\_pagination',
'default_simple' => 'CodeIgniter\Pager\Views\default_simple',
'default_head' => 'CodeIgniter\Pager\Views\default_head',
];
diff --git a/app/Controllers/Home.php b/app/Controllers/Home.php
index a31d6fc..02011c3 100644
--- a/app/Controllers/Home.php
+++ b/app/Controllers/Home.php
@@ -10,9 +10,10 @@ class Home extends BaseController
{
$usersModel = new UsersModel();
- $numRows = $usersModel->getUsersCount();
- $pager = paginate(20, $numRows);
- $data['users'] = $usersModel->getUsersPaginated(20, $pager->offset);
+ $data = [
+ 'users' => $usersModel->paginate(20),
+ 'pager' => $usersModel->pager,
+ ];
return view('welcome_message', $data);
}
diff --git a/app/Models/UsersModel.php b/app/Models/UsersModel.php
index 393aa26..60dc861 100644
--- a/app/Models/UsersModel.php
+++ b/app/Models/UsersModel.php
@@ -8,6 +8,8 @@ class UsersModel extends Model
{
protected $allowedFields = ['username', 'address'];
+ protected $returnType = 'object';
+
public function __construct()
{
parent::__construct();
diff --git a/app/Views/welcome_message.php b/app/Views/welcome_message.php
index 9dedf74..6f7c1e0 100644
--- a/app/Views/welcome_message.php
+++ b/app/Views/welcome_message.php
@@ -302,7 +302,7 @@
</div>
- <?= view('_pagination'); ?>
+ <?= $pager->links() ?>
</section>
I recommend you use the framework functionality.
--- a/app/Config/Pager.php +++ b/app/Config/Pager.php @@ -21,7 +21,7 @@ class Pager extends BaseConfig * @var array<string, string> */ public $templates = [ - 'default_full' => 'CodeIgniter\Pager\Views\default_full', + 'default_full' => 'App\Views\_pagination', 'default_simple' => 'CodeIgniter\Pager\Views\default_simple', 'default_head' => 'CodeIgniter\Pager\Views\default_head', ]; diff --git a/app/Controllers/Home.php b/app/Controllers/Home.php index a31d6fc..02011c3 100644 --- a/app/Controllers/Home.php +++ b/app/Controllers/Home.php @@ -10,9 +10,10 @@ class Home extends BaseController { $usersModel = new UsersModel(); - $numRows = $usersModel->getUsersCount(); - $pager = paginate(20, $numRows); - $data['users'] = $usersModel->getUsersPaginated(20, $pager->offset); + $data = [ + 'users' => $usersModel->paginate(20), + 'pager' => $usersModel->pager, + ]; return view('welcome_message', $data); } diff --git a/app/Models/UsersModel.php b/app/Models/UsersModel.php index 393aa26..60dc861 100644 --- a/app/Models/UsersModel.php +++ b/app/Models/UsersModel.php @@ -8,6 +8,8 @@ class UsersModel extends Model { protected $allowedFields = ['username', 'address']; + protected $returnType = 'object'; + public function __construct() { parent::__construct(); diff --git a/app/Views/welcome_message.php b/app/Views/welcome_message.php index 9dedf74..6f7c1e0 100644 --- a/app/Views/welcome_message.php +++ b/app/Views/welcome_message.php @@ -302,7 +302,7 @@ </div> - <?= view('_pagination'); ?> + <?= $pager->links() ?> </section>
So there's the problem, it's going to take a lot of time to convert the query builder to used modeling
thanks for telling me
PHP Version
8.0
CodeIgniter4 Version
4.2.3
CodeIgniter4 Installation Method
Composer (using
codeigniter4/appstarter
)Which operating systems have you tested for this bug?
Windows
Which server did you use?
apache
Database
MySQL 5.6
What happened?
After update from version 4.2.1 pagination gives error message
ErrorException Undefined variable $pager APPATH\Views\admin\includes\_pagination.php at line 1
$pager variable is not detected in my custom pagination file then I found the change at this line if I return to this line to code version 4.2.1 its no problem
Steps to Reproduce
Controller :
Custom Helper :
Expected Output
Pagination is Showing
Anything else?
Version 4.2.1 Version 4.2.3