Posts: 26
Threads: 8
Joined: Dec 2018
Reputation:
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
Thanks for the tips and / or info.
Best regards,
Bart
Posts: 1,285
Threads: 65
Joined: Oct 2014
Reputation:
82
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.
Posts: 26
Threads: 8
Joined: Dec 2018
Reputation:
1
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.
Posts: 26
Threads: 8
Joined: Dec 2018
Reputation:
1
(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.
Posts: 1,285
Threads: 65
Joined: Oct 2014
Reputation:
82
(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!
Posts: 54
Threads: 6
Joined: Jan 2019
Reputation:
1
(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 ?
Posts: 1,285
Threads: 65
Joined: Oct 2014
Reputation:
82
(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
Posts: 54
Threads: 6
Joined: Jan 2019
Reputation:
1
(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.
Posts: 7
Threads: 3
Joined: Dec 2019
Reputation:
0
(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
|