gpt4 book ai didi

javascript - laravel Livewire 电线 :click not firing the function

转载 作者:行者123 更新时间:2023-12-05 00:27:04 27 4
gpt4 key购买 nike

我想用 laravel livewire 做一个 SPA,我想使用 wire:click 来触发组件中的一个功能,但它不起作用,如果代码困惑这是我第一次在这里发布并且我不确定要发布什么,请原谅这是我的代码来解决这些问题谢谢
主 Blade .php

@section('content')
<div>
<div class="row justify-content-center">
<div class="col-12">
<div class="card my-3">

<!-- header -->
<div class="card-header d-inline-flex">
<h3 class='mr-2'>Categories</h3>
<div>
<a href="javascript:void(0);" wire:click='createCategory' class="btn btn-success ">Add NewCategory</a>
</div>
</div><!-- header -->
<div class="card-body">

<!-- alerts -->
@include('admin.includes.alerts.errors')
@include('admin.includes.alerts.success')
<!-- alerts -->


<!-- if True , create form will show , if not will stay disabled -->
@if ($showCreateForm)
@livewire('admin.category.create' )
@endif
<!-- if True , create form will show , if not will stay disabled -->

<!-- Table -->
<div class="table-responsive">
<table id="example2" class="table table-bordered table-hover">
<thead>
<tr>
<th>ID</th>
<th>Image</th>
<th>Name</th>
<th>Slug</th>
<th>Status</th>
<th>Parent</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@foreach ($categories as $category)
<tr>
<td>{{$category->id}}</td>
{{-- <td>{{storage_path(app\livewire-tmp\$category->image)}}" /></td> --}}
<td>{{$category->name}}</td>
<td>{{$category->slug}}</td>
<td class=" {{$category->isActive()==='Active'? 'text-success':'text-danger'}}">
{{$category->isActive()}}</td>
<td>{{ !empty($category->parent) ? $category->parent->name:'' }}</td>
<td>
<a href="" class="btn btn-warning">Edit</a>
<a href="" class="btn btn-danger">Delete</a>
</td>
</tr>
@endforeach

</tbody>
<tfoot>
<tr>
<th>ID</th>
<th>Image</th>
<th>Name</th>
<th>Slug</th>
<th>Status</th>
<th>Parent</th>
<th>Action</th>
</tr>
</tfoot>
</table>
<div>
{!!$categories->links()!!}
</div>
</div>
<!-- Table -->

</div><!-- body -->
</div>
</div>
</div>
</div>
@endsection
和组件 Main.php ,
<?php

namespace App\Http\Livewire\Admin\Category;

use App\Models\Admin\Category;
use Livewire\Component;
use Livewire\WithPagination;

class Main extends Component
{
use WithPagination;

protected $categories;
public $showCreateForm = false;
public $showEditForm = false;
public function render()
{
$categories = Category::orderBy('id','desc')->paginate(12);
return view('livewire.admin.category.main',[
'categories' => $categories,
]) ->layout('layouts.admin');
}

public function createCategory()
{
$this->showCreateForm = !$this->showCreateForm;
}
public function update_Category($id)
{


$categories = Category::whereId($id);
if ($categories) {
$this->emit('getCategoryid' , $categories);
$this->showEditForm = !$this->showEditForm;
$this->showCreateForm = false;
}
}
public function delete_Category($id)
{
$this->showCreateForm = !$this->showCreateForm;
}
}
  • ////更新 ////

  • 我尝试了 iRestWeb Answer,我认为它是正确的答案,但我什至不明白它 100% 与 javascript 相关的事情发生了,这不是我的专业领域,所以这是我的完整代码,希望有人能理解,如果我的代码困惑,再次抱歉辛苦你了,谢谢你。
    创建.blade.php

    <div>
    <form role="form" wire:submit.prevent="create" method="POST" enctype="multipart/form-data">
    @csrf
    <div class="card-body">
    <div class="row">
    <div class="col-6">
    <div class="form-group">
    <label for="exampleInputEmail1">Parent</label>
    <select type="select" class="form-control" id="exampleInputEmail1" wire:model="parent_id" name="parent_id">
    <option selected value> -- select an option -- </option>
    {{-- @if (is_array($categories) || is_object($categories) || !empty($categories)) --}} @foreach ($categories as $category)
    <option value="{{$category->id}}">{{$category->name}}</option>
    @endforeach {{-- @endif --}}
    </select>
    </div>
    </div>
    <!-- 1 -->
    <div class="col-6">
    <div class="form-group">
    <label for="exampleInputPassword1">Category Name</label>
    <input type="text" class="form-control" id="exampleInputPassword1" placeholder="Name" wire:model="name" name="name"> @error('name') <span class="error text-danger">{{ $message }}</span> @enderror
    </div>
    </div>
    <!-- 2 -->
    <div class="col-6">
    <div class="form-group">
    <label for="exampleInputPassword1">Slug Name</label>
    <input type="text" class="form-control" id="exampleInputPassword1" placeholder="Name" wire:model="slug" name="slug"> @error('slug') <span class="error text-danger">{{ $message }}</span> @enderror
    </div>
    </div>
    <!-- 3 -->
    <div class="col-6">
    <div class="form-group">
    <label for="exampleFormControlFile1">Image</label>
    <input type="file" wire:model="image" class="form-control-file" id="exampleFormControlFile1" name="image"> @error('image') <span class="error text-danger">{{ $message }}</span> @enderror
    </div>

    </div>
    <!-- 4 -->
    </div>
    <div class="form-check">
    <input type="checkbox" class="form-check-input" id="exampleCheck1" wire:model="is_active" name="is_active">
    <label class="form-check-label" for="exampleCheck1">is Active</label> @error('is_active') <span class="error text-danger">{{ $message }}</span> @enderror
    </div>
    </div>
    <!-- /.card-body -->
    <div class="card-footer">
    <button type="submit" class="btn btn-primary">Submit</button>
    </div>
    </form>
    </div>

    创建.php

    <?php

    namespace App\Http\Livewire\Admin\Category;

    use Livewire\Component;
    use App\Models\Admin\Category;
    use Livewire\WithFileUploads;
    use Illuminate\Support\Str;
    use Livewire\WithPagination;
    use Intervention\Image\Facades\Image;



    class Create extends Component
    {


    use WithFileUploads;
    use WithPagination;

    public $slug , $name , $image , $parent_id , $is_active;

    protected $rules = [
    'slug' => 'required|unique:categories,slug',
    'name' => 'required',
    'image'=> 'nullable|image|max:1024'
    ];

    protected $categories;
    public function render()
    {
    $categories = Category::orderBy('id','desc')->paginate(12);
    return view('livewire.admin.category.create' , [
    'categories' => $categories,
    ]);
    }
    public function create()
    {
    $this->validate();

    $data = [
    'name' => $this->name,
    'slug' => $this->slug,
    'is_active'=> $this->is_active,
    'image'=> $this->image,
    'parent_id'=> $this->parent_id,
    ];
    //image upload
    try {
    if ($image = $this->image) {
    $filename = Str::slug($this->name).'.'.$image->getClientOriginalExtension();
    $path = public_path('assets/image/'.$filename);
    Image::make($image->getRealPath())->save($path,100);
    }
    Category::create($data);
    $this->reset();
    return $this->addError('success' , 'Created Successfuly');
    } catch (\Throwable $th) {
    return $this->addError('error', 'Something Wrong Happens');
    }

    }

    }

    编辑 Blade .php

    <div>
    <form role="form" method="POST" enctype="multipart/form-data" wire:submit.prevent="update">
    @csrf
    <div class="card-body">
    <div class="row">
    <div class="col-6">
    <div class="form-group">
    <label for="exampleInputEmail1">Parent</label>
    <select type="select" class="form-control" id="exampleInputEmail1" wire:model="parent_id" name="parent_id">
    <option></option>
    {{-- @if (is_array($categories) || is_object($categories) || !empty($categories)) --}} @foreach ($categories as $category)
    <option value="{{$category->id}}">{{$category->name}}</option>
    @endforeach {{-- @endif --}}
    </select>
    </div>
    </div>
    <!-- 1 -->
    <div class="col-6">
    <div class="form-group">
    <label for="exampleInputPassword1">Category Name</label>
    <input type="text" class="form-control" id="exampleInputPassword1" placeholder="Name" wire:model="name" value='{{$category->name}}' name="name"> @error('name') <span class="error text-danger">{{ $message }}</span> @enderror
    </div>
    </div>
    <!-- 2 -->
    <div class="col-6">
    <div class="form-group">
    <label for="exampleInputPassword1">Slug Name</label>
    <input type="text" class="form-control" id="exampleInputPassword1" placeholder="Name" wire:model="slug" name="slug" value='{{$category->slug}}'> @error('slug') <span class="error text-danger">{{ $message }}</span> @enderror
    </div>
    </div>
    <!-- 3 -->
    <div class="col-6">
    <div class="form-group">
    <label for="exampleFormControlFile1">Image</label>
    <input type="file" class="form-control-file" id="exampleFormControlFile1" name="image">
    <img value='{{$category->image}}' alt="" srcset=""> @error('image') <span class="error text-danger">{{ $message }}</span> @enderror
    </div>

    </div>
    <!-- 4 -->
    </div>
    <div class="form-check">
    <input type="checkbox" class="form-check-input" id="exampleCheck1" wire:model="is_active" name="is_active">
    <label class="form-check-label" for="exampleCheck1">is Active</label> @error('is_active') <span class="error text-danger">{{ $message }}</span> @enderror
    </div>
    </div>
    <!-- /.card-body -->
    <div class="card-footer">
    <button type="submit" class="btn btn-primary">Submit</button>
    </div>
    </form>
    </div>

    Edit.php(未完成的任务)

    <?php

    namespace App\Http\Livewire\Admin\Category;

    use Livewire\Component;
    use App\Models\Admin\Category;

    class Edit extends Component
    {
    protected $categories , $cat_id;
    public $slug , $name , $image , $old_image , $parent_id , $is_active;

    protected $listeners = ['getCategoryid'=>'getID'];


    public function mount()
    {
    $this->categories = Category::whereId($this->cat_id)->first();
    }//mout


    public function render()
    {
    $categories = Category::all();
    return view('livewire.admin.category.edit' , [
    'categories' => $categories,
    ]);
    }//render

    public function update($id)
    {

    }//update

    public function getID($categories)
    {
    $this->categories = $categories;

    // Data
    $this->slug = $this->$categories['slug'];
    $this->name = $this->$categories['name'];
    $this->image = $this->$categories['image'];
    $this->old_image = $this->$categories['old_image'];
    $this->parent_id = $this->$categories['parent_id'];
    $this->is_active = $this->$categories['is_active'];

    }//getID
    }

    最佳答案

    所有 HTML 代码都应该用单个 <div>. 覆盖然后它将起作用。

    关于javascript - laravel Livewire 电线 :click not firing the function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64089344/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com