Novo FacilMVC

42 views
Skip to first unread message

Jose Berardo

unread,
Apr 4, 2013, 12:40:30 PM4/4/13
to especia...@googlegroups.com, phpper...@googlegroups.com, especial...@googlegroups.com, especializa-wmfree
Pessoal,

Acabei de publicar a versão atual (que eu nunca soube o número) do FacilMVC.
Ela já conta com integração com o Doctrine e com o Twitter Bootstrap.

Vou preparar um tutorial estilo getting started. Acho que na próxima semana vou ter um tempinho pra fazer isso.

Uma série de bugs foram exterminados, mas uma série de outros devem estar lá incubados, só esperando vocês chegarem pra se manifestar. Cuidado! hehehe.

--
Atenciosamente,

Jose Berardo
Especializa Treinamentos
www.especializa.com.br
81 3465.0032

Renato Carvalho

unread,
Apr 5, 2013, 9:01:46 AM4/5/13
to phppernambuco
Oi Berardo,

Primeiramente, parabéns!! Achei show de bola essas integrações.
Será que você poderia me explicar como faço para testar o plugin do doctrine ou indicar um link?



--
You received this message because you are subscribed to the Google Groups "phppernambuco" group.
To unsubscribe from this group and stop receiving emails from it, send an email to phppernambuc...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Jose Berardo

unread,
Apr 5, 2013, 11:09:25 AM4/5/13
to phpper...@googlegroups.com, especia...@googlegroups.com
Valeu Renato,

Eu vou preparar um doc legal sobre isso mas testa aí:

Cria, por exemplo, um arquivo Usuario.php no modelo com os mapeamentos do Doctrine 2:

<?php
namespace modelo;

/**
 * @Entity
 */
class Usuario {
    /**
     * @Id @GeneratedValue
     * @Column(type="integer")
     */
    public $id;
    /**
     * @Column(type="string", nullable=true)
     */
    public $nome;
    /**
     * @Column(type="string", nullable=false, unique=true)
     */
    public $email;
    /**
     * @Column(type="string", length=32, nullable=false)
     */
    public $senha;
}

Adiciona isso em controlador/Home.php (ou se quiser organizar melhor, adiciona num DAO lá em modelo/dados):

    /**
     * @var \PDO
     */
    protected $pdo;
    
    /**
     * @var \lib\DoctrinePlugin
     */
    protected $doc;

    /**
     * @var Doctrine\ORM\EntityManager
     */
    protected $em;
    
    public function __construct() {
        $this->pdo = \lib\PDOPlugin::getInstance()->getPdo(); // Ele vai conectar de acordo com as configurações do arquivo ini
        $this->doc = \lib\DoctrinePlugin::getInstance($this->pdo);
        $this->em  = $this->doc->em;
    }

    public function gerarEsquema() {
        $this->doc->gerarEsquema(array(
            '\modelo\Usuario',
        ));
    }
    public function novoUsuario() {
        $u = new \modelo\Usuario();
        $u->email = $_POST['email'];
        $u->nome = $_POST['nome'];
        $u->senha = $_POST['senha'];
        $this->em->persist($u);
        $this->em->flush();
    }
    
A URL localhost/exemplofacil/gerarEsquema vai chamar um método utilitário que eu criei no plugin de integração com o Doctrine que vai buscar o SchemaTool do Doctrine, registrar os ClassMetadatas e gerar a tabela no banco. Se quiser mais é só adicionar as classes de toda a tua modelagem que ele gera todas as tabelas e seus relacionamentos.

A URL localhost/exemplofacil/novoUsuario vai criar um usuário novo. Tô aqui só simulando que você vai chamar ela via post a partir de uma tela de cadastro de usuário. Testa marretando valor primeiro pra ver se tá tudo ok. O EntityManager vai mudar o status do objeto pra persistente e depois executar e comitar o insert quando der flush().

Qualquer bronca me diz.

Abraço


-- 
Atenciosamente,

Jose Berardo
Especializa Treinamentos
www.especializa.com.br
81 3465.0032


2013/4/5 Renato Carvalho <renato....@gmail.com>

Renato Carvalho

unread,
Apr 17, 2013, 10:27:35 PM4/17/13
to phppernambuco, especia...@googlegroups.com
O tempo voa, mas eu não esqueci hehe.

Berardo, não existe o método gerarEsquema em DoctrinePlugin.php, talvez você tenha esquecido de subir a versão mais atual, não sei.

Ao tentar acessar a url, aqui está o resultado: "Fatal error: Call to undefined method lib\DoctrinePlugin::gerarEsquema() in E:\BACKUP\PHP\Projetos\FacilMVC\controlador\Home.php on line 29"

Aguardo sua resposta.
Abraço.

Jose Berardo

unread,
Apr 18, 2013, 9:40:36 AM4/18/13
to phpper...@googlegroups.com
Pois é Renato,

Eu acabei não atualizando esse arquivo no projeto do Facil aqui. Alterei só o do projeto que estou desenvolvendo aqui.

Dá uma olhada agora e confere se está faltando alguma atualização ainda.

Abraço

-- 
Atenciosamente,

Jose Berardo
Especializa Treinamentos
www.especializa.com.br
81 3465.0032


2013/4/17 Renato Carvalho <renato....@gmail.com>

Renato Carvalho

unread,
Apr 18, 2013, 12:17:09 PM4/18/13
to phppernambuco
Funciona, mas eu percebi que uma exceção não está sendo devidamente tratada quando a tabela já existe, olha o erro que aparece:

Fatal error: Nesting level too deep - recursive dependency? in E:\...\FacilMVC\controlador\ControleException.php on line 120

A linha 120 é: var_export($excecao, true) . "</div>\n";
Trocando a função var_export por print_r, consegui identificar lá no final a mensagem: "Table 'usuario' already exists" que deve ter sido a razão da exceção.

Tirando esse detalhe, funcionou perfeitamente. :)

[]'s
Reply all
Reply to author
Forward
0 new messages