【问题标题】:Deleted information when in submit form in livewire在 livewire 中提交表单时删除的信息
【发布时间】:2021-08-16 17:41:45
【问题描述】:

我有一个表格,当我单击任何项​​目时,该项目的信息会以模式显示。 在模态中,我有两种形式,一种是批准该项目,另一种是拒绝该项目。 项目确认表没有问题,但是第二个表有问题 用于拒绝项目的第二种形式只有一个 textarea 条目。我验证它并向用户显示错误。但是当输入出现问题并向用户显示错误时,所有在模态中接收和显示的信息都将被删除! 我会把代码放在下面给你检查,但在此之前我会放两张图片,以便你理解我的描述。

this image is befor submit form

and this image is after submit form

组件代码:

<?php

namespace App\Http\Livewire\Backend;

use App\Domains\Auth\Models\User;
use App\Models\Kyc;
use Illuminate\Support\Facades\Crypt;
use Livewire\Component;

class KycManage extends Component
{
    public $selectedItem;
    public $description;

    public function selectItem($itemId)
    {
        $this->selectedItem = $itemId;
        $kyc = Kyc::where('id', $this->selectedItem)->first();
        $this->dispatchBrowserEvent('kycModal', $kycData = [
            'id' => $kyc->id ,
            'name' => $kyc->user->name,
            'submitted' => jdate($kyc->created_at)->format('Y-n-j H:i'),
            'national_id' => $kyc->nationalCode,
            'email' => $kyc->user->isVerified(),
            'address' =>$kyc->information['state'] . ', ' . $kyc->information['city'] . ', '.$kyc->information['address'],
            'mobile' => $kyc->user->mobile,
            'selfie' => '/storage/'. Crypt::decryptString($kyc->selfie['url']),
            'profile' => route('admin.auth.user.show', $kyc->user),
        ]);

    }

    public function accept(){
        $kyc = Kyc::find($this->selectedItem);
        $kyc->status = 'accepted';
        $kyc->save();
        $this->flash('success', 'درخواست با موفقیت تایید شد', [
            'position' =>  'center',
            'timer' =>  2000,
            'toast' =>  true,
            'text' =>  '',
            'confirmButtonText' =>  'خب',
            'cancelButtonText' =>  'خب',
            'showCancelButton' =>  false,
            'showConfirmButton' =>  false,
        ]);
        return redirect(route('admin.auth.kyc.index'));

    }

    public function reject(){

        $this->validate([
            'description' => 'required'
        ]);
        $this->emit('refreshComponent');
        $kyc = Kyc::find($this->selectedItem);
        $kyc->status = 'rejected';
        $kyc->selfie['desc'] = $this->description;
        $kyc->save();
        $this->flash('success', 'درخواست با موفقیت رد شد', [
            'position' =>  'center',
            'timer' =>  2000,
            'toast' =>  true,
            'text' =>  '',
            'confirmButtonText' =>  'خب',
            'cancelButtonText' =>  'خب',
            'showCancelButton' =>  false,
            'showConfirmButton' =>  false,
        ]);
        return redirect(route('admin.auth.kyc.index'));

    }


    public function render()
    {
        $kycs = Kyc::where("status", 'pending')->get();
        return view('livewire.backend.kyc-manage')->with('Kycs', $kycs);
    }
}

这是视图:

