Estoy buscando una forma de insertar un atributo de datos en los anclajes de mi tabla en CakePHP. Genera automáticamente el siguiente código, pero no tengo ni idea de cómo modificarlo de manera que lo convierta en un atributo de destino de datos.
La razón por la que quiero lograr esto es porque estoy vinculando a diferentes div en la misma página y quiero evitar que la página se vuelva a cargar . ¿Tengo que insertar un preventDefault()
de jQuery? Y si es así, ¿cómo hacerlo?
Este es mi código actual:
<?php foreach ($servers as $server): ?> <tr> <td><?= $this->Number->format($server->id) ?></td> <td><?= h($server->url) ?></td> <td><?= h($server->description) ?></td> <td><?= h($server->Timestamp) ?></td> <td class="actions"> <?= $this->Html->link('View', array('#' => 'admin-view-' . $server->id)) ?> <?= $this->Html->link('Edit', array('#' => 'admin-edit-' . $server->id)) ?> </td> </tr> <?php endforeach; ?>
Aquí está el resultado que estoy buscando; tiene que hacerse usando las convenciones de CakePHP (no importa el elemento de la lista):
<a data-target="admin-edit">Edit</a> <a data-target="admin-view">View</a>
Probaste esto:-
<?= $this->Html->link('View',array('#' => 'admin-view-' . $server->id,'data-target'=>"admin-view");?> <?= $this->Html->link('Edit',array('#' => 'admin-view-' . $server->id,'data-target'=>"admin-edit");?>
Para evitar que se vuelva a cargar la página, cree un enlace con href="javascript:void(0);"
como abajo:-
<?= $this->Html->link('View','javascript:void(0);',array('#' => 'admin-view-' . $server->id,'data-target'=>"admin-view");?> <?= $this->Html->link('Edit','javascript:void(0);',array('#' => 'admin-view-' . $server->id,'data-target'=>"admin-edit");?>
Si desea evitar a través de jQuery (no con el código anterior), entonces:
$('link').click(function(e){ e.preventDefault(); //rest your code });
Nota: - Asegúrese de que la biblioteca jQuery se agregue antes de este código y este código debe estar en la parte inferior de la página.
Aquí están los detalles sobre el método de link
CakePHP HtmlHelper
Los métodos de link
de CakePHP toman 3 argumentos como parámetros.
Sintaxis:
$this->Html->link($title, $url = null, array $options = []);
Ejemplo :
echo $this->Html->link( 'Title', '/path/to/url', #OR ['controller'=>'','action'=>'','others'] [ 'class' => 'button', 'target' => '_blank', 'data-url'=>'#', 'data-path'=>'', /*Other attributes*/ ] );
Aquí están los detalles sobre la creación de enlaces en CakePHP
Para su problema, si no necesita
href=''
en la etiqueta<a>
, entonces puede usar elbutton
u otras etiquetas en lugar de la etiqueta<a>
.