Asset publishing and loading for CodeIgniter 4
- Install with Composer:
> composer require codenom/assets - Put CSS & JS files in: public/assets
- Add additional assets to config: app/Config/Assets.php
- Add in head tag:
<?= service('assets')->css() ?> - Add to footer:
<?= service('assets')->js() ?>
Provides out-of-the-box asset loading for CSS and JavaScript files for CodeIgniter 4
Install easily via Composer to take advantage of CodeIgniter 4's autoloading capabilities and always be up-to-date:
> composer require codenom/assets
Or, install manually by downloading the source files and adding the directory to app/Config/Autoload.php.
The library's default behavior can be overridden or augment by its config file. Copy examples/Assets.php to app/Config/Assets.php and follow the instructions in the comments. If no config file is found the library will use its defaults.
If installed correctly CodeIgniter 4 will detect and autoload the library, service, and config. Use the library methods css() and js() to display tags for the route-specific assets: <?= service('assets')->css() ?>
The library searches the assets directory (default: public/assets) for files matching the current route, loading them in a cascading fashion for each route segment.
Example: https://example.com/users/view/30
The library will first load any root assets (public/assets/*.css *.js), then assets in the "users" subfolder (public/assets/users/), then "view" subfolder, then "12" subfolder. Any missing or invalid folders are ignored.
Additional assets may be specified from the config variable $routes - this is particularly helpful for including pre-bundled libraries. $routes maps each route to an asset file or a directory of assets to load for that route.
Example:
public $routes = [ '' => [ 'bootstrap/dist/css/bootstrap.min.css', 'bootstrap/dist/js/bootstrap.bundle.min.js' ], 'files/upload' => [ 'vendor/dropzone' ] ]; This tells the library to load the Bootstrap assets for every route ('') without having to move it from its pre-bundled subdirectory. It also will load any assets in the dropzone directory for the specified route.