<div wire:ignore.self>
    <table class="datatable-init nk-tb-list nk-tb-ulist" id="jadval" name="jadval" data-auto-responsive="false">
        <thead>
        <tr class="nk-tb-item nk-tb-head">
            <th class="nk-tb-col">
                <span class="sub-text">نام کاربر</span>
            </th>
            <th class="nk-tb-col tb-col-mb">
                <span class="sub-text">موجودی</span>
            </th>
            <th class="nk-tb-col tb-col-md">
                <span class="sub-text">تلفن</span>
            </th>
            <th class="nk-tb-col tb-col-lg">
                <span class="sub-text">وضعیت حساب</span>
            </th>
            <th class="nk-tb-col tb-col-lg">
                <span class="sub-text">آخرین ورود</span>
            </th>
            <th class="nk-tb-col tb-col-md">
                <span class="sub-text">وضعیت</span>
            </th>
            <th class="nk-tb-col nk-tb-col-tools text-right"></th>
        </tr>
        </thead>
        <tbody>
        @foreach ($Kycs as $kyc)
            <tr class="nk-tb-item" wire:key="{{$kyc->id}}">
                <td class="nk-tb-col">
                    <div class="user-card">
                        <div class="user-info">
                            <span class="tb-lead">{{$kyc->user->name}}
                                <span class="dot dot-success d-md-none ml-1"></span>
                            </span>
                            <span>{{$kyc->user->email}}</span>
                        </div>
                    </div>
                </td>
                <td class="nk-tb-col tb-col-mb">
                    <span class="tb-amount">{{ number_format($kyc->user->balance)}}
                        <span class="currency">تومان</span>
                    </span>
                </td>
                <td class="nk-tb-col tb-col-md">
                    <span>{{$kyc->user->mobile}}</span>
                </td>
                <td class="nk-tb-col tb-col-lg" data-order="Email Status - KYC Status">
                    <ul class="list-status">
                        <li>
                            @if ($kyc->user->isVerified())
                                <em class="icon text-success ni ni-check-circle"></em><span>ایمیل</span>
                            @else
                                <em class="icon ni ni-alert-circle"></em>
                                <span>ایمیل</span>
                            @endif
                        </li>
                        <li>

                            @if ($kyc->status == 'pending')
                                <em class="icon text-success ni ni-check-circle"></em>
                                <span> احراز هویت </span>
                            @else
                                <em class="icon ni ni-alert-circle"></em>
                                <span>عدم احراز هویت</span>
                            @endif

                        </li>
                    </ul>
                </td>
                <td class="nk-tb-col tb-col-lg">
                    <span>{{jdate($kyc->user->last_login_at)}}</span>
                </td>
                <td class="nk-tb-col tb-col-md">
                    @if ($kyc->user->isActive())
                        <span class="tb-status text-success">فعال</span>
                    @else
                        <span class="tb-status text-danger">غیرفعال</span>
                    @endif

                </td>
                <td class="nk-tb-col nk-tb-col-tools">
                    <ul class="nk-tb-actions gx-1">
                        <li class="nk-tb-action-hidden">
                            <button wire:click="selectItem({{$kyc->id}})" type="button" class="btn btn-trigger btn-icon" data-toggle="tooltip" data-placement="top" title="مشاهده و بررسی">
                                <em class="icon ni ni-eye-alt-fill"></em>
                            </button>
                        </li>

                            <li class="nk-tb-action-hidden">
                                <form method="post" a name="delete-item" class="d-inline">
                                    @csrf
                                    @method('delete')
                                    <button typr="button" class="btn btn-trigger btn-icon" data-toggle="tooltip" data-placement="top" title="حذف">
                                        <em class="icon ni ni-trash"></em>
                                    </button>
                                </form>
                            <li>

                        </li>
                    </ul>
                </td>
            </tr>
        @endforeach
        </tbody>
    </table>
