Laravel 8 Jetstream||未定义变量:_Instance(查看:C:xampphtdocsveye-WebSiteesourcesviewsvendorjetstreamcomponentsmodal.blade.php

我正在尝试使用Laravel 8 Livewire Modal弹出窗口进行数据输入,同时转到另一个页面。但是我取消了变量_INSTANCE的定义,并且无法理解它。

@entangle($attributes->;wire(‘model’))

当我从views/vendor/jetstream/components/modal.blade.php.中删除此代码时,此行将创建此错误错误将消失。

第34行。

<div id="<?php echo e($id); ?>" x-data="{ show: <?php if ((object) ($attributes->wire('model')) instanceof LivewireWireDirective) : ?>window.Livewire.find('<?php echo e($_instance->id); ?>').entangle('<?php echo e($attributes->wire('model')->value(

    x-show="show"

    x-on:close.stop="show = false"

    x-on:keydown.escape.window="show = false"

    class="fixed top-0 inset-x-0 px-4 pt-6 sm:px-0 sm:flex sm:items-top sm:justify-center"

    style="display: none;">

Livewire

这也让我非常焦虑,但我想我找到了解决方案:正如@georgy-malanichev所说,您只能从推荐答案组件内部调用Livewire方法(而不能从Blade组件或任何其他自定义组件内部调用)。

假设您正在尝试使用resources/views/dashboard.blade.php中的组件,解决方案是:

  1. 使用artisan make:livewire MyDashboard
  2. 创建livewire组件
  3. <x-app-layout></x-app-layout>之间的所有内容剪切到dashboard.blade.php中,然后粘贴到views/livewire/my-dashboard.blade.php
  4. x-app-layout标记内添加@livewire('my-dashboard'),Bob是您的叔叔(应该会开始工作)

为了帮助您理解所发生的事情,如果您查看模态组件的源代码,您将看到如下一行:show: @entangle($attributes->wire('model')),。我不确定如何准确描述它的作用,但从本质上讲,@entangle()需要";model";Livewire对象的实例,但它没有找到。

它找不到它,因为它是从非livewire组件调用的。一旦您将其放入Livewire组件中,它就会开始工作。

我希望额外的细节能让事情更清楚。

相关文章