所有模式在通过点击按钮触发时显示相同的内容 [英] All modals show the same content when triggered via a button click

查看:77
本文介绍了所有模式在通过点击按钮触发时显示相同的内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

每次用户点击一个按钮时,都会触发一个模式,但无论用户点击了哪个圆圈(按钮),所有模式都会显示第一个圆圈的内容。我怎样才能让每个模式只显示用户点击的圈子的内容?



我的代码:

 <?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">&times;</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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