我的情况很奇怪。我的这个项目中有几个View Composer。到目前为止,它们都工作正常,但是今天我改变了如何将值分配给从作曲家发送到对应视图的变量之一。我没有更改变量或Composer Service Provider的名称,也没有更改视图的名称。我只是更改了变量的值。
所以奇怪的是,它在我的本地环境(通过Windows主机上的virtualbox的宅基地8.0.1)上可以正常工作,但是当我部署到预生产环境(带有Apache 2.4的Windows Server 2016)时,我尝试在视图中回显的任何变量都存在“未定义的变量”错误。
[如果有人知道服务器是否可以参与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()
{
//
}
}
<?php
namespace App\Http\ViewComposers;
use Illuminate\View\View;
use App\ApiRepo\Dir;
class DomiciliosClientesComposer
{
protected $domi;
public function __construct(Dir $domi)
{
$this->domi = $domi;
}
public function compose(View $view)
{
$state = $this->domi->firstFunction();
$county = $this->domi->secondFunction();
$view->with([
'state' => $state,
'county' => $county,
]);
}
}
<?php
namespace App\Http\ViewComposers;
use Illuminate\View\View;
use App\ApiRepo\Dir;
class DomiciliosClientesComposer
{
protected $domi;
public function __construct(Dir $domi)
{
$this->domi = $domi;
}
public function compose(View $view)
{
$catalogues = [];
foreach ($this->domi->newFunction() as $x) {
$catalogues[$x["type"]][$x["id"]] = $x["value"];
}
$view->with([
'domi' => array(),
'zipcode' => array(),
'state' => ($catalogues['state'] ?? array()),
'county' => ($catalogues['county'] ?? array()),
]);
}
}
我尝试通过路由清除artisan缓存(因为我没有ssh对该预生产服务器的访问权限,并在缺少依赖项(?)或仍然存在某些东西的情况下重新上传了整个项目没有运气。
具体来说,我不知道是什么问题。但是,因为我需要做其他事情,所以我清除了所有缓存(包括存储文件夹中的所有内容,而不是用户提交的文件),然后,视图编辑器在预生产环境中正确检索了变量*shrugs*
。