使用来自控制器的 livewire 组件编辑用户数据用户数据
edit user data user data using livewire component from controller
我想将 id 从 standard blade view
传递给 livewire component view
。
我在 blade 文件中有一个编辑用户按钮,所以当用户单击带有 id 的按钮 bootstrap modal
(这是一个 livewire component view
)时,将会打开。
//some ajax 用编辑按钮渲染 table
success: function(response) {
$('tbody').html("");
$.each(response, function(key, item) {
str += '<tr>';
//blahh...
str += '<a href="#" id="' + item.id + '" wire:click="edit({{ '+item.id+' }})" class="text-info mx-1 editIcon" data-toggle="modal" data-target="#editUserModal"></a>';
//blahh...
str += '</tr>';
})
$('tbody').append(str);
)};
如果我坚持jquery,我可以成功打开一个包含要编辑数据的模式。但我想将模态作为 livewire 组件打开。
livewire 视图
<div class="modal fade" id="editUserModal" tabindex="-1" role="dialog" aria-hidden="true">
//blahh
</div>
livewire 组件
public function render()
{
//some logic here to open modal with id clicked, so I can do something as below
$user = User::where('id', $id)->first();
$this->user_id = $id;
$this->first_name = $student->student_first_name;
return view('livewire.user.edit');
}
任何建议都会有所帮助。
我不想将整个项目移植到 livewire 我只是想在某些地方使用 livewire 组件,因为它的简单性和较少的代码
您可以使用 $emit
或 Livewire.emit
从 table 单击 emit an event。
success: function(response) {
$('tbody').html("");
$.each(response, function(key, item) {
str += '<tr>';
//blahh...
str += '<a href="#" id="' + item.id + '" wire:click="$emit({{ openmodal'+item.id+' }})" class="text-info mx-1 editIcon" data-toggle="modal" data-target="#editUserModal"></a>';
//blahh...
str += '</tr>';
})
$('tbody').append(str);
)};
然后听你的模态:
public bool $open = false;
public ?int $userId = null;
protected $listeners = ['openmodal' => 'openModal'];
public openModal(int $userId)
{
$this->userId = $userId;
// you can load your user data here
$user = User::findOrFail($userId);
}
public function render()
{
return view('livewire.user.edit');
}
我想将 id 从 standard blade view
传递给 livewire component view
。
我在 blade 文件中有一个编辑用户按钮,所以当用户单击带有 id 的按钮 bootstrap modal
(这是一个 livewire component view
)时,将会打开。
//some ajax 用编辑按钮渲染 table
success: function(response) {
$('tbody').html("");
$.each(response, function(key, item) {
str += '<tr>';
//blahh...
str += '<a href="#" id="' + item.id + '" wire:click="edit({{ '+item.id+' }})" class="text-info mx-1 editIcon" data-toggle="modal" data-target="#editUserModal"></a>';
//blahh...
str += '</tr>';
})
$('tbody').append(str);
)};
如果我坚持jquery,我可以成功打开一个包含要编辑数据的模式。但我想将模态作为 livewire 组件打开。
livewire 视图
<div class="modal fade" id="editUserModal" tabindex="-1" role="dialog" aria-hidden="true">
//blahh
</div>
livewire 组件
public function render()
{
//some logic here to open modal with id clicked, so I can do something as below
$user = User::where('id', $id)->first();
$this->user_id = $id;
$this->first_name = $student->student_first_name;
return view('livewire.user.edit');
}
任何建议都会有所帮助。 我不想将整个项目移植到 livewire 我只是想在某些地方使用 livewire 组件,因为它的简单性和较少的代码
您可以使用 $emit
或 Livewire.emit
从 table 单击 emit an event。
success: function(response) {
$('tbody').html("");
$.each(response, function(key, item) {
str += '<tr>';
//blahh...
str += '<a href="#" id="' + item.id + '" wire:click="$emit({{ openmodal'+item.id+' }})" class="text-info mx-1 editIcon" data-toggle="modal" data-target="#editUserModal"></a>';
//blahh...
str += '</tr>';
})
$('tbody').append(str);
)};
然后听你的模态:
public bool $open = false;
public ?int $userId = null;
protected $listeners = ['openmodal' => 'openModal'];
public openModal(int $userId)
{
$this->userId = $userId;
// you can load your user data here
$user = User::findOrFail($userId);
}
public function render()
{
return view('livewire.user.edit');
}