我对Laravel Livewire还比较陌生,正在努力解决这个问题。我有一个表单,它有一个select输入,在提交时,它会转到Livewire组件的store函数,我希望捕获选中的选项以进一步处理数据。
现在,表单正确呈现;选择输入被动态填充。
>
在第二次提交时,我看到选择输入选择选项被捕获,这是通过“更新”方法进行的,但公共属性仍然为空。对此非常困惑。
如何解决这两个问题?我使用的是Laravel Framework 8.33。1和Livewire v2。4.1.
查看
<form class="edit-profile m-b30" method="POST" wire:submit.prevent="store">
<div class="row">
<!-- Your Profile Views Chart -->
<div class="col-lg-12 m-b30">
<div class="widget-box">
<div class="widget-inner">
<div class="row">
<div class="col-12">
<div class="heading-bx left">
<h2 class="title-head">Registration</span></h2>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="ml-auto">
<h3>Course Details</h3>
</div>
</div>
<div class="form-group col-6">
<label class="col-form-label">Select Course</label>
<div>
<select class="form-control" name="course" wire:model="course">
<option value="">Select Course</option>
@foreach($courses as $course)
<option value="{{ $course->id }}">{{ $course->Name }}</option>
@endforeach
</select>
</div>
</div>
<div class="seperator"></div>
<div class="col-12">
<button class="btn" name="submit" type="submit">Apply</button>
<button class="btn-secondry" type="reset">Cancel</button>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
班
class ApplyOnlineComponent extends Component
{
public $courses;
public $course;
public function render()
{
return view('livewire.apply-online-component')->layout('layouts.base');
}
public function resetInputFields()
{
$this->reset();
}
public function updatedCourse($value)
{
$this->course = $value;
Log::info('Inside updated. Selected course:'.$this->course);
dd($value); // Works on second submit
}
public function mount()
{
Log::info('Inside mount');
$this->courses = Courses::all();
}
public function store()
{
Log::info('Inside store of online registration.
Selected course:'.$this->course); // This always null
}
}
我有类似的问题并解决了它。我认为你们班上的公共$course和你们刀刃上的foreach中的$course有冲突。在foreach ex($item)中为$curse设置另一个名称,然后再次检查。
看起来你的代码工作得很好,因为我刚刚复制了你的代码,在日志文件里是这样说的
[2021-07-04 00:01:51] local.INFO: Inside updated. Selected course:3
[2021-07-04 00:01:54] local.INFO: Inside store of online registration.
Selected course:3
[2021-07-04 00:01:59] local.INFO: Inside updated. Selected course:1
[2021-07-04 00:02:01] local.INFO: Inside store of online registration.
Selected course:1
[2021-07-04 00:05:17] local.INFO: Inside mount
[2021-07-04 00:05:25] local.INFO: Inside updated. Selected course:2
[2021-07-04 00:05:27] local.INFO: Inside store of online registration.
Selected course:2
我甚至用Bootstrap测试过,它也很好,没有任何CSS类丢失。但是我使用了Livewire版本2.5.1和Laravel 8.5。
更新:似乎你放在updatedCourse()中的dd()导致了所有的问题,因为我复制了你的代码,下面是它产生的结果:
[2021-07-04 00:10:15] local.INFO: Inside mount
[2021-07-04 00:10:18] local.INFO: Inside updated. Selected course:1
[2021-07-04 00:10:18] local.INFO: Inside store of online registration.
Selected course:1
[2021-07-04 00:10:24] local.INFO: Inside mount
[2021-07-04 00:10:28] local.INFO: Inside updated. Selected course:3
[2021-07-04 00:10:31] local.INFO: Inside store of online registration.
Selected course:
[2021-07-04 00:10:33] local.INFO: Inside updated. Selected course:2
[2021-07-04 00:10:38] local.INFO: Inside store of online registration.
Selected course:
[2021-07-04 00:10:38] local.INFO: Inside store of online registration.
Selected course:
[2021-07-04 00:10:42] local.INFO: Inside updated. Selected course:3
[2021-07-04 00:10:44] local.INFO: Inside store of online registration.
Selected course:
试着移除它,看看会发生什么。此外,如果你也显示你的日志文件,那就太好了。
我有一个表单,其中我将bands表的de id放在一个选择选项中。当我在dropdownlist中选择一个id并尝试提交表单时,该值始终保持为空。如何检索我选择的值? 创造刀身php文件: 我的BandControlers在我的商店行动:
问题内容: 考虑: 提交表单时,如何确保下拉列表中的选定值保持选中状态?此表单位于WordPress(PHP)内部。 问题答案: 为了避免许多if-else结构,让JavaScript自动完成:
返回NULL。在选择JTabbedPane旁边的一个JPanel后直接调用它,这是我能想到的方法返回空组件的唯一原因;因为选项卡已打开但没有焦点。 然而,我需要找到一种方法来获得JTabbedPane中打开的选项卡。 而且,始终返回NULL。有6个标签。 getSelectedIndex()返回了正确的索引,但如果我传入该索引,它仍然表示组件为null。
问题内容: 我正在尝试达到类似于37signals的ta-da列表的效果-我希望我的用户仅通过选中“完成”框即可从列表中检查项目- 换句话说,表单已提交到服务器在复选框上。有谁知道涵盖此类内容的教程,或者可以为我指明正确的方向? 谢谢罗布 问题答案: 如果我正确理解您的问题: 您可以使用jQuery和AJAX完成此操作。在第一个示例中,我无需提交整个表单,而仅提交复选框的值: 大概您会在服务器端处
问题内容: 大家好,我有一个联系表格,验证码在那里。提交表格后,我想保留支票。我发布了文本框值,它显示正确,但复选框不起作用。这是我的代码。 提交表格后如何保留复选框? 问题答案: 更改 至 这将使复选框保持选中状态。
问题内容: 这是形式的字段声明: 我想将初始值设置为,这似乎不起作用。我玩过参数,引号/无引号等,但是没有变化。 如果有可能,谁能给我一个明确的答案?和/或对我的代码段进行必要的调整? 我正在使用Django 1.0 问题答案: 实例化表单时,请尝试设置初始值: