我有一个奇怪的场景。在我的这个项目中,我有几个View Composers。到目前为止,它们都运行良好,但今天我更改了如何为我从作曲家发送的变量之一分配值,并将其分配到相应的视图。我没有更改变量或 Composer Service Provider 的名称,也没有更改视图的名称。我刚刚更改了变量的值。
所以奇怪的是,它在我的本地环境(通过windows主机上的virtualbox的homestead 8.0.1)上工作得很好,但是当我部署到预生产环境(Windows Server 2016与Apache 2.4)时,我得到一个“未定义变量”错误,用于尝试在视图中回显的任何变量。
如果有人知道服务器是否可以在View Composers的调用或执行方式中发挥作用,我将不胜感激您的启发。这是我的代码(尽管有点简化):
视图代码段(未更改):
<div class="col-sm-4">
<div class="form-group">
<label for="county">County:</label>
<select class="js-select2 form-control" name="county" id="county" style="width: 100%;" data-placeholder="Choose a county">
<option></option>
@foreach ($county ?? array() as $k => $v)
<option value="{{ $k }}">{{ $v }}</option>
@endforeach
</select>
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<label for="state">State:</label>
<select class="js-select2 form-control" name="state" id="state" style="width: 100%;" data-placeholder="Choose a state">
<option></option>
@foreach ($state ?? array() as $k => $v)
<option value="{{ $k }}">{{ $v }}</option>
@endforeach
</select>
</div>
</div>
服务提供商(未更改):
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ComposerServiceProvider extends ServiceProvider
{
public function boot()
{
View::composers([
'App\Http\ViewComposers\MyComposer' => 'name.of.my.view',
'App\Http\ViewComposers\OtherComposer' => ['one.view','another.view'],
]);
}
public function register()
{
//
}
}
我尝试通过路由清除工匠缓存(因为我没有对预生产服务器的ssh访问权限),并重新上传整个项目,以防缺少依赖项(?)或其他内容,但仍然没有运气。
慕少森