Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Formulario para cadastro de produtos

Como faço para colocar um botão no objeto "lista.ejs", para chamar a pagina "produtos/form" ??

<!-- app\views\produtos\lista.ejs -->
<html>
    <body>
        <table>
            <tr>
                <td>id</td>
                <td>titulo</td>
                <td>descricao</td>
                <td>preco</td>
            </tr>
            <%for(var i=0;i<lista.length;i++) {%>
                <tr>
                    <td><%=lista[i].id%></td>
                    <td><%=lista[i].titulo%></td>
                    <td><%=lista[i].descricao%></td>
                    <td><%=lista[i].preco%></td>
                </tr>
            <%}%>
            <tr>
            </tr>
        </table>
     <!--    
        <form "/produtos/form" method="post">
            <input name="clicou" id="clicou" type="submit" value="Novo Produto"/>
        </form>
    -->        
    </body>
</html>
-----
,// ./app/routes/produtos.js

//var v_connectionFactory = require('../infra/connectionFactory');
//este carregamento não é mais necessário, pois a coneção foi carregada no arquivo /config/express

module.exports = function (v_app) {

//res.send("<html><body><h1>Listagem de produtos</h1></body></html>") //tranferido para o arquivo ./views/produtos/lista.ejs
    console.log("atendendo a requisicao");
    var v_listaProdutos = function(req, res) {
    //var v_connection = v_connectionFactory();
        var v_connection = v_app.infra.connectionFactory();
        var v_produtosDAO = new v_app.infra.ProdutosDAO(v_connection);

        //este código foi para o arquivo app\infra\produtosBanco.js
        //v_connection.query('select * from produtos', function (err, results) {

        v_produtosDAO.lista(function (err, results) {
        //    res.send(results); neste formato não formata a tela
            //neste formata formata a tela
            res.render('produtos/lista', {lista: results});
        });

        v_connection.end();
    };

    v_app.get('/produtos', v_listaProdutos);

    v_app.get('produtos/remove', function () {
        var v_connection = app.infra.connectionFactory();
        var v_produtosDAO = new app.infra.ProdutosDAO(v_connection);
        var v_produto = v_produtosDAO.carrega(id, callback);
        if (v_produto) {
            v_produtosBanco.remove(v_produto, callback);
        }
    });

    v_app.get('/produtos/form', function (req, res) {
        res.render('produtos/form');
    });


    v_app.post('/produtos', function (req, res) {

        var v_produto = req.body;

        console.log(v_produto);

        var v_connection = v_app.infra.connectionFactory();
        var v_produtosDAO = new v_app.infra.ProdutosDAO(v_connection);

        v_produtosDAO.salva(v_produto, function (err, results) {
            //v_listaProdutos(req, res);
            res.redirect('/produtos');
        });

        v_connection.end();
    });
};
1 resposta
solução!

E aí, Luis! Tudo certinho? =)

Cara, para você causar uma navegação entre páginas, você precisa criar um link... Para isso, basta você adicionar em seu HTML, o elemento <a>:

<a href="...">Ir para o formulário</a>

Repare que ele recebe o atributo href, que indica qual é a URL que você quer acessar. =)

Espero ter ajudado! Abraço e bons estudos,

Fábio