Welcome Guest, Not a member yet? Register   Sign In
CI3 to CI4 Migrations (__construct)
#1

Hello,

i'm currently migrating a CI3 project over to CI4, my old project relied heavily on __constructor() so that each extended controller would require this.
PHP Code:
public function __construct($permission_to_check)
 
   {
 
       parent::__construct();
 
       $this->lang->load('2fa/2fa_error_messages'$this->user_lang);
 
       $this->permission_to_check $permission_to_check;
 
       if(!$this->check_permission($this->permission_to_check)){
 
           redirect('home');
 
       }
 
   

So each extended controller checks a specific permission on construct and redirects if the permission is not set.

PHP Code:
parent::__construct('has_perm_024D'); 


In CI4 i've noticed that __construct() is no longer required i wonder if it's still a "good practice"  to use the __construct() function or is there a way to achieve this with the initController function.

It might be a silly question but i want to get it right from the start Big Grin

Thanks for the tips and / or info.

Best regards,
Bart
Reply
#2

You can definitely use the constructor for almost anything you need to. It was purposefully left blank so framework code didn't get in the way of what you needed.

However, redirects no longer work from within constructors. Instead, you should look at controller filters for permission checks and the like.
Reply
#3

Hi kilishan,

Thanks for the information. I've just stumbled upon the filters myself, you suggestion confirms that i'm in the right place.
Looks like Before Filters can replace __construct() in my case , yet is still have to figure out how to pass the $permission_to_check arg to it.
Reply
#4

(04-16-2019, 06:42 AM)kilishan Wrote: You can definitely use the constructor for almost anything you need to. It was purposefully left blank so framework code didn't get in the way of what you needed.

However, redirects no longer work from within constructors. Instead, you should look at controller filters for permission checks and the like.

Hi Kilishan,

I finally dived into codeigniter 4 's Controller filters and must say: i'm amazed how powerful this really is. Compared to Codeigniter 3 this is a serious code reduction for some projects.

Thank you pointing me into the right direction.
Reply
#5

(05-07-2019, 06:27 AM)bartMommens Wrote:
(04-16-2019, 06:42 AM)kilishan Wrote: You can definitely use the constructor for almost anything you need to. It was purposefully left blank so framework code didn't get in the way of what you needed.

However, redirects no longer work from within constructors. Instead, you should look at controller filters for permission checks and the like.

Hi Kilishan,

I finally dived into codeigniter 4 's Controller filters and must say: i'm amazed how powerful this really is. Compared to Codeigniter 3 this is a serious code reduction for some projects.

Thank you pointing me into the right direction.

Hey bartMommens, glad you think so! It will hopefully proved to be really powerful and flexible for many needs, so looking forward to seeing how it gets used!
Reply
#6

(04-16-2019, 06:42 AM)kilishan Wrote: You can definitely use the constructor for almost anything you need to. It was purposefully left blank so framework code didn't get in the way of what you needed.

However, redirects no longer work from within constructors. Instead, you should look at controller filters for permission checks and the like.

If I am right understanding the Controller Filters starting working before apps controllers and check url's or form action type as hooks in CI3 ?
Reply
#7

(05-07-2019, 09:02 PM)Avega Soft Wrote:
(04-16-2019, 06:42 AM)kilishan Wrote: You can definitely use the constructor for almost anything you need to. It was purposefully left blank so framework code didn't get in the way of what you needed.

However, redirects no longer work from within constructors. Instead, you should look at controller filters for permission checks and the like.

If I am right understanding the Controller Filters starting working before apps controllers and check url's or form action type as hooks in CI3 ?

Controller filters will be ran either just before running the controller method, or just after. There are still "hooks" in CI4 similar to what you're used to in CI3, but they've been renamed to "Events" now and made more flexible.

https://codeigniter4.github.io/CodeIgnit...vents.html
Reply
#8

(05-08-2019, 07:05 AM)kilishan Wrote:
(05-07-2019, 09:02 PM)Avega Soft Wrote:
(04-16-2019, 06:42 AM)kilishan Wrote: You can definitely use the constructor for almost anything you need to. It was purposefully left blank so framework code didn't get in the way of what you needed.

However, redirects no longer work from within constructors. Instead, you should look at controller filters for permission checks and the like.

If I am right understanding the Controller Filters starting working before apps controllers and check url's or form action type as hooks in CI3 ?

Controller filters will be ran either just before running the controller method, or just after. There are still "hooks" in CI4 similar to what you're used to in CI3, but they've been renamed to "Events" now and made more flexible.

https://codeigniter4.github.io/CodeIgnit...vents.html

Thank you for the answer, you helped me a lot.
Reply
#9

(05-10-2019, 12:12 AM)Avega Soft Wrote:
(05-08-2019, 07:05 AM)kilishan Wrote:
(05-07-2019, 09:02 PM)Avega Soft Wrote:
(04-16-2019, 06:42 AM)kilishan Wrote: You can definitely use the constructor for almost anything you need to. It was purposefully left blank so framework code didn't get in the way of what you needed.

However, redirects no longer work from within constructors. Instead, you should look at controller filters for permission checks and the like.

If I am right understanding the Controller Filters starting working before apps controllers and check url's or form action type as hooks in CI3 ?

Controller filters will be ran either just before running the controller method, or just after. There are still "hooks" in CI4 similar to what you're used to in CI3, but they've been renamed to "Events" now and made more flexible.

https://codeigniter4.github.io/CodeIgnit...vents.html



how did you share the code sample
Reply




Theme © iAndrew 2016 - Forum software by © MyBB