我正在使用CakePHP 2.6.7。我想禁用csv文件上传验证。所以就我而言,Disable validation in update form - CakePHP的第一个答案 不适用。我试着用:
$this->validator()->remove('email');
但它不起作用。有什么想法吗?
答案 0 :(得分:4)
它对我有用:
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<body>
<nav class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target="#MyNav">
<span class="sr-only"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand">Jaso</a>
</div>
<div class="collapse navbar-collapse" id="MyNav">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Protilio</a></li>
<li><a href="#">dontknow</a></li>
</ul>
</div>
</div>
</nav>
一般来说:
unset($this->Customer->validate['email']);
答案 1 :(得分:3)
或许,不是删除验证规则,而是通过在规则中设置required=false
来实现相同的行为:
public $validate = array(
'email' => array(
'rule' => array('email', true),
'message' => 'Please supply a valid email address.',
'required' => false
)
);
如果您仍想在运行时删除该规则,则如果您从控制器中调用该键,则取消设置Model::validate
数组中的键可能会有效。但是,您可能希望在提交表单之后和保存表单之前禁用模型中字段的验证(例如,基于另一个字段的值)。在此阶段,验证规则已加载,修改Model::validate
数组将不起作用。相反,您必须使用ModelValidator
对象。
所有验证规则都存储在
ModelValidator
对象中,该对象包含模型中每个字段的每个规则集。
这样的事情应该有效:
public function beforeValidate($options = array()){
if (!empty($this->data[$this->alias]['csv_field'])) { //example
$this->validator()->remove('email');
}
}