2013-02-20 62 views
0

我有這樣的方法在模型TaiKhoan我需要幫助有關輸入濾波器

public function getInputFilter() 
{ 
    if (!$this->inputFilter) 
    { 
     $inputFilter = new InputFilter(); 
     $factory  = new InputFactory(); 

     $inputFilter->add($factory->createInput(array(
      'name'  => 'TenTaiKhoan', 
      'required' => true, 
      'filters' => array(
        array('name' => 'StripTags'), 
        array('name' => 'StringTrim'), 
      ), 
    ))); 

     $inputFilter->add($factory->createInput(array(
      'name'  => 'MatKhau', 
      'required' => true, 
      'filters' => array(
        array('name' => 'StripTags'), 
        array('name' => 'StringTrim'), 
      ), 
    ))); 
    } 

    return $this->$inputFilter; 
} 

然後我用它在我的控制器一樣

$taikhoan = new TaiKhoan(); 

$形式 - > setInputFilter($ taikhoan-> getInputFilter( ));

當我運行,這表明我這個錯誤

Catchable fatal error: Object of class Zend\InputFilter\InputFilter could not be converted to string in C:\wamp\www\ZF\module\CPanel\src\CPanel\Model\TaiKhoan.php on line 59 

回答

1

的問題是在此聲明一個錯字:

return $this->$inputFilter; 

PHP在解釋這個線作爲動態屬性的名稱,它這個轉換爲字符串。正確的版本是:

return $this->inputFilter; 

而且你需要的東西分配給輸入濾波器:

public function getInputFilter() 
{ 
    if (!$this->inputFilter) 
    { 
     // ... 
     $this->inputFilter = $inputFilter; 
    } 

    return $this->inputFilter; 
} 
0

你懶加載輸入濾波器,但從來沒有設置$this->inputFilter

public function getInputFilter() 
{ 
    if (!$this->inputFilter) 
    { 
     $this->inputFilter = new InputFilter(); 
    } 
    return $this->inputFilter; 
} 

不確定這是否是您的問題,因爲錯誤是將您的輸入過濾器轉換爲字符串。請提供TaiKhoan.php第59行的確切代碼。

+0

感謝您的幫助 – 2013-02-20 17:44:51