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;
}
如果你告訴我們你的表結構和要驗證領域這將是一個容易許多。 –