Zend framework Zend Form addFilter条带标记而非条带标记

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')

我需要一些帮助来清理Zend_表单中的内容,并向元素添加过滤器。现在我的印象是,当您向表单添加过滤器时,当表单发布时,过滤器是作为控制器中调度的一部分执行的

然而,当我对表单进行测试时,filter StripTags似乎没有运行,我正在使用数据中的HTML标记获取数据

我的表单元素如下所示

$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() {

    }

    }

  • 这是控制器

类UserController扩展Zend_控制器_操作{

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');
        }
    }
}


}