将 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)
我试过了
我敢肯定像后者这样的东西更好,但是每次都以某种方式重新启动 Trix。这一切似乎有点混乱 - 所以问题是,这样做的正确方法是什么?
我正在使用 Laravel Livewire 和 Spatie 媒体库,但我在他们的文档中找不到任何有关如何执行此操作的有用信息。
我正在尝试这个,但它给了我错误
$this->menu->addMediaFromUrl($this->menu_image->temporaryUrl())->toMediaCollection('menu_image');
Run Code Online (Sandbox Code Playgroud)
使用 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) 我正在使用 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) 这是我的刀片视图示例
<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,这种情况就不会再发生。有用。为什么 ?!
我有一个包含几张卡片的 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) 我正在使用 Larave Jetstream livewire,我想修改登录名。
从具有初始值为 1 的隐藏输入字段“is_admin”登录
当用户提交登录表单时,后端检查is_admin数据库表字段的 = 1
表结构:姓名、电子邮件、密码、is_admin
is_admin = 0 或 1
我想检查 is_admin 标志,如果提供的凭据匹配email, password,则is_admin=1只有用户可以登录。
我使用 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 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) 我有一个使用 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">×</button>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)