<!-- Modal Content Code -->
<div wire:ignore.self class="modal fade" tabindex="-1" id="showKycModal" name="showKycModal">
    <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content">
            <a href="#" class="close" data-dismiss="modal" aria-label="Close">
                <em class="icon ni ni-cross"></em>
            </a>
            <p id="idie" name="idie"></p>
            <div class="modal-header">
                <h5 class="modal-title" id="user-name"></h5>
            </div>
            <div class="modal-body">
                <div class="card card-bordered">
                    <ul class="data-list is-compact">
                        <li class="data-item">
                            <div class="data-col">
                                <div class="data-label">تاریخ ثبت درخواست</div>
                                <div class="data-value">
                                    <p id="signup-date"></p>
                                </div>
                            </div>
                        </li>
                        <li class="data-item">
                            <div class="data-col">
                                <div class="data-label">کد ملی</div>
                                <div class="data-value">
                                    <p id="national_id"></p>
                                </div>
                            </div>
                        </li>
                        <li class="data-item">
                            <div class="data-col">
                                <div class="data-label">ایمیل</div>
                                <div class="data-value">
                                    <ul class="list-status">
                                        <li>
                                            <em id="email-status" style="font-size: 16px;"></em><span style="font-size: 11px;">ایمیل</span>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </li>
                        <li class="data-item">
                            <div class="data-col">
                                <div class="data-label">آدرس</div>
                                <div class="data-value">
                                    <div class="user-card">
                                        <div class="data-value">
                                            <span class="tb-lead" id="address"></span>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </li>
                        <li class="data-item">
                            <div class="data-col">
                                <div class="data-label">شماره موبایل</div>
                                <div class="data-value"><span class="tb-lead" id="mobile"></span></div>
                            </div>
                        </li>
                        <li class="data-item">
                            <div class="data-col">
                                <div class="data-label">شماره تلفن ثابت</div>
                                <div class="data-value"> <span class="tb-lead" id="phone"></span></div>
                            </div>
                        </li>
                        <li class="data-item">
                            <div class="data-col">
                                <div class="data-label">تصویر سلفی</div>
                                <a name="selfieUrl" id="selfieUrl" target="_blank">برای مشاهده کلیک کنید</a>
                            </div>
                        </li>
                        <li class="data-item">
                            <div class="data-col">
                                <div class="data-label">توضیحات :
                                </div>
                                <br>
                            </div>
                        </li>
                      <div wire:key="action" class="col-md-12">
                          <textarea wire:model.defer="description" style="margin-bottom: 15px; margin-top: 15px"class="form-control"    ></textarea>
                          @error('description')
                          <span class="badge badge-dot badge-danger" style="margin-bottom: 12px;">{{ $message }}</span>
                          @enderror
                      </div>

                    </ul>
                </div><!-- .card -->
            </div>
            <div class="modal-footer bg-light">
                <form wire:submit.prevent="reject">
                    <button type="submit" class="btn btn-round btn-danger w-150px"><span>رد کردن</span></button>
                </form>
                <form wire:submit.prevent="accept">
                    <button type="submit" class="btn btn-round btn-success w-150px"><span>تایید احراز هویت</span></button>
                </form>
            </div>
        </div>
    </div>
</div>
</div>

这是布局文件中的 js 代码,用于在模式中显示信息:

<script>
    window.addEventListener('kycModal', event => {
        $('#showKycModal').modal('show');
        $('#user-name').text(event.detail.name);
        $('#signup-date').text(event.detail.submitted);
        $('#acceptItem').attr("value" , event.detail.id);
        if (event.detail.email == true) {
            $("#email-status").removeClass();
            $('#email-status').addClass("icon text-success ni ni-check-circle");
        }else {
            $("#email-status").removeClass();
            $('#email-status').addClass("icon ni ni-alert-circle");
        }
        $('#address').text(event.detail.address);
        $('#selfieUrl').attr("href" , event.detail.selfie);
        $('#national_id').text(event.detail.national_id);
        if (event.detail.mobile === null) {
            $('#mobile').text("ثبت نشده ! ");
        }else {
            $('#mobile').text(event.detail.mobile);
        }
        if (event.detail.phone === null) {
            $('#phone').text("ثبت نشده ! ");
        }else {
            $('#phone').text(event.detail.phone);
        }
        $('#selfieUrl').attr("href" , event.detail.selfie);
        $('#acceptItem').attr("value" , event.detail.id);
    });
</script>

【问题讨论】:

    标签: php laravel laravel-livewire


    【解决方案1】:

    我也使用 livewire,但由于表单的原因,我遇到了很多问题,每次我删除它时,它都能完美解决与您类似的问题。删除表单并在按钮中放入wire:click =“accept”,另一条wire:click =“reject”

    【讨论】:

      猜你喜欢
      • 2021-08-15
      • 2021-10-25
      • 2011-01-14
      • 2015-04-02
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      相关资源
      最近更新 更多