标签: laravel-livewire

有没有正确的方法将 Trix 编辑器与 Livewire 连接起来?

将 Trix 编辑器内容与 Livewire 连接在一起时,我遇到了问题。我认为问题在于当 Livewire 从 Trix 接收内容时,内容会被换出并且 Trix 被禁用。有没有更好的办法?

我所做的,有效的,如下。目前,页面被重定向到自身以重新启动 Trix(击败了 Livewire 的全部要点,但它也被用于其他事情)。

<div>
  <input
      id="newCommentTextTrixContent"
      type="hidden"
      wire:model="newCommentText"
  >

  <trix-editor
      id="newCommentTextTrixEditor"
      input="newCommentTextTrixContent"
  ></trix-editor>


  <button wire:click="addComment(document.getElementById('newCommentTextTrixEditor').innerHTML)">Add Comment</button>
</div>
Run Code Online (Sandbox Code Playgroud)

我试过了

  • 隐藏输入上的线:模型 - 没有任何反应
  • x-on:trix-change="$set('comment', $event.target.innerHTML) -- 这有效,但 Trix 在第一次按键后变灰并停止工作(重启问题?)

我敢肯定像后者这样的东西更好,但是每次都以某种方式重新启动 Trix。这一切似乎有点混乱 - 所以问题是,这样做的正确方法是什么?

trix laravel-livewire alpine.js laravel-7

5
推荐指数
2
解决办法
3568
查看次数

如何使用 Laravel Livewire 和 Spatie 媒体库上传图像?

我正在使用 Laravel Livewire 和 Spatie 媒体库,但我在他们的文档中找不到任何有关如何执行此操作的有用信息。

我正在尝试这个,但它给了我错误

$this->menu->addMediaFromUrl($this->menu_image->temporaryUrl())->toMediaCollection('menu_image');
Run Code Online (Sandbox Code Playgroud)

我收到这个错误 出现错误

media-library laravel laravel-livewire

5
推荐指数
2
解决办法
4336
查看次数

Livewire:无法调用组件方法。在组件:[parent] 上找不到公共方法 [childMethodName]

使用 Laravel Livewire,我有一个父母和一个(重复的)孩子。子刀片有一个呼叫childMethod()through wire:click="childMethod()"

问题是当parent->childMethod()我想child->childMethod()被呼叫时却被呼叫了。

父组件

class StatementsTable extends Component // parent
{
    public function render()
    {
        return view('livewire.statements-table', [
            'statements' => Statement::limit(10)->get()
        ]);
    }
}
Run Code Online (Sandbox Code Playgroud)

家长statements-table.blade

<table class="table">
    @foreach($statements as $statement)
        @livewire('statement-line', ['statement' => $statement], key($statement->id))
    @endforeach
</table>
Run Code Online (Sandbox Code Playgroud)

子组件:

class StatementLine extends Component
{
    public $statement;
    public $calls = 0;

    public function childMethod()
    {
        $this->calls += 1;
    }

    public function mount($statement): void
    {
        $this->statement = $statement;
    }

