验证表单中的字段 - 检查"产品"存在于CakePhp 3中

时间:2016-03-22 12:12:36

标签: php validation cakephp

我在现场验证方面遇到了问题。

  

我想通过模型验证表单。我想检查是否存在具有某些值的字段。

     

我想不止一次阻止使用某些游戏。

例如

  

如果字段"网站"标题" Main"存在于数据库中,您无法验证表单。

     

如果它不存在,您可以传递它。

我想允许用户只添加一个" Site"标题" Main",但他可以添加" Site"在任何情况下都有任何其他头衔。

您是否知道如何解决它?

1 个答案:

答案 0 :(得分:1)

我认为你有两种选择。

(1)向服务器设置Ajax请求。

这样做:

  • 在SiteController中创建一个响应Ajax请求的函数,名为checkName()

    public function checkName($name) {
        // allow ajax requests 
        $this->request->allowMethod(['ajax']);
        // perform your check within the db
        $isExistent = [...]; 
        // prepare the response
        $response = ['name' => $name, 'isExistent' => $isExistent]; 
    
        if ($this->request->isAjax()){
            $this->autoRender = false;
            $this->response->disableCache();
            $this->response->type(['json' => 'application/json']);
            $this->response->body(json_encode($response));
        }
    }
    
  • 使用选项'_ext' => 'json'

  • 将路线添加到路线文件中
  • 准备调用已定义路由的Javascript Ajax函数,并将其附加到输入字段的onchange属性中。 (有关简单示例,请参阅此链接:http://www.w3schools.com/jquery/ajax_ajax.asp

(2)制作'名称'站点表的字段唯一。

为此,您可以将以下功能添加到SiteTable类

public function buildRules(
    RulesChecker $rules
) {
    $rules->add($rules->isUnique(['name']));
    return $rules;
}