[英]Remove extra white space from input in cakephp
我有一个html表单来保存cakephp中的项目。 我想限制用户保存相同的项目名称。 如果任何正文类型的相同项目名称在模型中应用了“唯一”验证,但是如果有人在项目名称之前或之后输入相同的名称,则它接受它并存储到数据库中。问题就是问题。 我想在保存之前删除多余的空格。
请帮忙。
从用户输入中删除空格的最佳位置即trim()
位于Controller级别的beforeFilter()
回调中。 对于PHP5 +,数组函数array_walk_recursive()
使这项工作变得非常简单。
例如:
public function beforeFilter()
{
parent::beforeFilter();
// remove leading and trailing whitespace from posted data
if (!function_exists('trimItem')) {
function trimItem(&$item,$key){
if (is_string($item)){
$item = trim($item);
}
}
}
array_walk_recursive($this->request->data, 'trimItem');
}
将此代码放入AppController
,将在所有表单上修剪用户输入
希望这可以帮助
正如@Prasantn Bebdra的答案的补充,因为提问者不知道在哪里以及如何使用trim()
。
要修剪控制器中POST的所有数据(在调用Model->save()
),请执行以下操作:
foreach ($this->data as $key => $value) {
$this->data[$key] = trim($value);
}
你也可以在Model
使用它的一个回调 ,例如beforeValidate()或beforeSave() ,在你的情况下,最好使用beforeValidate,因为你可能还想在之后验证这些数据。
您还应该通知用户输入将被修剪,也可能在客户端进行此类修剪(在POST之前) - 检查此StackOverflow应答 。
通过我的研究,我认为最好的解决方案,如果您的数据是数组格式然后尝试这个=> Stackoverflow:如何修剪PHP中的数组值的空白
然而,如果您的数据不是数组,那么您可以简单地使用:
$data = trim($data);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.