Php zend framework-验证后确认保存
我的挑战是构建一个表单,其中数据在保存之前会得到验证,如果验证失败,用户应该确认是否要保存 实例: 有一个带有两个字段的注册表-用户名和is_manager。该名称不需要验证,但应使用Zend_Db_NoRecordExists验证is_管理器(确保另一个用户还没有管理器-has is_manager=true),如果另一个用户已经是管理器,则应提示该用户确认覆盖该管理器 目标数据库表将是users(名称、用户名、is_manager)Php zend framework-验证后确认保存,php,validation,zend-framework,Php,Validation,Zend Framework,我的挑战是构建一个表单,其中数据在保存之前会得到验证,如果验证失败,用户应该确认是否要保存 实例: 有一个带有两个字段的注册表-用户名和is_manager。该名称不需要验证,但应使用Zend_Db_NoRecordExists验证is_管理器(确保另一个用户还没有管理器-has is_manager=true),如果另一个用户已经是管理器,则应提示该用户确认覆盖该管理器 目标数据库表将是users(名称、用户名、is_manager) 任何想法都是好主意!谢谢大家! 当有人更改is_manag
任何想法都是好主意!谢谢大家! 当有人更改is_manager复选框的状态时,您可以对该字段执行AJAX检查。我在本例中使用JQuery 设置Zend_Form_Element_复选框:
$is_manager->setAttrib('onchange', 'checkValue(this)');
您将拥有JS:
<script language = "Javascript">
function checkValue(object){
var is_manager = $(object).is(':checked') ? 1 : 0;
jQuery.ajax({
url: '/default/index/ajax', //modul/controller/action
type: 'POST',
data: {is_manager: is_manager},
dataType: "json",
success: function(result){
if(result.status != 'OK')
alert(result.message);
}
});
}
</script>
一种不依赖于javascript的方法是有两种形式:
当然没有客户端脚本辅助方法(正如@tasmaniski所建议的那样)那么灵巧,但至少没有javascript依赖性。也许最佳组合是根据上面的默认流设计表单,但将javascript编写为渐进式增强,当javascript不可用时,允许流优雅地降级到上面的状态。如何使用隐藏字段确定是否应覆盖管理器。如果另一个用户是管理员-取消选中复选框,但将隐藏的输入设置为true。如果再次选中-覆盖。是否使用Zend_表单创建该表单??您是否使用Zend_Form_Validate验证输入?所以您可以在那里执行AJAX请求ant ask$form->isValid(),并通过JSON返回响应…@tasmaniski是的,我使用zend_表单zend验证器。你能再详细说明一下你的想法吗?10倍!
public function ajaxAction(){
$this->view->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
$is_manager = $this->_getParam('is_manager');
// DO THE OTHER STUFF/validation AND LOGIC HERE
// ...
// OR set success message and status = OK
$results = array(
'status' => 'error',
'message' => 'You will overwriting existing manager!'
);
$this->_response->setBody(json_encode($results));
}