CodeIgniter Forums
ErrorException #64 Declaration of App\Filters\LoginFilter::before(CodeIgniter\HTTP\Re - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: CodeIgniter 4 (https://forum.codeigniter.com/forumdisplay.php?fid=28)
+--- Forum: CodeIgniter 4 Support (https://forum.codeigniter.com/forumdisplay.php?fid=30)
+--- Thread: ErrorException #64 Declaration of App\Filters\LoginFilter::before(CodeIgniter\HTTP\Re (/showthread.php?tid=78109)



ErrorException #64 Declaration of App\Filters\LoginFilter::before(CodeIgniter\HTTP\Re - raajaud - 12-01-2020

ErrorException #64

Declaration of App\Filters\LoginFilter::before(CodeIgniter\HTTP\RequestInterface $request) must be compatible with CodeIgniter\Filters\FilterInterface::before(CodeIgniter\HTTP\RequestInterface $request, $arguments = NULL) 

I am working on codeIgniter 4.0.4 facing this problem with Login Filters.

Please suggest what to do??


RE: ErrorException #64 Declaration of App\Filters\LoginFilter::before(CodeIgniter\HTTP\Re - ardritkrasniqi - 12-02-2020

Are you implementing from FilterInterface?


RE: ErrorException #64 Declaration of App\Filters\LoginFilter::before(CodeIgniter\HTTP\Re - raajaud - 12-03-2020

(12-02-2020, 07:20 AM)ardritkrasniqi Wrote: Are you implementing from FilterInterface?
Here is my code: 

app/Filters/LoginFilter.php
Code:
<?php

namespace App\Filters;

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Filters\FilterInterface;

class LoginFilter implements FilterInterface {

    public function before(RequestInterface $request) {
        $session = session();
        if($session->has('username')) {
            return redirect()->to('/home/working');
        }
    }
    //--------------------------------------------------------------------

    public function after(RequestInterface $request, ResponseInterface $response) {
        // Do something here
        }

}



app/Controllers/Home.php

Code:
<?php namespace App\Controllers;

class Home extends BaseController
{
    public function index()
    {
        return view('welcome_message');
    }
   
   
   
    public function working()
    {
        // some random text
        echo "Filter Working";
    }


}




app/Config/Filters.php
Code:
<?php namespace Config;

use CodeIgniter\Config\BaseConfig;


class Filters extends BaseConfig
{
    public $aliases = [
        'csrf'       => \CodeIgniter\Filters\CSRF::class,
        'toolbar'    => \CodeIgniter\Filters\DebugToolbar::class,
        'honeypot'   => \CodeIgniter\Filters\Honeypot::class,
        'login'      => \App\Filters\LoginFilter::class,
    ];

    public $globals = [
        'before' => [
            'login',
           
        ],
        'after'  => [
            'toolbar',
           
        ],
    ];

    public $methods = [];

    public $filters = [];
}



Error: see [attachment]...


RE: ErrorException #64 Declaration of App\Filters\LoginFilter::before(CodeIgniter\HTTP\Re - InsiteFX - 12-03-2020

Your missing the arguments parameter on the end of the before and after.

PHP Code:
public function before(RequestInterface $request$arguments null)

public function 
after(RequestInterface $requestResponseInterface $response$arguments null



RE: ErrorException #64 Declaration of App\Filters\LoginFilter::before(CodeIgniter\HTTP\Re - raajaud - 12-04-2020

(12-03-2020, 05:14 PM)InsiteFX Wrote: Your missing the arguments parameter on the end of the before and after.

PHP Code:
public function before(RequestInterface $request$arguments null)

public function 
after(RequestInterface $requestResponseInterface $response$arguments null

Yes I missed the parameter, 

Thank You very much , its now working....