    public function render()
    { …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-livewire

5
推荐指数
2
解决办法
2万
查看次数

为什么 Laravel-livewire 'wire:model' 不起作用?

我正在使用 Laravel 8。

我的 Livewire 控制器

<?php

namespace App\Http\Livewire;

use Livewire\Component;

class SearchDropdown extends Component
{
    public $search = 'hello there';
    public function render()
    {
        return view('livewire.search-dropdown');
    }
}
Run Code Online (Sandbox Code Playgroud)

火线刀片

<div class="relative mt-3 md:mt-0">
    <input wire:model="search" type="text" class="bg-gray-800 text-sm rounded-full w-64 px-4 pl-8 py-1 focus:outline-none focus:shadow-outline" placeholder="Search">
    <div class="absolute top-0">
        <svg class="fill-current w-4 text-gray-500 mt-2 ml-2" viewBox="0 0 24 24"><path class="heroicon-ui" d="M16.32 14.9l5.39 5.4a1 1 0 01-1.42 1.4l-5.38-5.38a8 8 0 111.41-1.41zM10 16a6 6 0 100-12 6 6 0 000 12z"/></svg> …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-livewire

5
推荐指数
2
解决办法
2万
查看次数

Livewire 线:model.defer 在提交时显示空值(第二次)

这是我的刀片视图示例

<x-jet-form-section submit="store">
    <div class="col-span-6 sm:col-span-4">
                <x-jet-label for="name" value="{{ __('Name') }}" />
                <x-jet-input name="name" wire:model.defer="name" type="text" class="mt-1 block w-full" autocomplete="off" />
                <x-jet-input-error for="name" class="mt-2" />
            </div>
</x-jet-form-section>
Run Code Online (Sandbox Code Playgroud)

在 LiveWire 组件上我有这个调试

public function store() {
  dd($this);
}
Run Code Online (Sandbox Code Playgroud)

当我提交表单时,我看到输入字段值。然后我关闭调试窗口(dd)再次按提交,现在该值为NULL。

如果我将wire:model.defer更改为wire:model.lazy,这种情况就不会再发生。有用。为什么 ?!

php laravel laravel-livewire

5
推荐指数
1
解决办法
1304
查看次数

Livewire 组件插入另一个 Livewire 组件

我有一个包含几张卡片的 Livewire 概述组件。在这些卡中,有一个 livewire 表单,但是当我将该表单包含到概述组件中时,我的整个 livewire 停止工作。

我添加到概述组件文件中的唯一一行是:

@livewire('apply-form')

当我删除该 livewire 方法时,一切都会再次正常工作,但我也需要在我的概述组件中使用该表单。

我做错了什么吗,或者有人可以帮我解决这个奇怪的“错误”吗?

不知道我的 livewire 版本,但资产已过时。

Livewire 也没有给出任何错误。

主要组件,其中包含导致其余组件崩溃的其他组件

导致其余部分崩溃的 Livewire 组件的代码:


namespace App\Http\Livewire;

use Illuminate\Support\Facades\Mail;
use Livewire\Component;
use App\Mail\ApplyMail;
use Livewire\WithFileUploads;

class ApplyForm extends Component
{
    use WithFileUploads;

    public $voornaam;
    public $achternaam;
    public $woonplaats;
    public $geboortedatum;
    public $emailadres;
    public $telefoonnummer;
    public $vacaturenaam;
    public $cv;

    protected $rules = [
        'voornaam' => 'required|max:10',
        'achternaam' => 'required|max:10',
        'woonplaats' => 'required|max:10',
        'geboortedatum' => 'required|date',
        'emailadres' => 'required|e-mail',
        'telefoonnummer' => 'required|numeric',
        'vacaturenaam' => 'required', …
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-livewire

5
推荐指数
1
解决办法
3688
查看次数

如何修改 Laravel Jetstream 登录

我正在使用 Larave Jetstream livewire,我想修改登录名。

从具有初始值为 1 的隐藏输入字段“is_admin”登录

当用户提交登录表单时,后端检查is_admin数据库表字段的 = 1


表结构:姓名、电子邮件、密码、is_admin

is_admin = 0 或 1

我想检查 is_admin 标志,如果提供的凭据匹配email, password,则is_admin=1只有用户可以登录。


php laravel laravel-livewire laravel-jetstream

5
推荐指数
1
解决办法
5379
查看次数

未捕获(承诺中)类型错误:无法读取 null 的属性(读取“指纹”)Laravel Livewire

我使用 Laravel Livewire 制作了一个多文件上传组件。上传完成后我想显示上传的文件而不重新加载页面,如下所示:

<div class="grid grid-flow-col auto-cols-max gap-4 mb-5">
    @foreach ($files as $file)
        <livewire:file :file="$file"/>
    @endforeach
</div>
Run Code Online (Sandbox Code Playgroud)

一次上传一个或多个文件效果很好。但是在上传时,当循环中已经存在文件时,Livewire 会抛出此错误:Uncaught (in promise) TypeError: Cannot read properties of null (reading 'fingerprint')

经过一些研究后,我得出的结论是,这是因为 Livewire 生成与第一个文件相同的 id:

<div class="grid grid-flow-col auto-cols-max gap-4 mb-5">               
    <div wire:id="eCHZ9wxyp7nxOC4o5uCC" class="file file-jpeg file-lg">
        <!-- content of existing file component -->
    </div>
                     
    <div wire:id="eCHZ9wxyp7nxOC4o5uCC" class="file file-jpeg file-lg">
        <!-- content of new file component, should have Unique wire:id -->
    </div>        
</div>
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

laravel vue.js laravel-livewire alpine.js

5
推荐指数
1
解决办法
1万
查看次数

如何在 laravel-livewire 中设置带有验证错误的 Flash 消息

在登录表单中使用 laravel 7 /livewire 1.3 应用程序时,我在无效表单上遇到错误,代码如下:

public function submit()
{
    $loginRules= User::getUserValidationRulesArray();
    $this->validate($loginRules);
Run Code Online (Sandbox Code Playgroud)

并在任何字段附近显示错误消息

我希望登录时无法添加闪现消息并阅读 https://laravel.com/docs/7.x/validation

我尝试做:

$request = request();
$loginRules= User::getUserValidationRulesArray('login');
$validator = Validator::make($request->all(), $loginRules);

if ($validator->fails()) {
    session()->flash('danger_message', 'Check your credentials !');
    return redirect()->to('/login');
}
Run Code Online (Sandbox Code Playgroud)

我收到了闪现消息,但任何字段的验证错误都丢失了。

如果我尝试做:

$request = request();
$loginRules= User::getUserValidationRulesArray('login');
$validator = Validator::make($request->all(), $loginRules);

if ($validator->fails()) {
    session()->flash('danger_message', 'Check your credentials !');
    return redirect('/login')
        ->withErrors($validator)
        ->withInput();
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Method Livewire\Redirector::withErrors does not exist.
Run Code Online (Sandbox Code Playgroud)

在routes/web.php我有:

Route::livewire('/login', 'login')->name('login');
Run Code Online (Sandbox Code Playgroud)

修改: 在组件 app/Http/Livewire/Login.php 中:

<?php

namespace App\Http\Livewire;

use App\User;
use …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-livewire

4
推荐指数
1
解决办法
1万
查看次数

Livewire重新渲染后如何重新初始化AlpineJS组件?

我有一个使用 AlpineJS 隐藏的警报组件,但我希望它在 Livewire 重新渲染后再次可见。

使用 Livewire 组件显示警报

@if(Session::has('success'))
    <x-success-alert :message="Session::get('success')" />
@endif
Run Code Online (Sandbox Code Playgroud)

AlpineJS 组件

<div x-data="{show: true}">
    <div x-show="show">
        <span>{{ $message }}</span>
        <button @click="show = false">&times;</button>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

initialization laravel laravel-livewire alpine.js

4
推荐指数
1
解决办法
5957
查看次数