|
15 | 15 |
|
16 | 16 | // Create DI container |
17 | 17 | $container = new Container(); |
| 18 | + |
18 | 19 | // Add Twig to Container |
19 | 20 | $container->set(Twig::class, function() { |
20 | | - return Twig::create(__DIR__.'/../views'); |
| 21 | + return Twig::create(__DIR__.'/../views'); |
21 | 22 | }); |
| 23 | + |
22 | 24 | // Add Monolog to Container |
23 | 25 | $container->set(LoggerInterface::class, function () { |
24 | | - $logger = new Logger('default'); |
25 | | - $logger->pushHandler(new StreamHandler('php://stderr'), Level::Debug); |
26 | | - return $logger; |
| 26 | + $logger = new Logger('default'); |
| 27 | + $logger->pushHandler(new StreamHandler('php://stderr'), Level::Debug); |
| 28 | + return $logger; |
27 | 29 | }); |
28 | 30 |
|
29 | 31 | // Create main Slim app |
|
32 | 34 |
|
33 | 35 | // Our web handlers |
34 | 36 | $app->get('/', function(Request $request, Response $response, LoggerInterface $logger, Twig $twig) { |
35 | | - $logger->debug('logging output.'); |
36 | | - return $twig->render($response, 'index.twig'); |
37 | | -}); |
38 | | - |
39 | | -// Add Cowsay to Container |
40 | | -$container->set(\Cowsayphp\AnimalInterface::class, function() { |
41 | | - $class = '\\Cowsayphp\\Farm\\'.(getenv("COWSAY_FARM_CLASS")?:'Cow'); |
42 | | - return \Cowsayphp\Farm::create($class); |
| 37 | + $logger->debug('logging output.'); |
| 38 | + return $twig->render($response, 'index.twig'); |
43 | 39 | }); |
44 | 40 |
|
45 | | -$app->get('/coolbeans', function(Request $request, Response $response, LoggerInterface $logger, \Cowsayphp\AnimalInterface $animal) { |
46 | | - $logger->debug('letting the Cowsay library write something cool.'); |
47 | | - $response->getBody()->write("<pre>".$animal->say("Cool beans")."</pre>"); |
48 | | - return $response; |
49 | | -}); |
50 | | - |
51 | | - |
52 | 41 | // Add Database connection to Container |
53 | 42 | $container->set(PDO::class, function() { |
54 | | - $dburl = parse_url(getenv('DATABASE_URL') ?: throw new Exception('no DATABASE_URL')); |
55 | | - return new PDO(sprintf( |
56 | | - "pgsql:host=%s;port=%s;dbname=%s;user=%s;password=%s", |
57 | | - $dburl['host'], |
58 | | - $dburl['port'], |
59 | | - ltrim($dburl['path'], '/'), // URL path is the DB name, must remove leading slash |
60 | | - $dburl['user'], |
61 | | - $dburl['pass'], |
62 | | - )); |
63 | | -}); |
64 | | - |
65 | | -$app->get('/db', function(Request $request, Response $response, LoggerInterface $logger, Twig $twig, PDO $pdo) { |
66 | | - $st = $pdo->prepare('SELECT name FROM test_table'); |
67 | | - $st->execute(); |
68 | | - $names = array(); |
69 | | - while($row = $st->fetch(PDO::FETCH_ASSOC)) { |
70 | | - $logger->debug('Row ' . $row['name']); |
71 | | - $names[] = $row; |
72 | | - } |
73 | | - return $twig->render($response, 'database.twig', [ |
74 | | - 'names' => $names, |
75 | | - ]); |
| 43 | + $dburl = parse_url(getenv('DATABASE_URL') ?: throw new Exception('no DATABASE_URL')); |
| 44 | + return new PDO(sprintf( |
| 45 | + "pgsql:host=%s;port=%s;dbname=%s;user=%s;password=%s", |
| 46 | + $dburl['host'], |
| 47 | + $dburl['port'], |
| 48 | + ltrim($dburl['path'], '/'), // URL path is the DB name, must remove leading slash |
| 49 | + $dburl['user'], |
| 50 | + $dburl['pass'], |
| 51 | + )); |
76 | 52 | }); |
77 | 53 |
|
78 | 54 | // Mostrar todos los registros |
79 | 55 | $app->get('/list', function(Request $request, Response $response, LoggerInterface $logger, Twig $twig, PDO $pdo) { |
80 | | - $stmt = $pdo->query('SELECT * FROM your_table'); |
81 | | - $items = $stmt->fetchAll(PDO::FETCH_ASSOC); |
82 | | - return $twig->render($response, 'list.twig', ['items' => $items]); |
| 56 | + $stmt = $pdo->query('SELECT * FROM your_table'); |
| 57 | + $items = $stmt->fetchAll(PDO::FETCH_ASSOC); |
| 58 | + return $twig->render($response, 'list.twig', ['items' => $items]); |
83 | 59 | }); |
84 | 60 |
|
85 | 61 | // Mostrar un registro individual |
86 | 62 | $app->get('/view/{id}', function(Request $request, Response $response, LoggerInterface $logger, Twig $twig, PDO $pdo, $args) { |
87 | | - $stmt = $pdo->prepare('SELECT * FROM your_table WHERE id = :id'); |
88 | | - $stmt->execute(['id' => $args['id']]); |
89 | | - $item = $stmt->fetch(PDO::FETCH_ASSOC); |
90 | | - return $twig->render($response, 'view.twig', ['item' => $item]); |
| 63 | + $stmt = $pdo->prepare('SELECT * FROM your_table WHERE id = :id'); |
| 64 | + $stmt->execute(['id' => $args['id']]); |
| 65 | + $item = $stmt->fetch(PDO::FETCH_ASSOC); |
| 66 | + return $twig->render($response, 'view.twig', ['item' => $item]); |
91 | 67 | }); |
92 | 68 |
|
93 | 69 | // Editar un registro |
94 | 70 | $app->get('/edit/{id}', function(Request $request, Response $response, LoggerInterface $logger, Twig $twig, PDO $pdo, $args) { |
95 | | - $stmt = $pdo->prepare('SELECT * FROM your_table WHERE id = :id'); |
96 | | - $stmt->execute(['id' => $args['id']]); |
97 | | - $item = $stmt->fetch(PDO::FETCH_ASSOC); |
98 | | - return $twig->render($response, 'edit.twig', ['item' => $item]); |
| 71 | + $stmt = $pdo->prepare('SELECT * FROM your_table WHERE id = :id'); |
| 72 | + $stmt->execute(['id' => $args['id']]); |
| 73 | + $item = $stmt->fetch(PDO::FETCH_ASSOC); |
| 74 | + return $twig->render($response, 'edit.twig', ['item' => $item]); |
99 | 75 | }); |
100 | 76 |
|
101 | 77 | $app->post('/edit/{id}', function(Request $request, Response $response, LoggerInterface $logger, PDO $pdo, $args) { |
102 | | - // Procesar la edición del registro |
| 78 | + // Procesar la edición del registro |
103 | 79 | }); |
104 | 80 |
|
105 | 81 | // Eliminar un registro |
106 | 82 | $app->get('/delete/{id}', function(Request $request, Response $response, LoggerInterface $logger, Twig $twig, PDO $pdo, $args) { |
107 | | - $stmt = $pdo->prepare('SELECT * FROM your_table WHERE id = :id'); |
108 | | - $stmt->execute(['id' => $args['id']]); |
109 | | - $item = $stmt->fetch(PDO::FETCH_ASSOC); |
110 | | - return $twig->render($response, 'delete.twig', ['item' => $item]); |
| 83 | + $stmt = $pdo->prepare('SELECT * FROM your_table WHERE id = :id'); |
| 84 | + $stmt->execute(['id' => $args['id']]); |
| 85 | + $item = $stmt->fetch(PDO::FETCH_ASSOC); |
| 86 | + return $twig->render($response, 'delete.twig', ['item' => $item]); |
111 | 87 | }); |
112 | 88 |
|
113 | 89 | $app->post('/delete/{id}', function(Request $request, Response $response, LoggerInterface $logger, PDO $pdo, $args) { |
114 | | - // Procesar la eliminación del registro |
| 90 | + // Procesar la eliminación del registro |
115 | 91 | }); |
116 | 92 |
|
117 | 93 | // Agregar un registro |
118 | 94 | $app->get('/add', function(Request $request, Response $response, LoggerInterface $logger, Twig $twig) { |
119 | | - return $twig->render($response, 'add.twig'); |
| 95 | + return $twig->render($response, 'add.twig'); |
120 | 96 | }); |
121 | 97 |
|
122 | 98 | $app->post('/add', function(Request $request, Response $response, LoggerInterface $logger, PDO $pdo) { |
123 | | - // Procesar la adición del registro |
124 | | -}); |
| 99 | + // Procesar la adición del registro |
| 100 | + // Obtener los datos del formulario |
| 101 | + $name = $request->getParsedBody()['name']; // Suponiendo que el formulario tiene un campo llamado "name" |
125 | 102 |
|
126 | | -// Ruta para mostrar el formulario de agregar un nuevo registro |
127 | | -$app->get('/add', function(Request $request, Response $response, Twig $twig) { |
128 | | - return $twig->render($response, 'add.twig'); |
129 | | -}); |
| 103 | + // Validar los datos si es necesario |
130 | 104 |
|
131 | | -// Ruta para procesar el formulario de agregar un nuevo registro |
132 | | -$app->post('/add', function(Request $request, Response $response, PDO $pdo) { |
133 | | - // Obtener los datos del formulario |
134 | | - $name = $request->getParsedBody()['name']; // Suponiendo que el formulario tiene un campo llamado "name" |
| 105 | + // Insertar el nuevo registro en la base de datos |
| 106 | + $stmt = $pdo->prepare('INSERT INTO your_table (name) VALUES (:name)'); |
| 107 | + $stmt->execute(['name' => $name]); |
135 | 108 |
|
136 | | - // Validar los datos si es necesario |
137 | | - |
138 | | - // Insertar el nuevo registro en la base de datos |
139 | | - $stmt = $pdo->prepare('INSERT INTO your_table (name) VALUES (:name)'); |
140 | | - $stmt->execute(['name' => $name]); |
141 | | - |
142 | | - // Redirigir a la página principal u otra página según sea necesario |
143 | | - return $response->withHeader('Location', '/'); |
| 109 | + // Redirigir a la página principal u otra página según sea necesario |
| 110 | + return $response->withHeader('Location', '/'); |
144 | 111 | }); |
145 | 112 |
|
146 | | - |
147 | 113 | $app->run(); |
0 commit comments