Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未能在livewire中单击时刷新组件_Php_Laravel 8_Laravel Livewire - Fatal编程技术网

Php 未能在livewire中单击时刷新组件

Php 未能在livewire中单击时刷新组件,php,laravel-8,laravel-livewire,Php,Laravel 8,Laravel Livewire,尝试了所有可能的解决方案来刷新组件,但失败。是否有任何选项不推送新注释并刷新$comments变量(无论它包含什么) 要在单击“发送”按钮时刷新$comments及其与刀片服务器中回复的关系吗 在“发送”按钮上调用$refresh操作,但似乎不起作用。甚至尝试使用$this->render()重新渲染组件。这也失败了 <div> @foreach($comments as $item) <div class="row" @if($item-&

尝试了所有可能的解决方案来刷新组件,但失败。是否有任何选项不推送新注释并刷新$comments变量(无论它包含什么)

要在单击“发送”按钮时刷新$comments及其与刀片服务器中回复的关系吗

在“发送”按钮上调用$refresh操作,但似乎不起作用。甚至尝试使用$this->render()重新渲染组件。这也失败了

<div>
    @foreach($comments as $item)
    <div class="row" @if($item->reply_id != null) style="margin-left:40px;" @endif>
        <div class="col-md-12">
            <div class="py-md-4 py-3 border_bottom" >
            <div class="row">
                <div class="col-md-1 col-sm-1 col-1">
                <div class="rating_person pt-3">
                    <img src="{{ isset($item->owner->profile_picture) ? asset($item->owner->profile_picture) : asset('images/default.jpg') }}">
                </div>
                </div>
                <div class="col-md-11 col-sm-12 col-12">
                <div class="rating_view_here_content_single_border">
                    <div class="rating_view_here_content_single">
                    <div class="rating_view_stars d-flex justify-content-between pt-3">
                        <div class="rating_view_heading">
                        <h4>{{ $item->owner->name }}</h4>
                        <div class="rating_wrapper">
                            <a href="#" class="grey_rating active-rating">
                            <i class="fa fa-star" aria-hidden="true"></i>
                            </a>
                            <a href="#" class="grey_rating active-rating">
                            <i class="fa fa-star" aria-hidden="true"></i>
                            </a>
                            <a href="#" class="grey_rating active-rating">
                            <i class="fa fa-star" aria-hidden="true"></i>
                            </a>
                            <a href="#" class="grey_rating active-rating">
                            <i class="fa fa-star" aria-hidden="true"></i>
                            </a>
                            <a href="#" class="grey_rating active-rating">
                            <i class="fa fa-star" aria-hidden="true"></i>
                            </a>
                        </div>
                        </div>
                        <span class="rating_days">{{ \App\Library\Helper::getTime($item->created_at) }}</span>
                    </div>
                    <div class="rating_comment_here pt-3">
                        <p>{{ $item->comment }}</p>
                        <p>
                        <a href="javascript:void(0)" class="reply" data-id="{{ $item->id }}" wire:click="toggleCommentBox({{ $item->id }}, 'true')">
                            <i class="fa fa-reply" aria-hidden="true"></i> <span>Reply</span>
                        </a>
                        </p>
                    </div>
                    @if($item_id == $item->id && $show=="true")
                        <div class="video_inner_form_wrapper commentBox-{{ $item->id }}">
                            <form wire:submit.prevent="sendReply" class="row">
                            <input type="hidden" name="reply_id" value="{{ $item->id }}">
                            <div class="comment_input col-md-8">
                            <input type="text" class="bluish_label video_inner_input @error('replyText') is-invalid @enderror" wire:model.lazy="replyText" placeholder="Write your comment here">
                            @error('replyText')
                            <div class="invalid-feedback">{{$message}}</div>
                            @enderror
                            </div>
                            <div class="col-md-4">
                                <button type="submit" class="btn_edit text-uppercase" wire:click="$refresh">Send</a>
                                <button type="button" class="btn_edit text-uppercase cancel" wire:click="toggleCommentBox({{ $item->id }}, 'false')">Cancel</a>
                            </div></form>
                        </div>
                    @endif
                    </div>
                </div> 
                </div>
            </div>
            </div>
            <livewire:frontend.discussion-chat :key="'chat-' . $item->id" :comments="$item->replies" :id="$model_id" :type="$model_type" />
        </div>
    </div>
    @endforeach
    </div>

@foreach($注释作为$项)
答复(id)null)style=“左边距:40px;”@endif>
所有者->个人资料(图片)?资产($item->owner->profile\u picture):资产('images/default.jpg')}>
{{$item->owner->name}
{{\App\Library\Helper::getTime($item->created_at)}
{{$item->comment}

@如果($item_id==$item->id&&$show==“true”) @错误('replyText') {{$message}} @恩德罗 发送 取消 @恩迪夫 @endforeach
由于没有更新任何属性,livewire聊天组件将不会刷新

可能的解决方案不是将列表作为参数传递,而是在聊天组件中获取它。使用事件触发刷新:

@click="$emit('discussion.chat.{{ $id }}.refresh')"
前端内部。讨论聊天

public function listeners(): array
{
    return [
        "discussion.chat.$this->id.refresh" => "reload"
    ];
}

public function reload(): void
{
    // E.g.
    $this->comments->fresh();
}

这是子组件,现在我已经设置了事件,并在父组件中使用refresh收听它。它工作得很好。虽然我没有真正理解你的想法,但如果你能详细阐述一下,那就太好了。谢谢。我建议你可以将事件格式设置为$emit('discussion.chat.refresh,passtheidher),然后在重新加载函数reload($id)中期望该值,也可以在livewire中引入实例变量protected$listeners=[“discussion.chat.refresh”=>“reload”]@Aliajan您有一个子组件,它接收聊天ID作为参数,并将所有评论加载到一个有说服力的集合中。该子组件将侦听刷新事件并重新加载评论。该事件可以从父级或应用程序中的任何其他位置触发。好的,谢谢。尽管通过调用事件解决了问题来自孩子和家长的倾听