CakePHP, jQuery - Добавление атрибута данных в привязку


Я ищу способ вставить атрибут данных в привязки моей таблицы в CakePHP. Он автоматически генерирует следующий код, но я понятия не имею, как изменить его таким образом, чтобы сделать его целевым атрибутом данных.

Причина, по которой я хочу этого добиться, заключается в том, что я ссылаюсь на разные div на одной странице и хочу запретить перезагрузку страницы . Нужно ли вставлять preventDefault() из jQuery? И если да, то как это сделать?

Это мой текущий код:

<?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; ?>

Вот результат, который я ищу; это должно быть сделано с использованием соглашений CakePHP (не обращайте внимания на элемент списка):

<a data-target="admin-edit">Edit</a>
<a data-target="admin-view">View</a>
Author: Alive to Die, 2017-03-16

2 answers

Вы пробовали это:-

<?= $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");?>

Чтобы предотвратить перезагрузку страницы, создайте ссылку с помощью href="javascript:void(0);", как показано ниже:-

<?= $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");?>

Если вы хотите предотвратить с помощью jQuery (не с помощью приведенного выше кода), то: -

$('link').click(function(e){
   e.preventDefault();
   //rest your code
});

Примечание: - Убедитесь, что библиотека jQuery добавлена перед этим кодом, и этот код должен быть внизу страницы.

 3
Author: Alive to Die, 2017-03-17 04:56:53

Вот подробная информация о CakePHP HtmlHelper-помощник link метод

Пирожное link методы принимают 3 аргумента в качестве своих параметров.

  • Заголовок [Строка]
  • Url-адрес [Строка или массив]
  • Параметры/атрибуты [Массив]

Синтаксис :

 $this->Html->link($title, $url = null, array $options = []);

Пример :

echo $this->Html->link(
   'Title',
   '/path/to/url', #OR ['controller'=>'','action'=>'','others']
   [
     'class' => 'button',
     'target' => '_blank',
     'data-url'=>'#',
     'data-path'=>'',
     /*Other attributes*/
   ]
);

Вот подробная информация о Создании ссылок в Пирожное

Для вашей проблемы, если нет необходимости href='' в теге <a>, то вы можете использовать button или другие теги вместо тега <a>.

 3
Author: Sumon Sarker, 2017-03-16 08:53:22