Laravel 8 急流 ||未定义变量:_instance(查看:C:\xampp\htdocs\veye-website\resources\views\vendor\jetstream\comp

Posted

技术标签:

【中文标题】Laravel 8 急流 ||未定义变量:_instance(查看:C:\\xampp\\htdocs\\veye-website\\resources\\views\\vendor\\jetstream\\components\\modal.blade.php【英文标题】:Laravel 8 Jetstream || Undefined variable: _instance (View: C:\xampp\htdocs\veye-website\resources\views\vendor\jetstream\components\modal.blade.phpLaravel 8 急流 ||未定义变量:_instance(查看:C:\xampp\htdocs\veye-website\resources\views\vendor\jetstream\components\modal.blade.php 【发布时间】:2021-02-02 21:53:28 【问题描述】:

我正在尝试使用 Laravel 8 Livewire Modal Popup 进行数据输入并进入另一个页面。但是我得到 undefine 变量 _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 \Livewire\WireDirective) : ?>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;">

【问题讨论】:

你解决了吗?得到同样的错误。 还没有,我在过去 10 天里找到了它。如果你能找到,请告诉我 【参考方案1】:

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

鉴于您尝试使用 resources/views/dashboard.blade.php 中的组件,解决方案是:

    使用artisan make:livewire MyDashboard创建一个livewire组件 在dashboard.blade.php 中剪切&lt;x-app-layout&gt;&lt;/x-app-layout&gt; 之间的所有内容并将其粘贴到views/livewire/my-dashboard.blade.phpx-app-layout 标签内添加@livewire('my-dashboard'),Bob 就是你的叔叔(它应该开始工作了)

为了帮助您了解发生了什么,如果您查看模态组件的源代码,您会看到如下一行:show: @entangle($attributes-&gt;wire('model')),。我不确定如何准确描述它的作用,但基本上,@entangle() 期待“模型”Livewire 对象的一个​​实例,但它没有找到。

没有找到它,因为它是从非 livewire 组件调用的。将其放入 Livewire 组件后,它就会开始工作。

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

【讨论】:

谢谢。这是作品!我认为这是正确和最终的解决方案。需要记住“Livewire 方法只能在 Livewire 组件内部调用”。 它可以工作,但会出现警告。 Livewire: Multiple root elements detected. This is not supported 不知道后果会怎样,好吓人。 我自己对 Livewire 的内部结构知之甚少,但错误消息表明您可能只能在 @livewire 指令中包含一个主要的 html 元素?【参考方案2】:

我遇到了同样的错误,但就我而言,这是因为我在 LiveWire 组件之外有x-data=" open: @entangle('showDropdown') " 。一旦我将它移到组件模板中,它应该在哪里,问题就消失了。

【讨论】:

以上是关于Laravel 8 急流 ||未定义变量:_instance(查看:C:\xampp\htdocs\veye-website\resources\views\vendor\jetstream\comp的主要内容,如果未能解决你的问题,请参考以下文章

未定义变量:Laravel 5.3 中的 _ENV

Laravel 8:将刀片加载到另一个刀片时未定义的变量

Laravel 6未定义变量:工作

视图页面laravel中的未定义变量[关闭]

变量存在时未定义的变量 laravel

视图laravel内部未定义的变量