所有模式在通过点击按钮触发时显示相同的内容 [英] All modals show the same content when triggered via a button click
问题描述
我的代码:
<?php
require_once'Net / SSH2.php';
require_once'phpseclib1.0.10 / Crypt / RSA.php';
$ config = require'config.json';
$ log ='logfile.txt';
if(is_array($ config)){
foreach($ config as $ cred){
$ ssh = new Net_SSH2($ cred ['ip'],$ cred ['港口']);
$ key = new Crypt_RSA();
$ key-> loadKey($ cred ['key']);
echo($ cred ['name']); //获取配置文件中的Raspberry PI名称
if(!$ ssh-> login('pi',$ key)){
file_put_contents($ log,[.date ('Ymd H:i:s')。]登录失败{$ cred ['ip']} \ n,FILE_APPEND | LOCK_EX);
继续;
$ output = $ ssh-> exec('tail -1 /var/log/playlog.csv');
$ array = explode(',',$ output);
$ b $ if(end($ array)> = 0){
//触发带按钮
的模态'< div id =circleGreenclass =btn btn -primarydata-toggle =modaldata-target =#myModal>< / div>';
$ b $ // modal
echo'< div class =modal fadeid =myModaltabindex = - 1role =dialogaria-labeledby =exampleModalLabelaria = 隐藏 >';
echo'< div class =modal-dialogrole =document';
//模态内容
echo'< div class =modal-content>';
echo'< div class =modal-header>';
$ b $ echo'< h4 class =modal-titleid =exampleModalLabel>位置:'。($ cred ['name'])。'< / h4>';
echo'< button type =buttonclass =closedata-dismiss =modalaria-label =Close>';
echo'< span aria-hidden =true>& times;< / span>';
echo'< / button>';
echo'< / div>';
echo'< div class =modal-body>';
echo'< p>目前没有问题报告。< / p>';
echo'< p>正在播放:'。$ array [1]。'< / p>';
echo'< / div>';
echo'< div class =modal-footer>';
echo'< / div>';
echo'< / div>';
echo'< / div>';
echo'< / div>';
echo'< / div>';
} else {
echo'< div id =circleRedclass =btn btn-primarydata-toggle =modaldata-target =#myModal>< / div> ;';
// echo'< p>问题:'。$ array [2]。'< / p>';
};
}};
?>
$ b
...
if(end($ array)> = 0){
/ /触发模式带按钮
echo'< div id =circleGreenclass =btn btn-primarydata-toggle =modaldata-target =#myModal>< / div>' ;
$ b $ // modal
echo'< div class =modal fadeid =myModaltabindex = - 1role =dialogaria-labeledby =exampleModalLabelaria = 隐藏 >';
echo'< div class =modal-dialogrole =document';
//模态内容
echo'< div class =modal-content>';
echo'< div class =modal-header>';
$ b $ echo'< h4 class =modal-titleid =exampleModalLabel>位置:'。($ cred ['name'])。'< / h4>';
echo'< button type =buttonclass =closedata-dismiss =modalaria-label =Close>';
...
我推荐这个
...
if(end($ array)> = 0){?>
<! - 用按钮触发模态 - >
< div id =circleGreenclass =btn btn-primarydata-toggle =modaldata-target =#myModal>< / div>
<! - - modal - >
< div class =modal fadeid =myModaltabindex = - 1role =dialogaria-labeledby =exampleModalLabelaria =hidden>
< div class =modal-dialogrole =document
<! - modal content - >
< div class =modal-content>
< div class =modal-header>
...
等等。
现在回到您的问题。当然,它会打开相同的模式,因为您创建了几个具有相同ID的模式。
您绝对不要这样做
以下是一个快速解决方案:
将这一行更改为 foreach($ config as $ cred){
c $ c
然后改变这个
echo'< div id =circleGreenclass =btn btn-primarydata-toggle =modaldata-target =#myModal>< / div>';
echo'< div class =modal fadeid =myModaltabindex = - 1role =dialogaria-labeledby =exampleModalLabelaria =hidden>' ;
$ b echo'< h4 class =modal-titleid =exampleModalLabel>位置:'。($ cred ['name']] )。 '< / H4>';
...
echo'< div id =circleRedclass =btn btn-primarydata-toggle =modaldata-target =# myModal>< / DIV>';
至此
echo'< div id =circleGreenclass =btn btn-primarydata-toggle =modaldata-target =#myModal'。$ key。' >< / DIV>';
echo'< div class =modal fadeid =myModal'。$ key。'tabindex = - 1role =dialogaria-labeledby =exampleModalLabel。$键。'aria =隐藏>';
echo'< h4 class =modal-titleid =exampleModalLabel'。$ key。'>位置:'。($ [ '名称'])名气。 '< / H4>';
...
echo'< div id =circleRedclass =btn btn-primarydata-toggle =modaldata-target =# myModal'。$ key。'>< / div>';
Every time the user clicks on a button a modal is triggered, however no matter which circle (button) the user clicks on - all modals display the content of the first circle. How can I get each modal to only display the content of the circle that the user has clicked on?
My Code:
<?php
require_once 'Net/SSH2.php';
require_once 'phpseclib1.0.10/Crypt/RSA.php';
$config = require 'config.json';
$log = 'logfile.txt';
if(is_array($config)){
foreach($config as $cred){
$ssh = new Net_SSH2($cred['ip'], $cred['port']);
$key = new Crypt_RSA();
$key->loadKey($cred['key']);
echo ($cred['name']); //get Raspberry PI name from config file
if (!$ssh->login('pi', $key)){
file_put_contents($log, "[".date('Y-m-d H:i:s')."]Login Failed for {$cred['ip']}\n", FILE_APPEND|LOCK_EX);
continue;
}
$output = $ssh->exec('tail -1 /var/log/playlog.csv');
$array = explode (',' , $output);
if (end($array) >= 0){
//trigger modal with button
echo '<div id="circleGreen" class="btn btn-primary" data-toggle="modal" data-target="#myModal"></div>';
//modal
echo '<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labeledby="exampleModalLabel" aria="hidden">';
echo '<div class="modal-dialog" role="document"';
//modal content
echo '<div class="modal-content">';
echo '<div class="modal-header">';
echo '<h4 class="modal-title" id="exampleModalLabel">Location: '.($cred['name']).'</h4>';
echo '<button type="button" class="close" data-dismiss="modal" aria-label="Close">';
echo '<span aria-hidden="true">×</span>';
echo '</button>';
echo '</div>';
echo '<div class="modal-body">';
echo '<p>No issues currently reported.</p>';
echo '<p>Currently Playing: '.$array[1].'</p>';
echo '</div>';
echo '<div class="modal-footer">';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
}else{
echo '<div id="circleRed" class="btn btn-primary" data-toggle="modal" data-target="#myModal"></div>';
//echo '<p>Issues: '.$array[2].'</p>';
};
}};
?>
Instead of something like this
...
if (end($array) >= 0){
//trigger modal with button
echo '<div id="circleGreen" class="btn btn-primary" data-toggle="modal" data-target="#myModal"></div>';
//modal
echo '<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labeledby="exampleModalLabel" aria="hidden">';
echo '<div class="modal-dialog" role="document"';
//modal content
echo '<div class="modal-content">';
echo '<div class="modal-header">';
echo '<h4 class="modal-title" id="exampleModalLabel">Location: '.($cred['name']).'</h4>';
echo '<button type="button" class="close" data-dismiss="modal" aria-label="Close">';
...
I recommend this
...
if (end($array) >= 0) { ?>
<!-- trigger modal with button -->
<div id="circleGreen" class="btn btn-primary" data-toggle="modal" data-target="#myModal"></div>
<!-- modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labeledby="exampleModalLabel" aria="hidden">
<div class="modal-dialog" role="document"
<!-- modal content -->
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="exampleModalLabel">Location: <?= $cred['name']; ?></h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
...
And so on.
Now to your question. Of course it opens the same modal, because you create a couple of modals with the same id.
YOU SHOULD NEVER DO THAT!!
Here is a quick fix:
Change this line foreach($config as $cred){
to this foreach($config as $key => $cred){
And then change this
echo '<div id="circleGreen" class="btn btn-primary" data-toggle="modal" data-target="#myModal"></div>';
echo '<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labeledby="exampleModalLabel" aria="hidden">';
...
echo '<h4 class="modal-title" id="exampleModalLabel">Location: '.($cred['name']).'</h4>';
...
echo '<div id="circleRed" class="btn btn-primary" data-toggle="modal" data-target="#myModal"></div>';
to this
echo '<div id="circleGreen" class="btn btn-primary" data-toggle="modal" data-target="#myModal' . $key . '"></div>';
echo '<div class="modal fade" id="myModal' . $key . '" tabindex="-1" role="dialog" aria-labeledby="exampleModalLabel' . $key . '" aria="hidden">';
...
echo '<h4 class="modal-title" id="exampleModalLabel' . $key . '">Location: '.($cred['name']).'</h4>';
...
echo '<div id="circleRed" class="btn btn-primary" data-toggle="modal" data-target="#myModal' . $key . '"></div>';
这篇关于所有模式在通过点击按钮触发时显示相同的内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!