Estoy tratando de hacer un ejemplo de crud sencillo con Smartwig con
idea de ir aprendiendo yo y despues poner el ejemplo con un pequeño
manual a disposición de los que están empezando.
Estoy trabajando con Symfony 2.0.15 + vendors y he instalado los
bundles:
[doctrine-fixtures]
git=
https://github.com/doctrine/data-fixtures.git
[DoctrineFixturesBundle]
git=
https://github.com/doctrine/DoctrineFixturesBundle.git
target=/bundles/Symfony/Bundle/DoctrineFixturesBundle
version=origin/2.0
[doctrine-extensions]
git=
https://github.com/beberlei/DoctrineExtensions.git
[IdeupSimplePaginatorBundle]
git=
https://github.com/javiacei/IdeupSimplePaginatorBundle
target=/bundles/Ideup/SimplePaginatorBundle
[YepsuaSmarTwigBundle]
git=
http://github.com/oyepez003/YepsuaSmarTwigBundle.git
target=/bundles/Yepsua/SmarTwigBundle
He creado un bundle con "php app/console generate:bundle"
y una entidad con "app/console generate:doctrine:entity"
he creado la base de datos y las tablas con "doctrine:schema" y "app/
console doctrine:schema:update --force"
y he creado un crud "app/console generate:doctrine:crud"
y unas fixtures para tener unos datos para el desarrollo
Ahora estoy trantado de sustituir las llamadas autogeneradas por
botones smartwig que mantengan la página y solo actualicen un div
(<div id="successTarget">) donde están el listado de articulos y los
formularios del crud.
Pongo el código del index.html.twig que lista los articulos:
{% extends '::base.html.twig' %}
{% block body %}
<div id="successTarget">
<h1>Listado de Articulos</h1>
<table class="records_list">
<thead>
<tr>
<th>Id</th>
<th>Descripcion</th>
<th>Precio</th>
<th>Stock</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for entity in entities %}
<tr>
<td>{{
entity.id }}</td>
<td>{{ entity.descripcion }}</td>
<td>{{ entity.precio }}</td>
<td>{{ entity.stock }}</td>
<td>
{% ajax_form action=path('articulo_show', { 'id':
entity.id })
method="POST"
update="#successTarget" %}
{% ui_button type="submit" value="ver" %}
{% end_ajax_form %}
</td>
<td>
{% ajax_form action=path('articulo_edit', { 'id':
entity.id })
method="POST"
update="#successTarget" %}
{% ui_button type="submit" value="Editar" %}
{% end_ajax_form %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{{ simple_paginator_render('articulo', null, {
'container_class': 'paginador',
'previousPageText': 'Anterior',
'nextPageText': 'Siguiente',
'currentClass': 'actual',
'firstPageText': 'Primera',
'lastPageText': 'Última'
}) }}
{% ajax_form action=path('articulo_new')
method="POST"
update="#successTarget" %}
{% ui_button type="submit" value="Nuevo" %}
{% end_ajax_form %}
</div>
Esto funciona bien ya que al llamar a los métodos cambia el contenido
del div y no modifica la url. Pero tengo un problema: En el {% for
entity in entities %} que crea el listado de artículos solo me salen
como botones ajax los del primer artículo, es decir los del primer
<tr>, y el de nuevo artículo, los demas me aparecen como botones html
normales.
Aguien puede ayudarme con esto?.