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();

$form->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
4

2 に答える 2

1

問題は、このステートメントのタイプミスです。

return $this->$inputFilter;

PHPはこの行を動的プロパティ名として解釈し、これを文字列に変換します。正しいバージョンは次のとおりです。

return $this->inputFilter;

また、入力フィルターに何かを割り当てる必要があります。

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

    return $this->inputFilter;
}
于 2013-02-20T12:03:04.703 に答える
0

入力フィルターを遅延ロードしていますが、設定することはありません$this->inputFilter

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

エラーは入力フィルターを文字列にキャストすることに関するものであるため、これが問題であるかどうかはわかりません。TaiKhoan.phpの59行目に正確なコードを入力してください。

于 2013-02-20T11:37:09.097 に答える