2016-10-05 3 views
0

Я пытаюсь загрузить изображение с помощью формы Zend. Поскольку нам нужно, чтобы переместить изображение, я хочу добавить фильтр для выполнения задания. Но я не могу использовать getInputFilterChain(), у меня есть эта фатальная ошибка: Call to undefined method Zend\InputFilter\InputFilter::getFilterChain(). Что мне здесь не хватает?Zend Form: вызов неопределенного метода Zend InputFilter InputFilter :: getFilterChain()

Я могу получить информацию о файле в массиве $ prg. И поскольку я смотрел на https://framework.zend.com/manual/2.4/en/modules/zend.mvc.plugins.html, этот метод должен существовать здесь, нет?

И получаю ту же ошибку, если я использую это в своем файле Form.php.

Заранее благодарю за ваше время!

Мои действия контроллера:

public function signinAction() 
{ 
    $this->em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default'); 

    $form = new SignupForm($this->em); 

    $form->getInputFilter()->getFilterChain()->attach(
     new Zend\Filter\File\RenameUpload(array(
      'target' => './data/tmpuploads/file', 
      'randomize' => true, 
     )) 
    ); 

    $model = new ViewModel(array("form" => $form)); 


    $url = $this->url()->fromRoute("signin"); 
    $prg = $this->fileprg($form, $url, true); 

    if($prg instanceof \Zend\Http\PhpEnvironment\Response){  
     return $prg; 
    } 
    else if($prg === false){ 
     return $model; 
    } 

    //other stuff 
    ... 
} 

ответ

1

Вы должны получить экземпляр Input из InputFilter первого, а затем вы можете получить фильтр-цепи от входа:

$inputName = 'file'; // name of the input you want to work with 
$input = $form->getInputFilter()->get($inputName); 
$filterChain = $input->getFilterChain(); 
+0

Ha это, кажется, как очень очень логично. Еще раз спасибо за ваше время ! – KatharaDarko