在服务器上以意想不到的方式处理刀片组件

Blade Components are being handled in unexpected ways on on the server

提问人:Rabie_Rabit 提问时间:11/17/2023 更新时间:11/17/2023 访问量:34

问:

所以这是我所知道的,我设置了一个刀片组件,似乎它在服务器上的处理方式比在我的本地处理的要差得多

我像这样调用组件:

<x-ui.form.text label="Email" name="email" :options='["required"=>"true"]'/>

然后这是组件(只有顶部(错误在dd()正下方引起)):

<div>
    @php dd($attributes) @endphp
    <div {{ $attributes->merge(['class'=>'col-12 mb-4']) }}>
        <div class="row">
            <div class="col-4 align-items-center d-flex justify-content-end">
                <label for="{{ $name }}" class="form-label mb-0">{{ $label }} @if($options['required']) <i class="bi-exclamation-circle"></i> @endif </label>
            </div>
            <div class="col-8">
                <div class="input-group has-validation">
                    @if($options['prepend'])
                    {{-- <div class="input-group-prepend border-dark"> --}}
                        <div class="input-group-text border-dark">{{ $options['prepend'] }}</div>
                    {{-- </div> --}}
                    @endif
                    <input value="{{ $value?$value:old($name) }}" class="border-dark block w-full form-control @error($name) is-invalid @enderror" type={{ $options['type'] }} id="{{ $name }}" name="{{ $name }}" aria-describedby="inputGroupPrepend" {{ $options["readonly"]?"readonly":"" }}>
                    @if($options['append'])
                    <div class="input-group-append">
                        <div class="input-group-text">{{ $options['append'] }}</div>
                    </div>

组件的另一部分如下所示:

public function __construct($name, $label, $value=false, $options = []) {
        $this->options = array_merge([
            "required" => false,
            "type" => "text",
            "readonly" => false,
            "prepend" => false,
            "append" => false,
        ], $options);


        $this->name = $name;
        $this->label = $label;
        $this->value = $value;
        $this->required = $this->options['required'];
    }

组件边栏选项卡文件中的 dd 在我的 LOCAL env 上导致以下结果:

Illuminate\View\ComponentAttributeBag {#1482 ▼ // resources\views/components/ui/form/text.blade.php
  #attributes: []
}

但是在服务器上,它会导致这种情况:

Illuminate\View\ComponentAttributeBag {#1405 ▼ // resources/views/components/ui/form/text.blade.php
  #attributes: array:3 [▼
    "label" => "Email"
    "name" => "email"
    "options" => []
  ]
}

在我的本地,它运行良好,没有问题,我什至在我的家庭媒体服务器上进行了结帐,看看它是否与 apache 服务器有关,但这似乎很好,它在那里也有效

  • 本地运行 Windows 11
  • 媒体服务器 Windows 10
  • 托管 Linux

但是对于托管公司,它会导致此错误。

没有任何组件的页面工作得很好。

可能需要注意的事项:

  1. 我将组件文件夹从另一个项目复制到这个项目
  2. 我尝试添加/删除/交换数组的单引号和双引号
  3. 我尝试添加/删除/交换数组的单引号和双引号
  4. 我尝试删除组件(这有效,但前提是我删除了页面上的所有组件)
  5. 如果我删除选项属性,它会抱怨它没有设置,即使它在组件 php 文件中设置为默认值
  6. 我仔细/三重检查了 env 文件及其正确性(我看不出这是一个问题,因为没有组件的页面工作正常
  7. 我检查了路径和文件预判
  8. 我检查了作曲家包

一切看起来都很好

我不知道这是否会产生影响,但我的托管公司有一个 php8.0 的基本 php 版本 当我通过 SSH 连接到它们并运行 php -v 时,我得到了 8.0 版,但在我的控制面板上,我将其设置为 8.2,当从浏览器显示 phpinfo() 时,我看到 8.2 版在我需要使用的终端中运行 8.2 版。/usr/bin/php-wrapper

Composer 也是一个问题,他们运行 composer 的 v1,因为他们有仍在使用它的旧项目,但他们帮助我将 v2 安装到我的用户中,因此运行 composer 我需要使用它来做像 composer 更新一样的 somting,我需要在生成自动加载 composer 时合并其他行抱怨 php 版本很低,所以看起来像这样/usr/home/{username}/composer/usr/bin/php-wrapper /usr/home/{username}/composer update --no-dev

关于为什么会发生这种情况的任何想法?

php laravel laravel-blade

评论


答: 暂无答案