ccc

SILEX: Crud básico

Descargar Silex skeleton desde la consola:
composer create-project fabpot/silex-skeleton mi_proyecto/ 1.1.0 

Instalar doctrine en el silex:
http://cazaresluis.com/silex-doctrine/

Crear en la carpeta web un htaccess con este texto:
<IfModule mod_rewrite.c>
    RewriteEngine On
 
    #<IfModule mod_vhost_alias.c>
    #    RewriteBase /
    #</IfModule>
 
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>


controllers.php:
<?php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
    'db.options'    => array(
        'driver'    => 'pdo_mysql',
        'dbname'    => 'mibasededatos',
        'host'      => 'localhost',
        'user'      => 'root',
        'password'  => '',
        'charset'   => 'utf8',
        // Conexión en servidores locales por ejemplo MAMP
        // 'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock'
    )
));

$app->get('/blog/{id}', function ($id) use ($app) {
    $sql = "SELECT * FROM consultas WHERE id = ?";
    $post = $app['db']->fetchAssoc($sql, array((int) $id));
    // $sql = "UPDATE consultas SET value = ? WHERE id = ?";
    // $app['dbs']['mysql_write']->executeUpdate($sql, array('newValue', (int) $id));
    return  "<h1>{$post['consulta']}</h1>";
});


$app->get('/insertBlog/{email}/{consulta}', function ($email,$consulta) use ($app) {
    $sql = "insert into consultas(email,consulta) values (?,?)";
    $app['db']->executeUpdate($sql,
            array($email,$consulta)
    );
    return true;
});

$app->get('/updateBlog/{id}', function ($id) use ($app) {
    $sql = "UPDATE consultas SET consulta = ? WHERE id = ?";
    $app['db']->executeUpdate($sql, array('newValue', (int) $id));
    return true;
});



// ************** LISTAR CONSULTAS
$app->get('/listConsultas/', function () use ($app) {
   $sql = "SELECT * FROM consultas";
   $arrConsultas = $app['db']->fetchAll($sql, array());
   
   return $app['twig']->render('listConsultas.html.twig',
              array('arrConsultas' => $arrConsultas));
})
->bind('listConsultaspage')
;

// ************** AÑADIR CONSULTA
$app->get('/formAddConsulta/', function () use ($app) {
    return $app['twig']->render('formAddConsulta.html.twig',
            array());
})
->bind('formAddConsultapage')
;

$app->post('/putConsulta', function (Request $request) use ($app) {
    $nombre_completo = $request->get("nombre_completo");
    $email = $request->get("email");
    $telefono = $request->get("telefono");
    $consulta = $request->get("consulta");
   
    $sql = "insert into consultas(nombre_completo, email, telefono, consulta) values (?,?,?,?)";
    $app['db']->executeUpdate($sql,
            array($nombre_completo, $email, $telefono, $consulta)
    );
    // listar
    return ("Insertado correctamente.<br><a href='listConsultas'>Listar</a>");
   
  })
->bind('putConsultapage')
;

// ****************** MODIFICAR CONSULTA
$app->get('/formModConsulta/{id}', function ($id) use ($app) {
    $sql = "SELECT * FROM consultas where id=?";
    $arrConsultas = $app['db']->fetchAssoc($sql, array((int) $id));
   
   
  return $app['twig']->render('formModConsulta.html.twig',
              array('arrConsultas' => $arrConsultas));
})
->bind('formModConsultapage')
;

$app->post('/putModConsulta', function (Request $request) use ($app) {
    $id = $request->get("id");
    $nombre_completo = $request->get("nombre_completo");
    $email = $request->get("email");
    $telefono = $request->get("telefono");
    $consulta = $request->get("consulta");
   
    $sql = "UPDATE consultas SET nombre_completo = ?, email = ?, telefono = ?, consulta = ? WHERE id = ?";
    $app['db']->executeUpdate($sql,
            array($nombre_completo, $email, $telefono, $consulta, $id)
    );
    // listar
    return ("Modificado correctamente.<br><a href='listConsultas'>Listar</a>");
   
  })
->bind('putModConsultapage')
;
 
 
// ************** BORRAR CONSULTA
$app->get('/delConsulta/{id}', function ($id) use ($app) {
    $sql = "delete FROM consultas where id = ?";
    $app['db']->executeUpdate($sql,
            array($id)
    );
    // listar
    return ("Borrado correctamente.<br><a href='../listConsultas'>Listar</a>");
})
->bind('delConsultapage')
;
?>

formAddConsulta.html.twig:
{% extends "layout.html.twig" %}

{% block content %}
    <form method="post" action="../putConsulta" id="sigin" name="sigin">
        Nombre completo: <input type="text" id="nombre_completo" name="nombre_completo"><br>
        Email: <input type="email" id="email" name="email"><br>
        Telefono: <input type="text" id="telefono" name="telefono"><br>
        consulta: <input type="text" id="consulta" name="consulta"><br>
        <input type="submit" value="Dar de alta">
    </form>
{% endblock %}

formDelConsulta.html.twig:
{% extends "layout.html.twig" %}
{% block content %}
    <form method="post" action="delConsulta" id="sigin" name="sigin">
        Consulta a borrar:
        <select name="id_consulta">
            {% for item in arrConsultas %}
                <option value="{{ item.id }}">{{ item.consulta }}</option>
            {% endfor %}
        </select>
        <input type="submit" value="Borrar">
    </form>
{% endblock %}

formModConsulta.html.twig:
{% extends "layout.html.twig" %}
{% block content %}
    <h1>MODIFICAR CONSULTA</h1>
    <form method="post" action="../putModConsulta" id="sigin" name="sigin">
        <input type="hidden" name="id" id="id" value="{{arrConsultas.id}}">
        Nombre completo: <input type="text" id="nombre_completo" name="nombre_completo" value="{{arrConsultas.nombre_completo}}"><br>
        Email: <input type="email" id="email" name="email" value="{{arrConsultas.email}}"><br>
        Teléfono: <input type="text" id="telefono" name="telefono" value="{{arrConsultas.telefono}}"><br>
        consulta: <input type="text" id="consulta" name="consulta" value="{{arrConsultas.consulta}}"><br>
        <input type="submit" value="Modificar">
    </form>
{% endblock %}



listConsultas.html.twig:
{% extends "layout.html.twig" %}
{% block content %}

        Consultas:
        <table border="1">
            <tr>
                    <td>NOMBRE COMPLETO</td>
                    <td>EMAIL</td>
                    <td>TELEFONO</td>
                    <td>CONSULTA</td>
                    <td colspan="2">
                    </td>
                </tr>
            {% for item in arrConsultas %}
                <tr>
                    <td>{{ item.nombre_completo }}</td>
                    <td>{{ item.email }}</td>
                    <td>{{ item.telefono }}</td>
                    <td>{{ item.consulta }}</td>
                    <td>
                        <a href="../formModConsulta/{{ item.id }}">Modificar</a>
                        <a href="../delConsulta/{{ item.id }}">Borrar</a>
                    </td>
                </tr>
            {% endfor %}
        </table>
            <a href="../formAddConsulta">Añadir consulta</a>
{% endblock %}

No hay comentarios:

Publicar un comentario