0
我遇到了字段验证问题。验证表单中的字段 - 检查CakePhp 3中是否存在“产品”
我想通过模型验证表单。我想检查是否存在具有某种价值的字段。
我想阻止使用一些标题不止一次。
例如
如果场“网站”标题为“主”,在数据库中存在,则无法验证表单。
如果它不存在,您可以传递它。
我想允许用户只添加一个标题为“主”的“网站”,但他可以在任何情况下添加任何其他标题的“网站”。
你有一些想法如何解决它?
我遇到了字段验证问题。验证表单中的字段 - 检查CakePhp 3中是否存在“产品”
我想通过模型验证表单。我想检查是否存在具有某种价值的字段。
我想阻止使用一些标题不止一次。
例如
如果场“网站”标题为“主”,在数据库中存在,则无法验证表单。
如果它不存在,您可以传递它。
我想允许用户只添加一个标题为“主”的“网站”,但他可以在任何情况下添加任何其他标题的“网站”。
你有一些想法如何解决它?
我想你有两个选择。
(1)设置一个Ajax请求到服务器。
要做到这一点:
创建一个功能,即响应一个Ajax请求,在()你SiteController命名检查名
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;
}
如果你告诉我们你的表结构和要验证领域这将是一个容易许多。 –