Zend framework Zend Form addFilter条带标记而非条带标记
我需要一些帮助来清理Zend_表单中的内容,并向元素添加过滤器。现在我的印象是,当您向表单添加过滤器时,当表单发布时,过滤器是作为控制器中调度的一部分执行的 然而,当我对表单进行测试时,filter StripTags似乎没有运行,我正在使用数据中的HTML标记获取数据 我的表单元素如下所示Zend framework Zend Form addFilter条带标记而非条带标记,zend-framework,zend-form,zend-filter-strip-tags,Zend Framework,Zend Form,Zend Filter Strip Tags,我需要一些帮助来清理Zend_表单中的内容,并向元素添加过滤器。现在我的印象是,当您向表单添加过滤器时,当表单发布时,过滤器是作为控制器中调度的一部分执行的 然而,当我对表单进行测试时,filter StripTags似乎没有运行,我正在使用数据中的HTML标记获取数据 我的表单元素如下所示 $address1 = new Zend_Form_Element_Textarea('address1'); $address1->addFilter('StripTags')
$address1 = new Zend_Form_Element_Textarea('address1');
$address1->addFilter('StripTags')
->addFilter('StringTrim')
->setAttrib('cols', 30)
->setAttrib('rows', 5)
->removeDecorator('DtDdWrapper')
->removeDecorator('label')
->removeDecorator('HtmlTag')
但是,如果我在文本区域中输入一些带有html标记的数据,然后使用
$formData = $this->_request->getPost();
if($form->isValid($formData){
...
数据返回时带有标记。只有当我通过strip_tags()函数传递数据时,它才会被删除
我想我的问题是,StipTags应该过滤吗?如果是,为什么不是呢?我错过了什么 调用isValid后,您没有发布有关如何访问数据的代码。IIRC只有通过
$form->getValue('someElement')
或类似的方式访问数据时,筛选器才会生效。对不起,我知道我迟到了,但万一有人遇到同样的问题
我今天遇到了这个问题,我找到了一些解决这个问题的方法:
首先,我的代码是:
- 这是表单类 类应用程序表单用户表单扩展Zend表单 { 公共函数init() { } }
- 这是控制器类
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
// action body
}
public function listAction()
{
// action body
$user_model = new Application_Model_User();
$this->view->users = $user_model->listUsers();
$track_form = new Application_Form_Track();
$this->view->track_form = $track_form;
$track_model = new Application_Model_Track();
$request = $this->getRequest();
if($request->isPost())
{
if($track_form->isValid($request->getPost())){
$track_model-> addTrack($request->getParams());
$this->redirect('/user/add');
}
}
}
public function detailsAction()
{
// action body
$user_model = new Application_Model_User();
$us_id = $this->_request->getParam("uid");
$user = $user_model->userDetails($us_id);
$trackModel = new Application_Model_Track();
$track = $trackModel->getTrackName($user[0]['track']);
$user[0]['track'] = $track[0]['name'];
$this->view->user = $user[0];
}
public function deleteAction()
{
// action body
$user_model = new Application_Model_User();
$us_id = $this->_request->getParam("uid");
$user_model->deleteUser($us_id);
$this->redirect("/user/list");
}
public function addAction()
{
// action body
$form = new Application_Form_UserForm();
$request = $this->getRequest();
if($request->isPost()){
if($form->isValid($request->getPost())){
/*echo "<pre>";
print_r($form);
echo "</pre>";
exit;*/
$userData['fname'] = $form->getValue('fname');
$userData['lname'] = $form->getValue('lname');
$userData['email'] = $form->getValue('email');
$userData['gender'] = $form->getValue('gender');
$userData['track'] = $form->getValue('track');
$user_model = new Application_Model_User();
$user_model-> addNewUser($userData);
$this->redirect('/user/list');
}
}
$this->view->user_form = $form;
}
public function editAction()
{
// action body
$form = new Application_Form_UserForm();
$user_model = new Application_Model_User ();
$id = $this->_request->getParam('uid');
$user_data = $user_model-> userDetails($id)[0];
$form->populate($user_data);
$this->view->userName = $user_data['fname']." ".$user_data['lname'];
$this->view->user_form = $form;
$request = $this->getRequest();
if($request->isPost()){
if($form->isValid($request->getPost())){
$userData['fname'] = $form->getValue('fname');
$userData['lname'] = $form->getValue('lname');
$userData['email'] = $form->getValue('email');
$userData['gender'] = $form->getValue('gender');
$userData['track'] = $form->getValue('track');
$user_model-> updateUser($id, $userData);
$this->redirect('/user/list');
}
}
}
}
public function init()
{
/*在此初始化操作控制器*/
}
公共函数索引()
{
//动作体
}
公共职能清单行动()
{
//动作体
$user_model=新应用程序_model_user();
$this->view->users=$user\u model->listUsers();
$track_form=新应用程序_form_track();
$this->view->track\u form=$track\u form;
$track_model=新应用程序_model_track();
$request=$this->getRequest();
如果($request->isPost())
{
如果($track\u form->isValid($request->getPost())){
$track_model->addTrack($request->getParams());
$this->redirect('/user/add');
}
}
}
公共功能详细信息操作()
{
//动作体
$user_model=新应用程序_model_user();
$us\u id=$this->\u请求->获取参数(“uid”);
$user=$user\u model->userDetails($us\u id);
$trackModel=新应用程序_Model_Track();
$track=$trackModel->getTrackName($user[0]['track']);
$user[0]['track']=$track[0]['name'];
$this->view->user=$user[0];
}
公共功能删除操作()
{
//动作体
$user_model=新应用程序_model_user();
$us\u id=$this->\u请求->获取参数(“uid”);
$user\u model->deleteUser($us\u id);
$this->redirect(“/user/list”);
}
公共函数addAction()
{
//动作体
$form=新应用程序\表单\用户表单();
$request=$this->getRequest();
如果($request->isPost()){
如果($form->isValid($request->getPost())){
/*回声“;
打印(表格);
回声“;
退出*/
$userData['fname']=$form->getValue('fname');
$userData['lname']=$form->getValue('lname');
$userData['email']=$form->getValue('email');
$userData['gender']=$form->getValue('gender');
$userData['track']=$form->getValue('track');
$user_model=新应用程序_model_user();
$user\u model->addNewUser($userData);
$this->redirect('/user/list');
}
}
$this->view->user\u form=$form;
}
公共职能编辑行动()
{
//动作体
$form=新应用程序\表单\用户表单();
$user_model=新应用程序_model_user();
$id=$this->_请求->获取参数('uid');
$user\u data=$user\u model->userDetails($id)[0];
$form->populate($user\u data);
$this->view->userName=$user\u data['fname']。“”.$user\u data['lname'];
$this->view->user\u form=$form;
$request=$this->getRequest();
如果($request->isPost()){
如果($form->isValid($request->getPost())){
$userData['fname']=$form->getValue('fname');
$userData['lname']=$form->getValue('lname');
$userData['email']=$form->getValue('email');
$userData['gender']=$form->getValue('gender');
$userData['track']=$form->getValue('track');
$user\u model->updateUser($id,$userData);
$this->redirect('/user/list');
}
}
}
}
第一个解决方案:
我在Form类中对表单元素使用了过滤器,
但我从控制器中的$form对象检索数据,
因为我找到了那个方法
addFilter()
不会更改$\u POST数组值,因此我已从$form对象检索数据,然后将其作为数组传递给模型
第二种解决方案:
我试图通过从filter类创建对象并应用所需的筛选器,将筛选器应用于控制器中的值,而不是表单中的值
第三种解决方案:
就是使用方法
addValidator()
使用影响$\u POST值的regex。谢谢我直接从$formData数组中提取数据。现在从表单对象获取值时工作。这一个也让我抓到了,谢谢Jani
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
// action body
}
public function listAction()
{
// action body
$user_model = new Application_Model_User();
$this->view->users = $user_model->listUsers();
$track_form = new Application_Form_Track();
$this->view->track_form = $track_form;
$track_model = new Application_Model_Track();
$request = $this->getRequest();
if($request->isPost())
{
if($track_form->isValid($request->getPost())){
$track_model-> addTrack($request->getParams());
$this->redirect('/user/add');
}
}
}
public function detailsAction()
{
// action body
$user_model = new Application_Model_User();
$us_id = $this->_request->getParam("uid");
$user = $user_model->userDetails($us_id);
$trackModel = new Application_Model_Track();
$track = $trackModel->getTrackName($user[0]['track']);
$user[0]['track'] = $track[0]['name'];
$this->view->user = $user[0];
}
public function deleteAction()
{
// action body
$user_model = new Application_Model_User();
$us_id = $this->_request->getParam("uid");
$user_model->deleteUser($us_id);
$this->redirect("/user/list");
}
public function addAction()
{
// action body
$form = new Application_Form_UserForm();
$request = $this->getRequest();
if($request->isPost()){
if($form->isValid($request->getPost())){
/*echo "<pre>";
print_r($form);
echo "</pre>";
exit;*/
$userData['fname'] = $form->getValue('fname');
$userData['lname'] = $form->getValue('lname');
$userData['email'] = $form->getValue('email');
$userData['gender'] = $form->getValue('gender');
$userData['track'] = $form->getValue('track');
$user_model = new Application_Model_User();
$user_model-> addNewUser($userData);
$this->redirect('/user/list');
}
}
$this->view->user_form = $form;
}
public function editAction()
{
// action body
$form = new Application_Form_UserForm();
$user_model = new Application_Model_User ();
$id = $this->_request->getParam('uid');
$user_data = $user_model-> userDetails($id)[0];
$form->populate($user_data);
$this->view->userName = $user_data['fname']." ".$user_data['lname'];
$this->view->user_form = $form;
$request = $this->getRequest();
if($request->isPost()){
if($form->isValid($request->getPost())){
$userData['fname'] = $form->getValue('fname');
$userData['lname'] = $form->getValue('lname');
$userData['email'] = $form->getValue('email');
$userData['gender'] = $form->getValue('gender');
$userData['track'] = $form->getValue('track');
$user_model-> updateUser($id, $userData);
$this->redirect('/user/list');
}
}
}
}