2017-04-15 12 views
0

나는 다음과 같은 모델 클래스가 있습니다오류 호출 젠드 필터 ToInt 7

Zend\Filter\FilterPluginManager::get was unable to fetch or create an instance for ToInt

누구가 지금 정수를 확인하는 방법을 알고 :이 클래스를 실행하면

<?php 
namespace Tropa\Model; 

use Zend\InputFilter\Factory as InputFactory; 
use Zend\InputFilter\InputFilter; 
use Zend\InputFilter\InputFilterAwareInterface; 

class Setor 
{ 
    public $codigo; 
    public $nome; 
    protected $inputFilter; 

    public function exchangeArray($data) 
    { 
     $this->codigo = (isset($data['codigo'])) ? $data['codigo'] : null; 
     $this->nome = (isset($data['nome'])) ? $data['nome'] : null; 
    } 

    public function getInputFilter() 
    { 
     if (!$this->inputFilter) { 
      $inputFilter = new InputFilter(); 
      $factory = new InputFactory(); 
      $inputFilter->add($factory->createInput(array(
       'name' => 'codigo', 
       'required' => false, 
       'filters' => array(
        array('name' => 'ToInt'), ## It was Int, but in PHP 7 it not works anymore, so I replaced it as suggest the zend documentation https://framework.zend.com/apidoc/2.4/classes/Zend.Filter.Int.html 
       ), 
       'validators' => array(
        array(
         'name' => 'Between', 
         'options' => array(
          'min' => 0, 
          'max' => 3600 
         ) 
        ), 
       ), 
      ))); 
      $inputFilter->add($factory->createInput(array(
       'name' => 'nome', 
       'required' => true, 
       'filters' => array(
        array('name' => 'StripTags'), 
        array('name' => 'StringTrim'), 
       ), 
       'validators' => array(
        array(
         'name' => 'StringLength', 
         'options' => array(
          'encoding' => 'UTF-8', 
          'min' => 2, 
          'max' => 30, 
         ) 
        ) 
       ), 
      ))); 
      $this->inputFilter = $inputFilter; 
     } 

     return $this->inputFilter; 
    } 
} 

내가 메시지가를 PHP 7은 Int라는 단어를 예약 했습니까?

추가됨 :

Fatal error: Uncaught TypeError: Argument 1 passed to Zend\ServiceManager\AbstractPluginManager::__construct() must implement interface Zend\ServiceManager\ConfigInterface, instance of Zend\ServiceManager\ServiceManager given, called in C:\xampp\htdocs\corps\vendor\zendframework\zend-filter\src\FilterChain.php on line 112 and defined in C:\xampp\htdocs\corps\vendor\zendframework\zendframework\library\Zend\ServiceManager\AbstractPluginManager.php:60 Stack trace: #0 C:\xampp\htdocs\corps\vendor\zendframework\zend-filter\src\FilterChain.php(112): Zend\ServiceManager\AbstractPluginManager->__construct(Object(Zend\ServiceManager\ServiceManager)) #1 C:\xampp\htdocs\corps\vendor\zendframework\zend-filter\src\FilterChain.php(183): Zend\Filter\FilterChain->getPluginManager() #2 C:\xampp\htdocs\corps\vendor\zendframework\zendframework\library\Zend\InputFilter\Factory.php(358): Zend\Filter\FilterChain->attachByName('\Zend\Filter\To...', NULL, 1000) #3 C:\xampp\htdocs\corps\vendor\zendframework\zendframework\library\Zend\InputFilt in C:\xampp\htdocs\corps\vendor\zendframework\zendframework\library\Zend\ServiceManager\AbstractPluginManager.php on line 60

+0

어떤 [zend-filter] (https://packagist.org/packages/zendframework/zend-filter) 버전을 설치 했습니까? ('composer show zendframework/zend-filter'를 실행하십시오.) – gsc

+0

명령을 실행하고 "package zendframework/zend-filter not found"메시지가 나타납니다. – jairhumberto

+0

문제가 처음 나타 났습니까? 어쩌면이 패키지를 제거한 것일까 요? 반면에, 'FilterPluginManager'는이 패키지에 속해 있습니다. 설치되지 않았다면 오류를 줄 수 없습니다. – gsc

답변

1

당신이 젠드 필터 2.3가 설치되어있어 보인다

zendframework/젠드 필터 버전 2.7.1 오류 메시지를 설치 한 후 변경했다? 모든 Zend Framework 패키지를 적어도 2.4 버전으로 업그레이드해야한다고 생각합니다. 젠드 필터 2.3은 ToInt 필터를 포함하지 않지만 2.4 필터는 포함합니다. 두 버전 모두 Int 필터를 포함하고 있지만 2.4에서는 단지 에 대한 링크로만 작동하며 추가로 오류 메시지가 표시됩니다 (Int class source in 2.4 참조).