-
Notifications
You must be signed in to change notification settings - Fork 11k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
view:cache behaves differently when called by optimize command #50619
Comments
This seems to be a specific issue with how the package register view components (or how caching config) affects the way packages register the view components. |
Thank you for reporting this issue! As Laravel is an open source project, we rely on the community to help us diagnose and fix issues as it is not possible to research and fix every issue reported to us via GitHub. If possible, please make a pull request fixing the issue you have described, along with corresponding tests. All pull requests are promptly reviewed by the Laravel team. Thank you! |
In the protected function loadViewsFrom($path, $namespace)
{
dd($this->app['view']->getEngineResolver()->resolve('blade')->getCompiler());
$this->callAfterResolving('view', function ($view) use ($path, $namespace) {
if (
isset($this->app->config['view']['paths']) &&
is_array($this->app->config['view']['paths'])
) {
foreach ($this->app->config['view']['paths'] as $viewPath) {
if (is_dir($appPath = $viewPath . '/vendor/' . $namespace)) {
$view->addNamespace($namespace, $appPath);
}
}
}
$view->addNamespace($namespace, $path);
});
} You get the correct instance with the icons loaded. However, if you put the dd one line below: protected function loadViewsFrom($path, $namespace)
{
$this->callAfterResolving('view', function ($view) use ($path, $namespace) {
dd($this->app['view']->getEngineResolver()->resolve('blade')->getCompiler());
if (
isset($this->app->config['view']['paths']) &&
is_array($this->app->config['view']['paths'])
) {
foreach ($this->app->config['view']['paths'] as $viewPath) {
if (is_dir($appPath = $viewPath . '/vendor/' . $namespace)) {
$view->addNamespace($namespace, $appPath);
}
}
}
$view->addNamespace($namespace, $path);
});
} You get a completely new instance without new icons. I don't know where to go from here though, maybe someone with more knowledge can check this out. Also this does not apply when just running |
I have the same issue but only on production server on AlmaLinux 8. |
Looks like Nuno solved this here: #51450 |
We still see this happening on 11.9.1. The fix in #51450 targets the 10.x branch, was it also fixed in 11.x? |
@bramdevries yes the change should be included. This was later on followed up by #51522. Wondering why it's still happening for you while others report it as fixed 🤔 |
If it helps: We are only encountering this on our production environments when calling What's interesting is that it doesn't occur when running the command locally (either directly on the host, or with Sail). |
Hi @bramdevries. That leads me to believe there's something very specific going on with your production app. It's going to be hard to rule out what that is and you're the only one still reporting this issue. Therefor I think it's best that we close this issue and that you do some further investigation or use a workaround for now and report back if you find out more info about your specific use case. |
@driesvints I have the same issue with one of the forge servers, but again, I have multiple forge servers and only one of them is having this issue, still not sure why I am facing this issue. I am on the latest Laravel version and all my other packages including the Currently the resolution is to not call $FORGE_PHP artisan optimize:clear
$FORGE_PHP artisan config:cache
$FORGE_PHP artisan view:cache
$FORGE_PHP artisan route:cache
$FORGE_PHP artisan event:cache |
I'm having this problem too, on Laravel 11.15. It doesn't fail on my local Mac Herd environment, but it does in production, PHP 8.3.8 on Forge. I do have two icon sets installed - heroicons and phosphor-icons. I didn't publish the blade-icons config because it worked in dev. @abishekrsrikaanth and @bramdevries: do you have multiple icon sets installed too? |
I can confirm we also run into this issue on our forge server. Not on our 'local' DDEV environment. Laravel 11.22.0 and PHP 8.3 |
I think I've run into this problem again on a different project with a different server and may have narrowed it down to a PR in I wonder if this use of |
Also still breaking for me. |
Laravel Version
11.0.7
PHP Version
8.3.3
Database Driver & Version
No response
Description
This is a little tricky, but I ran into this issue after upgrading to Laravel 11 and first suspected it was a problem with Blade Heroicons Kit.
In Laravel 11 the
optimize
command was extended to cache events and views.When running optimize on a fresh app with the Heroicons kit it blew up:
However, running
php artisan view:cache
runs fine.Through playing with the
optimize
command I realised two things:config
orroute
caching fromoptimize
then it works fine. Something that happens in theconfig:cache
orroute:cache
command is affecting what happens in theview:cache
command.BladeCompiler
from the container and the one that is received inside theViewCacheCommand
appear to be different (and the second doesn't have the Heroicon aliases available)Steps To Reproduce
laravel new heroicons cd heroicons composer require blade-ui-kit/blade-heroicons
Add an icon to the welcome page:
<x-heroicon-s-bars-3 />
The text was updated successfully, but these errors were encountered: