gpt4 book ai didi

php - 如何验证和清理表单复选框数组?

转载 作者:行者123 更新时间:2023-11-28 02:43:12 25 4
gpt4 key购买 nike

我正在使用 OctoberCMS基于 LaravelTwig .

我有一个带有复选框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");
}
}

最佳答案

您可以编写自己的自定义验证规则。您可以在插件 boot() 方法中定义一个新规则,如下所示:

Validator::extend('myCustomRule', function($attribute, $value, $parameters) {
# check if the $value is in valid
# return true if it is and return false if it is not valid
return true;
});

您可以 foreach 数组,然后检查值。取决于您的验证规则,之后您可能不需要进行 sanitizer 。

然后您可以通过您提供的名称使用自定义规则:

$validator = Validator::make(input(), [
'queued' => 'myCustomRule',
]
);

关于php - 如何验证和清理表单复选框数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42666961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com