【发布时间】:2017-07-28 18:18:29
【问题描述】:
我正在使用基于Laravel 和Twig 的OctoberCMS。
我有一个带有复选框 queued[] 的表单。使用 Laravel 循环提交和删除它们。
一切正常,但我如何validate 并清理阵列?
验证需要星号 *? '*' => Input::get('queued')?
清理,我收到错误trim() expects parameter 1 to be string, array given。
表格
<form method="POST" action="{{ url_current() }}">
<input type="hidden" name="_handler" value="onDelete" />
<input type="checkbox" name="queued[]" value="item1" />
<input type="checkbox" name="queued[]" value="item2" />
<input type="checkbox" name="queued[]" value="item3" />
<button type="submit" name="submit" value="delete">Delete Checked</button>
</form>
PHP
public function onDelete() {
# Validator
$validator = Validator::make(
[
'_handler' => Input::get('_handler'),
'queued' => Input::get('queued'),
'submit' => Input::get('submit')
]
);
if ($validator->fails()) {
return Redirect::back()->withErrors($validator);
exit();
}
# Sanitize
function sanitize_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = strip_tags($data);
$data = htmlspecialchars($data);
return $data;
}
# Delete Checked
$checkboxes = '';
$checkboxes = isset($_POST['queued']) ? $_POST['queued'] : array();
// Sanitize
$checkboxes = $this->sanitize_input($checkboxes);
foreach($checkboxes as $file) {
File::delete("$file");
}
}
【问题讨论】:
-
我有验证解决方案,它可以像
'queued[]' => Input::get('queued'),一样工作,请尝试一下 -
你在sanitize_input方法中传入的$data是什么?
-
@recoverymen $data 只是传递给函数的任何表单输入。我将 $checkboxes 传递给它。我会更新代码。
-
好的...这次验证对你有用吗?
-
@recoverymen 它通过了验证器,但是我怎么知道它是否已经验证了数组中的每个项目,或者它是否只是检查最后一个 queued[]?
标签: php html laravel laravel-5 octobercms