Welcome Guest, Not a member yet? Register   Sign In
ErrorException #64 Declaration of App\Filters\LoginFilter::before(CodeIgniter\HTTP\Re
#1

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??
Reply
#2

Are you implementing from FilterInterface?
Reply
#3
Photo 
(This post was last modified: 12-03-2020, 07:20 AM by raajaud.)

(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]...
Reply
#4

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
What did you Try? What did you Get? What did you Expect?

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

(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....
Reply




Theme © iAndrew 2016 - Forum software by © MyBB