hace 18 días   jmoreno_ae4482
Hola a todos. Estoy aprendiendo programación con Facturascripts, así que me temo que mi consulta es de un nivel muy básico, como mis conocimientos.

El caso es que después de verme los vídeos de programación, revisar la documentación e intentar replicar el código existente, no consigo hacer funcionar las cosas más básicas, como el listado de registros. Me da vergüenza deciros las horas que le he dedicado sin progresar...

Intento realizar un plugin para almacenar una base del conocimiento en FS (Knowledgebase).
La primera fase sería que mostrara todos los registros de la base de datos en pantalla, para después hacer búsquedas por síntoma.
Después de muchos intentos, el listado básico al entrar en el menú sale en blanco, con las cabeceras de las columnas pero sin contenido.

He seguido los siguientes pasos:
1. Creo una tabla nueva en MySQL, sin relaciones con las demás, llamada kdb. Con los campos "idkdb" y "sintomas"
2. Creo un nuevo plugin con el modelo MVC llamado KDB. Me funciona Ok y me carga la entrada en el menú.

3. Este es mi archivo controller/kdb.php:
<?php
require_once 'plugins/facturacion_base/extras/fbase_controller.php';
class kdb extends fs_controller{
public $resultados;
public function __construct() {
parent::__construct(__CLASS__, 'Entradas', 'KDB');
}
protected function private_core() {
$data = $this->db->select("SELECT * FROM kdb;");
if($data) {
foreach($data as $d) {
$this->resultados[] = new kdb($d);
}
}
}
}

4. Y este view/kdb.html
{include="header"}
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th class="text-left">Código</th>
<th class="text-left">Síntoma</th>
</tr>
</thead>
{loop="$fsc->resultados"}
<tr>
<td>{$value->idkdb}</td>
<td>{$value->sintoma}</td>
</tr>
{/loop}
</table>
</div>
{include="footer"}

Gracias desde ya.
hace 19 días   shawe   [partner]
Buenas

Antes de nada, puedes usar las etiquetas code para hacer esto:
aquí tu codigo

Y que lo que pegues de código sea más legible para cualquiera ;) Si escribes desde el PC, en la zona de la derecha te salen las etiquetas que puedes usar.

De lo que hayas invertido tantas horas que te dé vergüenza decirlo, si no quieres leer un libro de POO para que te permita aprender más directamente, es totalmente normal.

Desde el controlador, aunque sea posible hacerlo, mentalízate que no debes escribir consultas SQL, salvo casos muy puntuales, tan concretos que como normal no lo debes hacer nunca.

Por lo que tu mismo explicas, entiendes que funciona con el patrón MVC, pero sin embargo en tu código veo que sólo usas VC (es el fallo típico cuando nunca se ha trabajado así). El concepto de separarlo y relacionarlo, cuando se pasan a usar objetos, parece muy complejo, pero realmente es cambiar la forma de pensar (divide y vencerás) y cuando te defiendas mínimamente, te darás cuenta de que obtienes un código mucho más claro y legible.

Para empezar con algo sencillo, coge un modelo pequeño como el de país, y asegúrate que entiendes como funciona, e intenta hacer lo que pretendes de la misma forma como este de ejemplo.

Para resumirlo y tal vez un poco a lo bestia:
- El modelo es el que lee/guarda/elimina datos en la DB, tu lo estás haciendo en el controlador.
- El controlador es el que gestiona las acciones que quiere hacer el usuario, ver un listado, obtener un listado filtrado, editar un registro, ...
- La vista, muestra el resultado de las acciones y permite ejecutar nuevas acciones.

En tu caso, tu kdb modeliza algún tipo de datos, desconozco lo que porqué no hay información suficiente, pero el código que tu has metido en el private_core, debería estar debidamente fraccionado dentro del modelo, de forma que sean acciones más concretas. En particular, lo que has hecho, sería el equivalente a lo que usamos en la función all(), y en tu private_core debería quedar tan solo algo como esto:

$kbd = new kbd();
$this->resultados = $kbd->all();


Así que para empezar a mejorar tu código y que te familiarices mejor, añade-te un modelo para representar tus datos, usa pais.php como ejemplo y obvía estas partes por ahora:
- Función install, que sólo tenga un return ''
- Funciones is_default, get_by_iso, test y clean_cache, por ahora puedes prescindir de ellas, y como mucho, necesitaras test y clean_cache, pero por ahora necesitas lo básico.

Así que en resumen, te queda crear tu modelo y rellenar, __construct, url, get, exists, save, delete y all.

Una vez tengas eso, ya puedes usarlo como te dije desde el controlador.

Para terminar, y que tengas un ejemplo completo, estos son los archivos con los que te recomiendo partir (aunque puede que no sean un ejemplo directo a lo que quieres, te permitirán aprender con mayor facilidad por tener menos datos):
- facturascripts_2015: model/core/pais.php y model/table/paises.xml
- facturacion_base: controller/admin_paises.php
- facturacion_base: view/admin_paises.html

Y a partir de que te quede claro como se usa lo básico, ya podrás ir ampliándolo a tus necesidades y a tu ritmo.
hace 19 días   jmoreno_ae4482
Hola Shawe. Con respecto a lo del código, ni me había fijado, apuntado para la próxima.
Estoy acabando de leer mi primer libro de programación, y se ve que he sido más valiente que realista al lanzarme con un plugin. ¿puedes aconsejarme otro libro para brutos como yo?
Me había basado en la parte de los agentes para "inspirarme" y, efectivamente, me había saltado toda la parte del model.
He intentado revisarlo rápidamente, pero aún estoy verde. De todas formas, volveré a la carga siguiendo tus consejos. Gracias.
hace 18 días   shawe   [partner]
La idea es la misma, aunque esa clase tiene más datos.

Sobre los libros, no soy el más indicado para recomendarte alguno, porqué aprendo con tu misma (mala) metodología (así que ya ves que no eres el único bruto ;) ) y a la vez voy consultando la información relacionada con ello.

Cualquier libro que veas que trate estos temas:
https://www.youtube.com/playlist?list=PLpOqH6AE0tNh2Hu2KWoXxTbhHzRgCaHxH

Ten en cuenta que FacturaScripts se está re-escribiendo para 2018 y todo lo que aprendas ahora te servirá de base para el nuevo código, que a la vez, cumple más con lo que se ve en esos vídeos.
Tu email:

jmoreno_ae4482

ES  pre-partner


Financiación extra

10 patrocinadores

Este mes se han realizado un total de 10 aportaciones económicas para acelerar el desarrollo del proyecto.

26% Complete

130 € este mes.

+5 € +4 votos

+25 € +20 votos




Soporte:

FacturaScripts es software libre y gratuito, pero si lo que busca es asesoramiento y soporte profesional, use la sección soporte.

  Soporte

¿Desea ser distribuidor?

Si desa ser distribuidor oficial de FacturaScripts, comience hoy mismo el proceso.

  hágase partner

Redes sociales:

Puede encontrarnos en las principales redes sociales. Y también en google+.





© 2013-2017 FacturaScripts