1
resposta

Erro object_manager, permissão da classe

Estou tentando fazer o select com os dados do banco mas recebo o seguinte erro

Fatal error: Uncaught Error: Access to undeclared static property: PhpParser\Autoloader::$loader

public function cadastrarAction(){

            if(!$this->identity()){
                return $this->redirect()->toUrl("/Usuario/Index");
            }

            $entityManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');

            $form = new ProdutoForm($entityManager);

            if($this->request->isPost()){

                $nome = $this->request->getPost('nome');
                $preco = $this->request->getPost('preco');
                $descricao = $this->request->getPost('descricao');

                $produto = new Produto($nome, $preco, $descricao);
                $form->setInputFilter($produto->getInputFilter());
                $form->setData($this->request->getPost());

                if($form->isValid()){

                    $entityManager->persist($produto);
                    $entityManager->flush();

                    return $this->redirect()->toUrl('/Index/Index');

                }

            }

            return new ViewModel(['form' => $form]);

        }
<?
    namespace Estoque\Form;

    use Zend\Form\Form;
    use Zend\Form\Element;
    use Doctrine\ORM\EntityManager;

    class ProdutoForm extends Form{

        public function __construct(EntityManager $entityManager){

            parent::__construct('formProduto');

            // campo nome
            $this->add([
                'type' => 'text',
                'name' => 'nome',
                'attributes' => [
                    'class' => 'form-control'
                ]
            ]);

            // campo preço
            $this->add([
                'type' => 'number',
                'name' => 'preco',
                'attributes' => [
                    'class' => 'form-control'
                ]
            ]);

            // campo descricao
            $this->add([
                'type' => 'Textarea',
                'name' => 'descricao',
                'attributes' => [
                    'class' => 'form-control'
                ]
            ]);

            $this->add(new Element\Csrf('csrf'));

            $this->add([
                'type' => 'DoctrineModule\Form\Element\ObjectSelect',
                'name' => 'categoria',
                'options' => [
                    'object_manager' => $entityManager,
                    'target_class' => 'Estoque\Entity\Categoria',
                    'property' => 'nome',
                    'empty_option' => 'escolha uma categoria'
                ],
                'attributes' => [
                    'class' => 'form-control'
                ]
            ]);

        }

    }
?>
<h1>Cadastrar Produto</h1>

<? echo $this->form()->openTag($form); ?>

    <div class='form-group'>
        <label>
            <span>Nome</span>
        </label>
        <? 
            echo $this->formInput($form->get('nome')); 
            echo $this->formElementErrors()->render($form->get('nome'));
        ?>
    </div>

    <div class='form-group'>
        <label>
            <span>Preço</span>
        </label>
        <? echo $this->formInput($form->get('preco')); ?>
    </div>

    <div class='form-group'>
        <label>
            <span>Categoria</span>
        </label>
        <? echo $this->formSelect($form->get('categoria')); ?>
    </div>

    <div class='form-group'>
        <label>
            <span>Descrição</span>
        </label>
        <? echo $this->formTextarea($form->get('descricao')); ?>
    </div>

    <?
        echo $this->formRow($form->get('csrf'));
    ?>

    <div class="form-group">
        <input type="submit" class="btn btn-primary" value="Cadastrar" />
    </div>

<? echo $this->form()->closeTag(); ?>
1 resposta

Oi Marco, tudo bom? Qual versão você está utilizando do php e do zend?

Dependendo da versão do zend que você está utilizando (se não for uma mais atual) pode rolar alguma incompatibilidade com a ultima versão do php.

Compartilha com a gente o stack trace do seu erro? Assim fica mais facil te ajudar a achar o problema =)

Abraço, aguardo retorno!