Welcome Guest, Not a member yet? Register   Sign In
Class PageNotFoundException not found
#1

Sometimes weird issues arise...at least until I won't understand how CI4 works.
When I call the Show method in following controller:
Code:
namespace Admin\Controllers;

use App\Controllers\BaseController;
use CodeIgniter\HTTP\ResponseInterface;
use App\Models\UserModel;
use Codeigniter\Shield\Entities\User;
use Codeigniter\Exceptions\PageNotFoundException;

class Users extends BaseController
{
    private UserModel $model;

    public function __construct()
    {
        $this->model = new UserModel;
    }

    public function index()
    {
        $users = $this->model->orderBy('created_at')->paginate(3);
        $this->viewData['users'] = $users;
        $this->viewData['pager'] = $this->model->pager;
        return view('Admin\Views\Users\index', $this->viewData);
    }

    public function show($id)
    {
        $user = $this->getUserOr404($id);
        $this->viewData['user'] = $user;
        return view('Admin\Views\Users\show', $this->viewData);
    }

    private function getUserOr404($id): User
    {
        $user = $this->model->find($id);

        if($user === null)
        {
            throw new PageNotFoundException("User not found");
        }

        return $user;
    }
}

I get the error...can I ask why this happens? I have no idea how to fix it
Class "Codeigniter\Exceptions\PageNotFoundException" not found
ROOTPATH\Admin\Controllers\Users.php at line 51
Code:
44    private function getUserOr404($id): User
45    {
46        $user = $this->model->find($id);
47        //$user = $model->find($id);
48
49        if($user === null)
50        {
51            throw new PageNotFoundException("User not found");
52            //throw PageNotFoundException::forPageNotFound();
53        }
54
55        return $user;
56    }
57 }
Reply
#2

Show us your routes so that we may be able to help you with this problem.

PHP Code:
php spark routes 
What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )
Reply
#3

Thanks for your time InsiteFX.
I got the following error trying to execute the spark routes command  Huh
(  The words in italian: "il filtro deve avere un alias di riferimento definito" could be translated as : "The filter must have a defined alias" )

Code:
[CodeIgniter\Filters\Exceptions\FilterException]
{0} il filtro deve avere un alias di riferimento definito.
at SYSTEMPATH\Filters\Filters.php:495
Backtrace:
  1    SYSTEMPATH\Filters\Filters.php:495
      CodeIgniter\Filters\Exceptions\FilterException::forNoAlias('login')
  2    SYSTEMPATH\Filters\Filters.php:547
      CodeIgniter\Filters\Filters()->enableFilter('login', 'before')
  3    SYSTEMPATH\Commands\Utilities\Routes\FilterFinder.php:59
      CodeIgniter\Filters\Filters()->enableFilters([...], 'before')
  4    SYSTEMPATH\Commands\Utilities\Routes\FilterCollector.php:78
      CodeIgniter\Commands\Utilities\Routes\FilterFinder()->find('articles')
  5    SYSTEMPATH\Commands\Utilities\Routes.php:113
      CodeIgniter\Commands\Utilities\Routes\FilterCollector()->get('GET', 'articles')
  6    SYSTEMPATH\CLI\Commands.php:70
      CodeIgniter\Commands\Utilities\Routes()->run([])
  7    SYSTEMPATH\CLI\Console.php:48
      CodeIgniter\CLI\Commands()->run('routes', [])
  8    SYSTEMPATH\Boot.php:360
      CodeIgniter\CLI\Console()->run()
  9    SYSTEMPATH\Boot.php:104
      CodeIgniter\Boot::runCommand(Object(CodeIgniter\CLI\Console))
10    ROOTPATH\spark:84
      CodeIgniter\Boot::bootSpark(Object(Config\Paths))
D:\Aero Club Belluno\composer-aeclidb>
Reply
#4

Have a look at App/config/Filters.php

heres mine

Code:
public array $aliases = [
        'csrf'          => CSRF::class,
        'toolbar'       => DebugToolbar::class,
        'honeypot'      => Honeypot::class,
        'invalidchars'  => InvalidChars::class,
        'secureheaders' => SecureHeaders::class,
        'cors'          => Cors::class,
        'forcehttps'    => ForceHTTPS::class,
        'pagecache'     => PageCache::class,
        'performance'   => PerformanceMetrics::class,
         'myfilter'=> \App\Filters\MyFilter::class
    ];
i am defining MyFilter.php class as "myfilter" ; shield uses filters so have a quick look.
CMS CI4 A CMS system, runs out of the box written on top of CI4
Arch Book  CodeIgniter4 on Apache(pages 92-114) 
Reply




Theme © iAndrew 2016 - Forum software by © MyBB