Я использовал Prototip 2 внутри PHP, где советы генерируются на лету по мере создания страницы.
По сути, у меня есть этот код, который создает кучу всплывающих подсказок для разных элементов базы данных. Этот код является частью HTML для всей страницы. Это происходит внутри скрипта представления Zend Framework, но является универсальным.
<?php foreach($this->items as $item): ?>
<?php if ($item['statusText'] != ''): ?>
tips.push(
new Tip('led_<?php echo $item['boxsn']; ?>', '<?php echo $item['statusText']; ?>', {
stem: 'leftMiddle',
hook: { target: 'rightMiddle', tip: 'leftMiddle' },
style: 'protoblue',
offset: { x: 5, y: 0 }
})
);
<?php endif; ?>
<?php if ($item['alarms'] != ''): ?>
tips.push(
new Tip('alarm_<?php echo $item['boxsn'] ?>',
'<?php echo $item['alarms'] ?>', {
stem: 'leftMiddle',
hook: { target: 'rightMiddle', tip: 'leftMiddle' },
style: 'protoblue',
offset: { x: 5, y: 0 }
})
);
<?php endif; ?>
<?php endforeach; ?>
Это приводит к выводу, похожему на следующее для каждой созданной подсказки:
tips.push(
new Tip('led_091133000039', 'Item has not functioned since 02/03/12 01:30 PM', {
stem: 'leftMiddle',
hook: { target: 'rightMiddle', tip: 'leftMiddle' },
style: 'protoblue',
offset: { x: 5, y: 0 }
})
);
Я даже использую Ajax, чтобы обновить состояние элемента, и использую следующее, чтобы очистить все подсказки из памяти, чтобы новые из Ajax стали активными:
// prior to ajax update
Tips.hideAll(); // prototip function to hide visible tooltips
tips.each(function(t) {
delete t;
});
delete tips;
tips = [];
// run ajax update
Каждый идентификатор, такой как led_091133000039
, является идентификатором изображения, которое я хочу, чтобы всплывающая подсказка отображалась при наведении курсора. Этот HTML генерируется ранее на странице. У меня есть Javascript, который создает все подсказки внизу HTML.
Надеюсь, это поможет вам.