我正在尝试做一些事情,以便在选中复选框控件时可以上传照片。我让客户端正常工作,这样,当选中此复选框时,将显示上载控件,并且表单可以正确验证。
但是,在我的控制器中,如果我的复选框被选中(true),则调用某种方法需要采取一些措施。如果未选中(false),我将执行其他一些操作。
在我的html页面中,我有以下内容:
class HelloWorklet {
constructor(audioContext) {
audioContext.audioWorklet.addModule('helloprocessor.js').then(() => {
this.awNode = new AudioWorkletNode(audioContext, 'hello-processor');
this.awNode.port.onmessage = (event) => {
switch (event.data.action) {
case 'response message':
this.respondMessage(event.data);
break;
}
}
});
}
requestMessage = () => {
return new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
this.awNode.port.postMessage({action: 'request message'});
})
}
respondMessage = (data) => {
// some time consuming processing
let msg = data.msg + '!';
this.resolve(msg);
}
}
let audioCtx = new AudioContext();
let helloNode = new HelloWorklet(audioCtx);
async function requestMessage() {
let msg = await helloNode.requestMessage();
// additional processing
console.log(msg);
}
但是,我现在只想在控制器中查看我的复选框中是否获得正确的值。为此,我做了一些简单的事情:
<form action="/supplier/submit/plan" method="post" role="form" id="plan-form">
...
<input name="checkingPhotos" type="checkbox" id="chkPhotos" />
<label for="chkPhotos">I want to include photos in this plan.</label>
...
</form>
无论我是否选中此复选框,结果均为 public function submitPlan(Request $request)
{
$checkboxValue = $request->input('checkingPhotos');
dd($checkboxValue);
}
。我的路线也像这样:
null
有人可以告诉我我在做什么错吗?我只想在控制器方法中看到值1 / True或0 / False。
答案 0 :(得分:0)
如果是复选框,则应将输入名称修改为
<input name="checkingPhotos[]" type="checkbox" id="chkPhotos" />
然后,您应该可以使用它获取所需的值
$request->input('checkingPhotos');
答案 1 :(得分:0)
似乎您的问题出在您的路线上,将其更改为
Route::post('/supplier/submit/plan', 'SupplierController@submitPlan');
答案 2 :(得分:0)
真正的问题是您的复选框没有值。添加一个值,您的问题就解决了。应该是:
<input name="checkingPhotos" type="checkbox" id="chkPhotos" value="1" />
[]
创建一个数组迪伦·卡斯(Dylan Kas)提交的关于更改名称以添加[]
的答案是可行的,但这并不是出于您的考虑。让我们看一下:
<input name="checkingPhotos[]" type="checkbox" id="chkPhotos" />
将传递帖子字符串:
checkingPhotos[]=On
其中使用PHP will automatically be turned into an array。
为什么首先要有一个复选框?需要复选框吗?为什么不检查文件是否存在。
$validated = $request->validate([
//... other fields here.
'image' => 'mime:png,gif,jpeg|max:10000' //set max to file size limit you want
]);
$plan = new SupplierPlan($validated);
if($request->has('image')){
$plan->image = $request->image->store();
}
$plan->save();
// ... flash message, return view or redirect