<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[CodeIgniter Forums - All Forums]]></title>
		<link>https://forum.codeigniter.com/</link>
		<description><![CDATA[CodeIgniter Forums - https://forum.codeigniter.com]]></description>
		<pubDate>Wed, 15 Apr 2026 02:07:53 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[*.env file in different location]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=94011</link>
			<pubDate>Tue, 14 Apr 2026 16:39:24 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=7167">petewulf1</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=94011</guid>
			<description><![CDATA[Hello guys,<br />
It seems there is no official way to place the *.env file at a different location than the projects root folder. Why?<br />
What would be an appropriate way to load from a different location without having to overwrite Boot.php?<br />
Thanks!<br />
Daniel]]></description>
			<content:encoded><![CDATA[Hello guys,<br />
It seems there is no official way to place the *.env file at a different location than the projects root folder. Why?<br />
What would be an appropriate way to load from a different location without having to overwrite Boot.php?<br />
Thanks!<br />
Daniel]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[feat(DI): Some dependency injection in CI]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=94010</link>
			<pubDate>Tue, 14 Apr 2026 11:45:26 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=197882">patel-vansh</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=94010</guid>
			<description><![CDATA[Hi everyone,<br />
After working with CodeIgniter 4, I wanted to share some thoughts on Dependency Injection and CodeIgniter 4:<br />
This is not a proposal to replace CI4’s simplicity or turn it into another framework. The goal would be to modernize dependency management in a way that still respects CI4’s philosophy: <span style="font-weight: bold;" class="mycode_b">simple, predictable, explicit, and lightweight</span>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Why Discuss This?</span><br />
The current Services pattern works well and is easy to understand, but it also has some limitations for larger or more modular applications:<br />
- Uses a service locator pattern rather than constructor injection<br />
- Manual dependency wiring increases as projects grow<br />
For many apps this is not a problem. But for larger projects, cleaner dependency management can be valuable.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Suggested Direction</span><br />
Introduce a <span style="font-weight: bold;" class="mycode_b">small optional container</span> that can coexist with the current system.<br />
Example:<br />
In the bootstrap process, you can inject any class:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">container</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">bind</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">UserRepositoryInterface</span><span style="color: #007700">::class,&nbsp;</span><span style="color: #0000BB">DatabaseUserRepository</span><span style="color: #007700">::class&nbsp;);&nbsp;<br /></span></code></div></div></div>And just use it via constructor injection:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">UserService&nbsp;</span><span style="color: #007700">{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">__construct</span><span style="color: #007700">(&nbsp;private&nbsp;</span><span style="color: #0000BB">readonly&nbsp;UserRepositoryInterface&nbsp;&#36;repo&nbsp;</span><span style="color: #007700">)&nbsp;{}<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">getUser</span><span style="color: #007700">(</span><span style="color: #0000BB">int&nbsp;&#36;userId</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">repo</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getUser</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;userId</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}<br />}&nbsp;<br /></span></code></div></div></div>Then, in controller:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;service&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">container</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #0000BB">UserService</span><span style="color: #007700">::class);&nbsp;<br /></span></code></div></div></div>This would automatically resolve dependencies recursively.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Example Binding Types</span><br />
Class to class:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">container</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">bind</span><span style="color: #007700">(&nbsp;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;CacheInterface</span><span style="color: #007700">::class,<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;FileCache</span><span style="color: #007700">::class<br />);&nbsp;<br /></span></code></div></div></div>Factory closure:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">container</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">bind</span><span style="color: #007700">(</span><span style="color: #0000BB">UserService</span><span style="color: #007700">::class,&nbsp;function&nbsp;(</span><span style="color: #0000BB">&#36;c</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;new&nbsp;</span><span style="color: #0000BB">UserService</span><span style="color: #007700">(<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;&#36;c</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #0000BB">UserRepository</span><span style="color: #007700">::class),<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'foo'<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">);<br />});&nbsp;<br /></span></code></div></div></div>Useful when primitives/config values are needed.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Why This Could Benefit CI4</span><br />
Better testability<br />
Cleaner architecture for medium/large apps<br />
Better package/module ecosystem<br />
Modern PHP patterns while preserving CI4 simplicity<br />
Gradual adoption with zero breakage<br />
<br />
After some time, maybe, we can make the current service calls go through this container system, like this:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">cache</span><span style="color: #007700">(</span><span style="color: #0000BB">bool&nbsp;&#36;getShared&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">&#36;getShared</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">container</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">singleton</span><span style="color: #007700">(</span><span style="color: #0000BB">CacheInterface</span><span style="color: #007700">::class);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">container</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #0000BB">CacheInterface</span><span style="color: #007700">::class);<br />}&nbsp;<br /></span></code></div></div></div>]]></description>
			<content:encoded><![CDATA[Hi everyone,<br />
After working with CodeIgniter 4, I wanted to share some thoughts on Dependency Injection and CodeIgniter 4:<br />
This is not a proposal to replace CI4’s simplicity or turn it into another framework. The goal would be to modernize dependency management in a way that still respects CI4’s philosophy: <span style="font-weight: bold;" class="mycode_b">simple, predictable, explicit, and lightweight</span>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Why Discuss This?</span><br />
The current Services pattern works well and is easy to understand, but it also has some limitations for larger or more modular applications:<br />
- Uses a service locator pattern rather than constructor injection<br />
- Manual dependency wiring increases as projects grow<br />
For many apps this is not a problem. But for larger projects, cleaner dependency management can be valuable.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Suggested Direction</span><br />
Introduce a <span style="font-weight: bold;" class="mycode_b">small optional container</span> that can coexist with the current system.<br />
Example:<br />
In the bootstrap process, you can inject any class:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">container</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">bind</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">UserRepositoryInterface</span><span style="color: #007700">::class,&nbsp;</span><span style="color: #0000BB">DatabaseUserRepository</span><span style="color: #007700">::class&nbsp;);&nbsp;<br /></span></code></div></div></div>And just use it via constructor injection:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">UserService&nbsp;</span><span style="color: #007700">{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">__construct</span><span style="color: #007700">(&nbsp;private&nbsp;</span><span style="color: #0000BB">readonly&nbsp;UserRepositoryInterface&nbsp;&#36;repo&nbsp;</span><span style="color: #007700">)&nbsp;{}<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">getUser</span><span style="color: #007700">(</span><span style="color: #0000BB">int&nbsp;&#36;userId</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">repo</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getUser</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;userId</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}<br />}&nbsp;<br /></span></code></div></div></div>Then, in controller:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;service&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">container</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #0000BB">UserService</span><span style="color: #007700">::class);&nbsp;<br /></span></code></div></div></div>This would automatically resolve dependencies recursively.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Example Binding Types</span><br />
Class to class:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">container</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">bind</span><span style="color: #007700">(&nbsp;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;CacheInterface</span><span style="color: #007700">::class,<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;FileCache</span><span style="color: #007700">::class<br />);&nbsp;<br /></span></code></div></div></div>Factory closure:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">container</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">bind</span><span style="color: #007700">(</span><span style="color: #0000BB">UserService</span><span style="color: #007700">::class,&nbsp;function&nbsp;(</span><span style="color: #0000BB">&#36;c</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;new&nbsp;</span><span style="color: #0000BB">UserService</span><span style="color: #007700">(<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;&#36;c</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #0000BB">UserRepository</span><span style="color: #007700">::class),<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'foo'<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">);<br />});&nbsp;<br /></span></code></div></div></div>Useful when primitives/config values are needed.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Why This Could Benefit CI4</span><br />
Better testability<br />
Cleaner architecture for medium/large apps<br />
Better package/module ecosystem<br />
Modern PHP patterns while preserving CI4 simplicity<br />
Gradual adoption with zero breakage<br />
<br />
After some time, maybe, we can make the current service calls go through this container system, like this:<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">cache</span><span style="color: #007700">(</span><span style="color: #0000BB">bool&nbsp;&#36;getShared&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">&#36;getShared</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">container</span><span style="color: #007700">()-&gt;</span><span style="color: #0000BB">singleton</span><span style="color: #007700">(</span><span style="color: #0000BB">CacheInterface</span><span style="color: #007700">::class);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">container</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #0000BB">CacheInterface</span><span style="color: #007700">::class);<br />}&nbsp;<br /></span></code></div></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Boosting CI4 popularity]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=94009</link>
			<pubDate>Mon, 13 Apr 2026 15:50:33 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=7143">enlivenapp</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=94009</guid>
			<description><![CDATA[I've been a rabid supporter of CI since 1.7.2.  During the 'great lull' Codeigniter really took a hard hit with Laravel coming up and many devs jumping ship. I really want to do my part to help CI get back to the popularity it once had and (*gasp*) maybe rival Laravel.   <br />
<br />
While I've been working on my CMS, I've found, what I feel, would be one of the best ways to implement such functionality similar to what Laraval offers. Their Service Providers solution to adding whatever package you want to use would be a massive advantage to Codeigniter.<br />
<br />
The one argument I often hear/read is 'composer whatever' has this, just 'composer require' it and use it (usually coming across as kinda negative nancy since text has no real context).  I get that and it's 100% true, but that advice doesn't really cut it when CI is better than many frameworks in many ways but kinda can't get out of it's own way.  <br />
  <br />
As always, lively discussion is wanted, I'd really like to hear from the Foundation devs too.  Is there any interest from the Foundation to create a Service Provider/Packages and much expanded spark CLI kind of ecosystem for Codeigniter? <br />
<br />
Happy coding.]]></description>
			<content:encoded><![CDATA[I've been a rabid supporter of CI since 1.7.2.  During the 'great lull' Codeigniter really took a hard hit with Laravel coming up and many devs jumping ship. I really want to do my part to help CI get back to the popularity it once had and (*gasp*) maybe rival Laravel.   <br />
<br />
While I've been working on my CMS, I've found, what I feel, would be one of the best ways to implement such functionality similar to what Laraval offers. Their Service Providers solution to adding whatever package you want to use would be a massive advantage to Codeigniter.<br />
<br />
The one argument I often hear/read is 'composer whatever' has this, just 'composer require' it and use it (usually coming across as kinda negative nancy since text has no real context).  I get that and it's 100% true, but that advice doesn't really cut it when CI is better than many frameworks in many ways but kinda can't get out of it's own way.  <br />
  <br />
As always, lively discussion is wanted, I'd really like to hear from the Foundation devs too.  Is there any interest from the Foundation to create a Service Provider/Packages and much expanded spark CLI kind of ecosystem for Codeigniter? <br />
<br />
Happy coding.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Ragnos: A "Configuration over Code" Enterprise Add-on built on CI4]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93997</link>
			<pubDate>Fri, 10 Apr 2026 00:19:02 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=512">cgarciagl</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93997</guid>
			<description><![CDATA[Hello everyone,<br />
I have been using and loving CodeIgniter for years. I work as a developer and academic technician at a University Research Center, where we constantly build administrative and educational systems. While CI4 is blazing fast and elegantly structured, I found myself getting burned out writing the exact same CRUD controllers, HTML views, data tables, and permission logic for every new project.<br />
<br />
To keep my sanity, I built a higher-level enterprise add-on entirely on top of CodeIgniter 4 called Ragnos. I just released it as 100% open-source and wanted to share it with the community that makes CI4 possible.<br />
<br />
The core philosophy of Ragnos is "Configuration over Programming." Instead of writing standard MVC boilerplate for admin panels, you use our RDatasetController. You simply define a "Data Dictionary" (a plain PHP array) in your controller, and this add-on automatically renders a fully styled dashboard, handles pagination, advanced search filters, data exports, and forms.<br />
<br />
Because it runs native CI4 under the hood, it automatically benefits from its Query Builder, CSRF protection, and XSS filtering, but it adds a dynamic Role-Based Access Control (RBAC) layer on top. Also, since modules are generated from PHP arrays, it is incredibly easy to use AI to write your configurations and generate entire modules in seconds.<br />
<br />
You can check out the documentation, the philosophy, and the GitHub repository here: <a href="https://ragnos.build" target="_blank" rel="noopener" class="mycode_url">https://ragnos.build</a><br />
<br />
Because the project grew quite a bit, I also wrote a complete 162-page official manual called "Ragnos from Zero to Pro" (available in English and Spanish on Leanpub) for those who want to master the architecture or implement it at an enterprise level. But the core add-on is completely free and open for the community.<br />
<br />
I would love for the CI experts here to take a look at the code, install it, break it, and give me your honest feedback. I owe a lot to CodeIgniter, and I hope this contribution helps other developers save as much time as it has saved me.<br />
Thanks for reading and happy coding!]]></description>
			<content:encoded><![CDATA[Hello everyone,<br />
I have been using and loving CodeIgniter for years. I work as a developer and academic technician at a University Research Center, where we constantly build administrative and educational systems. While CI4 is blazing fast and elegantly structured, I found myself getting burned out writing the exact same CRUD controllers, HTML views, data tables, and permission logic for every new project.<br />
<br />
To keep my sanity, I built a higher-level enterprise add-on entirely on top of CodeIgniter 4 called Ragnos. I just released it as 100% open-source and wanted to share it with the community that makes CI4 possible.<br />
<br />
The core philosophy of Ragnos is "Configuration over Programming." Instead of writing standard MVC boilerplate for admin panels, you use our RDatasetController. You simply define a "Data Dictionary" (a plain PHP array) in your controller, and this add-on automatically renders a fully styled dashboard, handles pagination, advanced search filters, data exports, and forms.<br />
<br />
Because it runs native CI4 under the hood, it automatically benefits from its Query Builder, CSRF protection, and XSS filtering, but it adds a dynamic Role-Based Access Control (RBAC) layer on top. Also, since modules are generated from PHP arrays, it is incredibly easy to use AI to write your configurations and generate entire modules in seconds.<br />
<br />
You can check out the documentation, the philosophy, and the GitHub repository here: <a href="https://ragnos.build" target="_blank" rel="noopener" class="mycode_url">https://ragnos.build</a><br />
<br />
Because the project grew quite a bit, I also wrote a complete 162-page official manual called "Ragnos from Zero to Pro" (available in English and Spanish on Leanpub) for those who want to master the architecture or implement it at an enterprise level. But the core add-on is completely free and open for the community.<br />
<br />
I would love for the CI experts here to take a look at the code, install it, break it, and give me your honest feedback. I owe a lot to CodeIgniter, and I hope this contribution helps other developers save as much time as it has saved me.<br />
Thanks for reading and happy coding!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Claude Code Skills]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93992</link>
			<pubDate>Wed, 08 Apr 2026 07:01:50 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=7143">enlivenapp</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93992</guid>
			<description><![CDATA[I had mentioned this buried in one of my other posts.  I've had to keep claude code on a short leash because it seems to do whatever it wants. So, I had some skills for claude to use. Tonight I updated them, broke out Shield from the ci4 skill and went pretty detailed for the skills.  All free to use as cheat sheets or load up in claude (maybe other LLMs) and get something resembling what CI4 is supposed to be used for.  I'm working on a CI4 plugin too, but that's extra tokens when I have them. <br />
<br />
fork it, PR it, whatever you need.<br />
<a href="https://github.com/enlivenapp/Codeigniter4-App-and-API-Skills-for-Claude-Code" target="_blank" rel="noopener" class="mycode_url">https://github.com/enlivenapp/Codeignite...laude-Code</a><br />
<br />
Happy Coding!]]></description>
			<content:encoded><![CDATA[I had mentioned this buried in one of my other posts.  I've had to keep claude code on a short leash because it seems to do whatever it wants. So, I had some skills for claude to use. Tonight I updated them, broke out Shield from the ci4 skill and went pretty detailed for the skills.  All free to use as cheat sheets or load up in claude (maybe other LLMs) and get something resembling what CI4 is supposed to be used for.  I'm working on a CI4 plugin too, but that's extra tokens when I have them. <br />
<br />
fork it, PR it, whatever you need.<br />
<a href="https://github.com/enlivenapp/Codeigniter4-App-and-API-Skills-for-Claude-Code" target="_blank" rel="noopener" class="mycode_url">https://github.com/enlivenapp/Codeignite...laude-Code</a><br />
<br />
Happy Coding!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Testing same tables]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93984</link>
			<pubDate>Sat, 04 Apr 2026 10:14:37 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=52428">ozornick</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93984</guid>
			<description><![CDATA[I have several modules: <span style="font-weight: bold;" class="mycode_b">Main, Blog, Shop</span>...<br />
Each contains tests <span style="font-weight: bold;" class="mycode_b">modules/src/Shop/Tests/*</span> and data <span style="font-weight: bold;" class="mycode_b">Shop/Database/{Migrations|Seeders}</span> for them.<br />
Errors occurred with identical tables (posts, users..) in the same test database. I am using the SQLite3 file.<br />
<br />
How best to split the execution (random tests) without creating many connections: tests, tests_for_main, test_for_shop..? Because sometimes you may need data from modules that do not overlap.<br />
<br />
In general, working with migrations is very strict - you can't just execute import and seeder files. And auto-searching of this data may be unsuitable: for example, when the imported data is located outside of ./Database/* or has a non-standard FQCN.<br />
<br />
My test begin as:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">final&nbsp;class&nbsp;</span><span style="color: #0000BB">PostModelTest&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">CIUnitTestCase<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000BB">DatabaseTestTrait</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;</span><span style="color: #0000BB">&#36;namespace&nbsp;</span><span style="color: #007700">=&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'Neznaika0&#092;Module&#092;Blog'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'Neznaika0&#092;Module&#092;Shop'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;];<br />&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;</span><span style="color: #0000BB">&#36;seed&nbsp;</span><span style="color: #007700">=&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">UserSeeder</span><span style="color: #007700">::class,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">PostSeeder</span><span style="color: #007700">::class,<br />&nbsp;&nbsp;&nbsp;&nbsp;];<br />&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;</span><span style="color: #0000BB">&#36;migrateOnce&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;</span><span style="color: #0000BB">&#36;seedOnce&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>]]></description>
			<content:encoded><![CDATA[I have several modules: <span style="font-weight: bold;" class="mycode_b">Main, Blog, Shop</span>...<br />
Each contains tests <span style="font-weight: bold;" class="mycode_b">modules/src/Shop/Tests/*</span> and data <span style="font-weight: bold;" class="mycode_b">Shop/Database/{Migrations|Seeders}</span> for them.<br />
Errors occurred with identical tables (posts, users..) in the same test database. I am using the SQLite3 file.<br />
<br />
How best to split the execution (random tests) without creating many connections: tests, tests_for_main, test_for_shop..? Because sometimes you may need data from modules that do not overlap.<br />
<br />
In general, working with migrations is very strict - you can't just execute import and seeder files. And auto-searching of this data may be unsuitable: for example, when the imported data is located outside of ./Database/* or has a non-standard FQCN.<br />
<br />
My test begin as:<br />
<br />
<div class="codeblock phpcodeblock"><div class="title">PHP Code:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">final&nbsp;class&nbsp;</span><span style="color: #0000BB">PostModelTest&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">CIUnitTestCase<br /></span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;use&nbsp;</span><span style="color: #0000BB">DatabaseTestTrait</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;</span><span style="color: #0000BB">&#36;namespace&nbsp;</span><span style="color: #007700">=&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'Neznaika0&#092;Module&#092;Blog'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'Neznaika0&#092;Module&#092;Shop'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;];<br />&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;</span><span style="color: #0000BB">&#36;seed&nbsp;</span><span style="color: #007700">=&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">UserSeeder</span><span style="color: #007700">::class,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">PostSeeder</span><span style="color: #007700">::class,<br />&nbsp;&nbsp;&nbsp;&nbsp;];<br />&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;</span><span style="color: #0000BB">&#36;migrateOnce&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;</span><span style="color: #0000BB">&#36;seedOnce&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Best way to implement a Service Layer in CI4 for complex business logic?]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93983</link>
			<pubDate>Fri, 03 Apr 2026 19:42:58 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=229483">marinkitagawa</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93983</guid>
			<description><![CDATA[I’m working on a large-scale project in CodeIgniter 4 and I want to keep my controllers as lean as possible. Currently, I’m using centralized validation in <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Config/Validation.php</code></div></div>, but I’m struggling with where to put complex business logic that doesn't belong in the Model or the Controller.<br />
<span style="font-weight: bold;" class="mycode_b">My questions are:</span><br />
<ol type="1" class="mycode_list"><li>Is creating a separate <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>app/Services</code></div></div> directory the standard approach in CI4 for handling business logic?<br />
</li>
<li>How should I properly initialize these services? Should I use the <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Services</code></div></div> configuration file or just instantiate them normally in the controller?<br />
</li>
<li>Are there any performance overheads or architectural 'gotchas' I should be aware of when moving logic out of the controller?<br />
</li>
</ol>
I'd love to hear how you guys structure your enterprise-level applications<a href="http://oakllc.co" target="_blank" rel="noopener" class="mycode_url">.</a> Thanks!]]></description>
			<content:encoded><![CDATA[I’m working on a large-scale project in CodeIgniter 4 and I want to keep my controllers as lean as possible. Currently, I’m using centralized validation in <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Config/Validation.php</code></div></div>, but I’m struggling with where to put complex business logic that doesn't belong in the Model or the Controller.<br />
<span style="font-weight: bold;" class="mycode_b">My questions are:</span><br />
<ol type="1" class="mycode_list"><li>Is creating a separate <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>app/Services</code></div></div> directory the standard approach in CI4 for handling business logic?<br />
</li>
<li>How should I properly initialize these services? Should I use the <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Services</code></div></div> configuration file or just instantiate them normally in the controller?<br />
</li>
<li>Are there any performance overheads or architectural 'gotchas' I should be aware of when moving logic out of the controller?<br />
</li>
</ol>
I'd love to hear how you guys structure your enterprise-level applications<a href="http://oakllc.co" target="_blank" rel="noopener" class="mycode_url">.</a> Thanks!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[What do i need to do back to older version of a file]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93982</link>
			<pubDate>Fri, 03 Apr 2026 13:01:42 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=107513">mikehoague</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93982</guid>
			<description><![CDATA[I am having an issue going back old version af a file. I am usion both VsCode and PHPStotrm but I cant seme to fin were its is lacated.]]></description>
			<content:encoded><![CDATA[I am having an issue going back old version af a file. I am usion both VsCode and PHPStotrm but I cant seme to fin were its is lacated.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Proper way to handle Form Validation in CodeIgniter 4?]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93980</link>
			<pubDate>Thu, 02 Apr 2026 13:20:27 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=229483">marinkitagawa</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93980</guid>
			<description><![CDATA[I’m working on a registration form and I want to implement robust "Form Validation." I’ve seen two ways in the documentation: using the controller's <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36;this-&gt;validate()</code></div></div> method and using a separate Validation service. Which one is considered best practice for large projects to keep the controllers clean? Also, how do I display custom error messages in the view?]]></description>
			<content:encoded><![CDATA[I’m working on a registration form and I want to implement robust "Form Validation." I’ve seen two ways in the documentation: using the controller's <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36;this-&gt;validate()</code></div></div> method and using a separate Validation service. Which one is considered best practice for large projects to keep the controllers clean? Also, how do I display custom error messages in the view?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[can not find the setting PHP under Languages & Frameworks]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93975</link>
			<pubDate>Wed, 01 Apr 2026 19:39:18 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=107513">mikehoague</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93975</guid>
			<description><![CDATA[Step-by-Step Fix for PhpStorm<br />
<ol type="1" class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Open Settings:</span> Navigate to <span style="font-weight: bold;" class="mycode_b">File | Settings</span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Locate PHP Settings:</span> Go to <span style="font-weight: bold;" class="mycode_b"><a href="https://www.google.com/176,88" target="_blank" rel="noopener" class="mycode_url">Languages &amp; Frameworks | PHP</a></span>. <span style="color: #c10300;" class="mycode_color">(not seing this PHP topic)</span><br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Set CLI Interpreter:</span> Look for the <span style="font-weight: bold;" class="mycode_b">CLI Interpreter</span> field. If it says "None" or is highlighted in red, click the <span style="font-weight: bold;" class="mycode_b">three dots (...)</span> button next to it.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Add New Interpreter:</span> Click the <span style="font-weight: bold;" class="mycode_b">+</span> (Plus) icon and select <span style="font-weight: bold;" class="mycode_b"><a href="https://www.google.com/49,89" target="_blank" rel="noopener" class="mycode_url">Local Path to Interpreter</a></span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Specify the Path:</span> Browse to your PHP executable. Common locations include:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Windows (XAMPP):</span> <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>C:&#92;xampp&#92;php&#92;php.exe</code></div></div><br />
</li>
</ul>
</li>
<li><span style="font-weight: bold;" class="mycode_b">Verify:</span> Once selected, PhpStorm should automatically detect the <a href="https://www.google.com/88" target="_blank" rel="noopener" class="mycode_url">PHP version and configuration file</a> (php.ini). Click <span style="font-weight: bold;" class="mycode_b">OK</span> to apply.<br />
</li>
</ol>
]]></description>
			<content:encoded><![CDATA[Step-by-Step Fix for PhpStorm<br />
<ol type="1" class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Open Settings:</span> Navigate to <span style="font-weight: bold;" class="mycode_b">File | Settings</span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Locate PHP Settings:</span> Go to <span style="font-weight: bold;" class="mycode_b"><a href="https://www.google.com/176,88" target="_blank" rel="noopener" class="mycode_url">Languages &amp; Frameworks | PHP</a></span>. <span style="color: #c10300;" class="mycode_color">(not seing this PHP topic)</span><br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Set CLI Interpreter:</span> Look for the <span style="font-weight: bold;" class="mycode_b">CLI Interpreter</span> field. If it says "None" or is highlighted in red, click the <span style="font-weight: bold;" class="mycode_b">three dots (...)</span> button next to it.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Add New Interpreter:</span> Click the <span style="font-weight: bold;" class="mycode_b">+</span> (Plus) icon and select <span style="font-weight: bold;" class="mycode_b"><a href="https://www.google.com/49,89" target="_blank" rel="noopener" class="mycode_url">Local Path to Interpreter</a></span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Specify the Path:</span> Browse to your PHP executable. Common locations include:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Windows (XAMPP):</span> <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>C:&#92;xampp&#92;php&#92;php.exe</code></div></div><br />
</li>
</ul>
</li>
<li><span style="font-weight: bold;" class="mycode_b">Verify:</span> Once selected, PhpStorm should automatically detect the <a href="https://www.google.com/88" target="_blank" rel="noopener" class="mycode_url">PHP version and configuration file</a> (php.ini). Click <span style="font-weight: bold;" class="mycode_b">OK</span> to apply.<br />
</li>
</ol>
]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Help: CodeIgniter 4 Installation showing 404 on Home Page]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93973</link>
			<pubDate>Wed, 01 Apr 2026 15:10:01 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=229483">marinkitagawa</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93973</guid>
			<description><![CDATA[I just finished installing CodeIgniter 4 via Composer, but when I try to access the public URL, I get a "404 Not Found" error for the home page. I’ve checked my <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>.htaccess</code></div></div> file and made sure <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mod_rewrite</code></div></div> is enabled on my Apache server. Is there a specific configuration in the <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>App.php</code></div></div> file under the <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>baseURL</code></div></div> that I might be missing?]]></description>
			<content:encoded><![CDATA[I just finished installing CodeIgniter 4 via Composer, but when I try to access the public URL, I get a "404 Not Found" error for the home page. I’ve checked my <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>.htaccess</code></div></div> file and made sure <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mod_rewrite</code></div></div> is enabled on my Apache server. Is there a specific configuration in the <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>App.php</code></div></div> file under the <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>baseURL</code></div></div> that I might be missing?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problem entity return null (id) on save()]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93968</link>
			<pubDate>Tue, 31 Mar 2026 08:08:35 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=230035">AnotherOnit</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93968</guid>
			<description><![CDATA[I'm working with CodeIgniter 4 and ran into something I'm not sure is expected behavior.<br />
I'm creating a new user using an Entity and calling <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>save()</code></div></div> on my model:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36;user_model = new UserModel;<br />
&#36;user = new User();<br />
<br />
&#36;user-&gt;fill([<br />
    'username' =&gt; post('username'),<br />
    'email'    =&gt; post('email'),<br />
    'password' =&gt; post('password'),<br />
    'auth_token' =&gt; generate_token(),<br />
    'auth_token_expire_at' =&gt; date_add_duration("now", "+1 day")<br />
]);<br />
<br />
&#36;user_model-&gt;save(&#36;user);<br />
<br />
var_dump(&#36;user-&gt;id);<br />
die();</code></div></div>The insert works fine in the database, but <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36;user-&gt;id</code></div></div> is still <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>null</code></div></div> after calling <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>save()</code></div></div>.<br />
Is this normal behavior in CodeIgniter 4?<br />
I was expecting the entity to be updated with the inserted ID automatically.<br />
<br />
Thanks in advance!<br />
<br />
Sorry for my bad english .. I'm French]]></description>
			<content:encoded><![CDATA[I'm working with CodeIgniter 4 and ran into something I'm not sure is expected behavior.<br />
I'm creating a new user using an Entity and calling <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>save()</code></div></div> on my model:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36;user_model = new UserModel;<br />
&#36;user = new User();<br />
<br />
&#36;user-&gt;fill([<br />
    'username' =&gt; post('username'),<br />
    'email'    =&gt; post('email'),<br />
    'password' =&gt; post('password'),<br />
    'auth_token' =&gt; generate_token(),<br />
    'auth_token_expire_at' =&gt; date_add_duration("now", "+1 day")<br />
]);<br />
<br />
&#36;user_model-&gt;save(&#36;user);<br />
<br />
var_dump(&#36;user-&gt;id);<br />
die();</code></div></div>The insert works fine in the database, but <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>&#36;user-&gt;id</code></div></div> is still <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>null</code></div></div> after calling <br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>save()</code></div></div>.<br />
Is this normal behavior in CodeIgniter 4?<br />
I was expecting the entity to be updated with the inserted ID automatically.<br />
<br />
Thanks in advance!<br />
<br />
Sorry for my bad english .. I'm French]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Tasks v1.0.0 Released]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93963</link>
			<pubDate>Sun, 29 Mar 2026 17:36:15 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=23">michalsn</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93963</guid>
			<description><![CDATA[<span style="font-size: 20pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">CodeIgniter Tasks v1.0.0 Released</span></span><br />
<br />
We are happy to announce the first stable release of <span style="font-weight: bold;" class="mycode_b">CodeIgniter Tasks</span> for CodeIgniter 4.<br />
<br />
CodeIgniter Tasks brings native task scheduling to CodeIgniter applications, making it easy to define scheduled work in code and run it from a single cron entry.<br />
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Highlights</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Fluent task scheduling</span> - define scheduled work with an expressive API designed for CodeIgniter 4.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Multiple task types</span> - supports framework ccommands, shell, events, URLs, and queue jobs.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Timezone-aware scheduling</span> - run tasks using the correct timezone for your application.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Rich frequency helpers</span> - includes hourly, monthly, specific times of day, and custom cron expressions.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Next-run calculation</span> - makes it easier to inspect and understand upcoming schedules.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CLI tooling</span> - publish config, list tasks, run the scheduler, and enable or disable task execution.<br />
</li>
</ul>
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Requirements</span></span><br />
<ul class="mycode_list"><li>PHP 8.2+<br />
</li>
<li>CodeIgniter 4.3+<br />
</li>
</ul>
<br />
See the release notes for details:<br />
<a href="https://github.com/codeigniter4/tasks/releases/tag/v1.0.0" target="_blank" rel="noopener" class="mycode_url">https://github.com/codeigniter4/tasks/re...tag/v1.0.0</a><br />
<br />
Full changelog:<br />
<a href="https://github.com/codeigniter4/tasks/commits/v1.0.0" target="_blank" rel="noopener" class="mycode_url">https://github.com/codeigniter4/tasks/commits/v1.0.0</a><br />
<br />
Documentation:<br />
<a href="https://tasks.codeigniter.com" target="_blank" rel="noopener" class="mycode_url">https://tasks.codeigniter.com</a><br />
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Contributors</span></span><br />
<br />
Thanks to everyone who contributed to the first stable release, including <span style="font-weight: bold;" class="mycode_b">@ChoMPi0</span>, <span style="font-weight: bold;" class="mycode_b">@colethorsen</span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_4832" href="member.php?action=profile&amp;uid=4832" class="mentionme_mention" title="datamweb's profile">datamweb</a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_58143" href="member.php?action=profile&amp;uid=58143" class="mentionme_mention" title="ddevsr's profile">ddevsr</a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_90" href="member.php?action=profile&amp;uid=90" class="mentionme_mention" title="kenjis's profile">kenjis</a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_27206" href="member.php?action=profile&amp;uid=27206" class="mentionme_mention" title="kloukas's profile">kloukas</a></span>, <span style="font-weight: bold;" class="mycode_b">@lonnieezell</span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_11090" href="member.php?action=profile&amp;uid=11090" class="mentionme_mention" title="MGatner's profile"><span style="color: green;"><strong><em>MGatner</em></strong></span></a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_23" href="member.php?action=profile&amp;uid=23" class="mentionme_mention" title="michalsn's profile">michalsn</a></span>, <span style="font-weight: bold;" class="mycode_b">@muhannad17</span>, <span style="font-weight: bold;" class="mycode_b">@samsonasik</span>, and <span style="font-weight: bold;" class="mycode_b">@yassinedoghri</span>.<br />
<br />
CodeIgniter Tasks is a task scheduler for CodeIgniter 4 that helps run scheduled work in a simple and framework-friendly way.]]></description>
			<content:encoded><![CDATA[<span style="font-size: 20pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">CodeIgniter Tasks v1.0.0 Released</span></span><br />
<br />
We are happy to announce the first stable release of <span style="font-weight: bold;" class="mycode_b">CodeIgniter Tasks</span> for CodeIgniter 4.<br />
<br />
CodeIgniter Tasks brings native task scheduling to CodeIgniter applications, making it easy to define scheduled work in code and run it from a single cron entry.<br />
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Highlights</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Fluent task scheduling</span> - define scheduled work with an expressive API designed for CodeIgniter 4.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Multiple task types</span> - supports framework ccommands, shell, events, URLs, and queue jobs.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Timezone-aware scheduling</span> - run tasks using the correct timezone for your application.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Rich frequency helpers</span> - includes hourly, monthly, specific times of day, and custom cron expressions.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Next-run calculation</span> - makes it easier to inspect and understand upcoming schedules.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CLI tooling</span> - publish config, list tasks, run the scheduler, and enable or disable task execution.<br />
</li>
</ul>
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Requirements</span></span><br />
<ul class="mycode_list"><li>PHP 8.2+<br />
</li>
<li>CodeIgniter 4.3+<br />
</li>
</ul>
<br />
See the release notes for details:<br />
<a href="https://github.com/codeigniter4/tasks/releases/tag/v1.0.0" target="_blank" rel="noopener" class="mycode_url">https://github.com/codeigniter4/tasks/re...tag/v1.0.0</a><br />
<br />
Full changelog:<br />
<a href="https://github.com/codeigniter4/tasks/commits/v1.0.0" target="_blank" rel="noopener" class="mycode_url">https://github.com/codeigniter4/tasks/commits/v1.0.0</a><br />
<br />
Documentation:<br />
<a href="https://tasks.codeigniter.com" target="_blank" rel="noopener" class="mycode_url">https://tasks.codeigniter.com</a><br />
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Contributors</span></span><br />
<br />
Thanks to everyone who contributed to the first stable release, including <span style="font-weight: bold;" class="mycode_b">@ChoMPi0</span>, <span style="font-weight: bold;" class="mycode_b">@colethorsen</span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_4832" href="member.php?action=profile&amp;uid=4832" class="mentionme_mention" title="datamweb's profile">datamweb</a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_58143" href="member.php?action=profile&amp;uid=58143" class="mentionme_mention" title="ddevsr's profile">ddevsr</a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_90" href="member.php?action=profile&amp;uid=90" class="mentionme_mention" title="kenjis's profile">kenjis</a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_27206" href="member.php?action=profile&amp;uid=27206" class="mentionme_mention" title="kloukas's profile">kloukas</a></span>, <span style="font-weight: bold;" class="mycode_b">@lonnieezell</span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_11090" href="member.php?action=profile&amp;uid=11090" class="mentionme_mention" title="MGatner's profile"><span style="color: green;"><strong><em>MGatner</em></strong></span></a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_23" href="member.php?action=profile&amp;uid=23" class="mentionme_mention" title="michalsn's profile">michalsn</a></span>, <span style="font-weight: bold;" class="mycode_b">@muhannad17</span>, <span style="font-weight: bold;" class="mycode_b">@samsonasik</span>, and <span style="font-weight: bold;" class="mycode_b">@yassinedoghri</span>.<br />
<br />
CodeIgniter Tasks is a task scheduler for CodeIgniter 4 that helps run scheduled work in a simple and framework-friendly way.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Debug Toolbar Issue]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93962</link>
			<pubDate>Sun, 29 Mar 2026 14:53:08 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=13084">zeddy</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93962</guid>
			<description><![CDATA[Hello,<br />
I just installed a fresh copy of CI 4.7.2 and set the environment to development (<a href="https://od.zeduweb.com/" target="_blank" rel="noopener" class="mycode_url">https://od.zeduweb.com/</a>). The debug toolbar appears, but nothing happens when clicking on it (e.g. any of the buttons, the x to close, etc.). I am not seeing errors appear in the console either. Does anyone have ideas on how to troubleshoot?]]></description>
			<content:encoded><![CDATA[Hello,<br />
I just installed a fresh copy of CI 4.7.2 and set the environment to development (<a href="https://od.zeduweb.com/" target="_blank" rel="noopener" class="mycode_url">https://od.zeduweb.com/</a>). The debug toolbar appears, but nothing happens when clicking on it (e.g. any of the buttons, the x to close, etc.). I am not seeing errors appear in the console either. Does anyone have ideas on how to troubleshoot?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Queue v1.0.0 Released]]></title>
			<link>https://forum.codeigniter.com/showthread.php?tid=93961</link>
			<pubDate>Sun, 29 Mar 2026 10:26:29 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.codeigniter.com/member.php?action=profile&uid=23">michalsn</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.codeigniter.com/showthread.php?tid=93961</guid>
			<description><![CDATA[<span style="font-size: 20pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">CodeIgniter Queue v1.0.0 Released</span></span><br />
<br />
We are happy to announce the first stable release of <span style="font-weight: bold;" class="mycode_b">CodeIgniter Queue</span> for CodeIgniter 4.<br />
<br />
CodeIgniter Queue brings background job processing to CodeIgniter applications with a familiar developer experience, flexible backends, and the tooling needed to run workers in production.<br />
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Highlights</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Multiple queue backends</span> - supports database, redis/predis, and rabbitmq.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Flexible job dispatching</span> - supports payloads, priorities, and delayed execution.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Chained jobs</span> - build multi-step workflows that run in sequence.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Events and worker lifecycle hooks</span> - useful for monitoring and integrations.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Failed job handling</span> - includes failed job storage plus retry and cleanup commands.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CLI tooling</span> - publish config, generate jobs, run workers, stop workers safely, inspect failures, retry jobs, and flush old failed jobs.<br />
</li>
</ul>
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Requirements</span></span><br />
<ul class="mycode_list"><li>PHP 8.2+<br />
</li>
<li>CodeIgniter 4.3+<br />
</li>
</ul>
<br />
See the release notes for details:<br />
<a href="https://github.com/codeigniter4/queue/releases/tag/v1.0.0" target="_blank" rel="noopener" class="mycode_url">https://github.com/codeigniter4/queue/re...tag/v1.0.0</a><br />
<br />
Full changelog:<br />
<a href="https://github.com/codeigniter4/queue/commits/v1.0.0" target="_blank" rel="noopener" class="mycode_url">https://github.com/codeigniter4/queue/commits/v1.0.0</a><br />
<br />
Documentation:<br />
<a href="https://queue.codeigniter.com" target="_blank" rel="noopener" class="mycode_url">https://queue.codeigniter.com</a><br />
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Contributors</span></span><br />
<br />
Thanks to everyone who contributed to the first stable release, including <span style="font-weight: bold;" class="mycode_b">@<a id="mention_23" href="member.php?action=profile&amp;uid=23" class="mentionme_mention" title="michalsn's profile">michalsn</a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_90" href="member.php?action=profile&amp;uid=90" class="mentionme_mention" title="kenjis's profile">kenjis</a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_4832" href="member.php?action=profile&amp;uid=4832" class="mentionme_mention" title="datamweb's profile">datamweb</a></span>, <span style="font-weight: bold;" class="mycode_b">@formbay-sanil</span>, and <span style="font-weight: bold;" class="mycode_b">@yassinedoghri</span>.<br />
<br />
CodeIgniter Queue is a queue library for CodeIgniter 4 that helps run background jobs in a simple and production-friendly way.]]></description>
			<content:encoded><![CDATA[<span style="font-size: 20pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">CodeIgniter Queue v1.0.0 Released</span></span><br />
<br />
We are happy to announce the first stable release of <span style="font-weight: bold;" class="mycode_b">CodeIgniter Queue</span> for CodeIgniter 4.<br />
<br />
CodeIgniter Queue brings background job processing to CodeIgniter applications with a familiar developer experience, flexible backends, and the tooling needed to run workers in production.<br />
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Highlights</span></span><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Multiple queue backends</span> - supports database, redis/predis, and rabbitmq.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Flexible job dispatching</span> - supports payloads, priorities, and delayed execution.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Chained jobs</span> - build multi-step workflows that run in sequence.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Events and worker lifecycle hooks</span> - useful for monitoring and integrations.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Failed job handling</span> - includes failed job storage plus retry and cleanup commands.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">CLI tooling</span> - publish config, generate jobs, run workers, stop workers safely, inspect failures, retry jobs, and flush old failed jobs.<br />
</li>
</ul>
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Requirements</span></span><br />
<ul class="mycode_list"><li>PHP 8.2+<br />
</li>
<li>CodeIgniter 4.3+<br />
</li>
</ul>
<br />
See the release notes for details:<br />
<a href="https://github.com/codeigniter4/queue/releases/tag/v1.0.0" target="_blank" rel="noopener" class="mycode_url">https://github.com/codeigniter4/queue/re...tag/v1.0.0</a><br />
<br />
Full changelog:<br />
<a href="https://github.com/codeigniter4/queue/commits/v1.0.0" target="_blank" rel="noopener" class="mycode_url">https://github.com/codeigniter4/queue/commits/v1.0.0</a><br />
<br />
Documentation:<br />
<a href="https://queue.codeigniter.com" target="_blank" rel="noopener" class="mycode_url">https://queue.codeigniter.com</a><br />
<br />
<span style="font-size: 13pt;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Contributors</span></span><br />
<br />
Thanks to everyone who contributed to the first stable release, including <span style="font-weight: bold;" class="mycode_b">@<a id="mention_23" href="member.php?action=profile&amp;uid=23" class="mentionme_mention" title="michalsn's profile">michalsn</a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_90" href="member.php?action=profile&amp;uid=90" class="mentionme_mention" title="kenjis's profile">kenjis</a></span>, <span style="font-weight: bold;" class="mycode_b">@<a id="mention_4832" href="member.php?action=profile&amp;uid=4832" class="mentionme_mention" title="datamweb's profile">datamweb</a></span>, <span style="font-weight: bold;" class="mycode_b">@formbay-sanil</span>, and <span style="font-weight: bold;" class="mycode_b">@yassinedoghri</span>.<br />
<br />
CodeIgniter Queue is a queue library for CodeIgniter 4 that helps run background jobs in a simple and production-friendly way.]]></content:encoded>
		</item>
	</channel>
</rss>