【问题标题】:Hiding and showing parts of an html with PHP?使用 PHP 隐藏和显示部分 html?
【发布时间】:2010-07-24 12:44:39
【问题描述】:

我在 HTML 中的示例:

<div id="red-nav-warp">
  <ul id="red-nav-logo">
    <li><img class="sponsors" id="sponsorone" src="media/img/logosmall.png" /></li>
  </ul>
  <ul class="clearfix" id="red-nav-list-member" >
    <li><?php $themeSys->Href('logout',$langSys->get('LOGOUT')); ?></li>
    <li><?php $themeSys->Href('settings',$langSys->get('SETTINGS')); ?></li>
  </ul>    
  <ul class="clearfix" id="red-nav-list" >
    <li><?php $themeSys->Href('home',$langSys->get('HOME')); ?></li>
    <li><?php $themeSys->Href('why',$langSys->get('WHY')); ?></li>
    <li><?php $themeSys->Href('register',$langSys->get('REGISTER')); ?></a></li>
    <li><?php $themeSys->Href('account',$langSys->get('MEMBER')); ?></a></li>
    <li><?php $themeSys->Href('community',$langSys->get('COMMUNITY')); ?></a></li>
    <li><?php $themeSys->Href('blog',$langSys->get('BLOG')); ?></a></li>
    <li><?php $themeSys->Href('partners',$langSys->get('PARTNERS')); ?></a></li>
  </ul> 

  <div class="clearfix"></div>    
</div><!-- END red-nav-warp -->

如果他是登录用户,我只想显示 HTML 的一部分。

<div id="red-nav-warp">
  <ul id="red-nav-logo">
    <li><img class="sponsors" id="sponsorone" src="media/img/logosmall.png" /></li>
  </ul>

  <!-- hidden or no output -->  
  <ul class="clearfix" id="red-nav-list" >
    <li><?php $themeSys->Href('home',$langSys->get('HOME')); ?></li>
    <li><?php $themeSys->Href('why',$langSys->get('WHY')); ?></li>
    <li><?php $themeSys->Href('register',$langSys->get('REGISTER')); ?></a></li>
    <li><?php $themeSys->Href('account',$langSys->get('MEMBER')); ?></a></li>
    <li><?php $themeSys->Href('community',$langSys->get('COMMUNITY')); ?></a></li>
    <li><?php $themeSys->Href('blog',$langSys->get('BLOG')); ?></a></li>
    <li><?php $themeSys->Href('partners',$langSys->get('PARTNERS')); ?></a></li>
  </ul> 

  <div class="clearfix"></div>    
</div><!-- END red-nav-warp -->

任何人都有一个想法或示例类可以隐藏一些东西,以便我可以编写它(如果可能的话,最好是一个类。)

<div id="red-nav-warp">
  <ul id="red-nav-logo">
    <li><img class="sponsors" id="sponsorone" src="media/img/logosmall.png" /></li>
   </ul>
   <?php $hideSys->hiddenbelow(); ?> <!-- some hide class or some magic -->
   <ul class="clearfix" id="red-nav-list-member" >
     <li><?php $themeSys->Href('logout',$langSys->get('LOGOUT')); ?></li>
     <li><?php $themeSys->Href('settings',$langSys->get('SETTINGS')); ?></li>
   </ul>
   <?php $hideSys->stop(); ?> <!-- end some hide class or some magic -->   
   <ul class="clearfix" id="red-nav-list" >
     <li><?php $themeSys->Href('home',$langSys->get('HOME')); ?></li>
     <li><?php $themeSys->Href('why',$langSys->get('WHY')); ?></li>
     <li><?php $themeSys->Href('register',$langSys->get('REGISTER')); ?></a></li>
     <li><?php $themeSys->Href('account',$langSys->get('MEMBER')); ?></a></li>
     <li><?php $themeSys->Href('community',$langSys->get('COMMUNITY')); ?></a></li>
     <li><?php $themeSys->Href('blog',$langSys->get('BLOG')); ?></a></li>
     <li><?php $themeSys->Href('partners',$langSys->get('PARTNERS')); ?></a></li>
   </ul> 

   <div class="clearfix"></div>    
</div><!-- END red-nav-warp -->

我所做的,是的,我知道这是一个史诗般的失败,至少我正在尝试:)

<?php  
/**
* TRYING TO HIDE SOME PART OF HTML
* useing if $_Session['login'] = true;
*/
class Hideing
{
  function __construct()
  {

  }

  function hiddenbelow()
  {
    return "if($_Session['login']){"; // epic fail
  }

  function stop()
  {
    return "}";
  }
}

$hideSys = new Hideing;
?>

感谢关注,

亚当斋月

【问题讨论】:

    标签: php html show-hide


    【解决方案1】:

    您的代码只返回一个字符串。 PHP 不会自动执行。

    你需要做的

     </ul>
     <?php if($_Session['login']) { ?> <!-- some hide class or some magic -->
     <ul class="clearfix" id="red-nav-list-member" >
      <li><?php $themeSys->Href('logout',$langSys->get('LOGOUT')); ?></li>
      <li><?php $themeSys->Href('settings',$langSys->get('SETTINGS')); ?></li>
     </ul>
     <?php } ?> <!-- end some hide class or some magic -->   
     <ul class="clearfix" id="red-nav-list" >
    

    您可能已经阅读过分离模型视图和控制器逻辑的智慧,并希望将该逻辑封装到一个类中,但您仍然需要在 PHP 代码中使用 ifs。

     </ul>
     <?php if($hideSys->isLoggedIn()) { ?> <!-- some hide class or some magic -->
     <ul class="clearfix" id="red-nav-list-member" >
      <li><?php $themeSys->Href('logout',$langSys->get('LOGOUT')); ?></li>
      <li><?php $themeSys->Href('settings',$langSys->get('SETTINGS')); ?></li>
     </ul>
     <?php } ?> <!-- end some hide class or some magic -->   
     <ul class="clearfix" id="red-nav-list" >
    

    isLoggedIn() 方法返回一个布尔值 true 或 false 变量。

    【讨论】:

    • 如何让它成为一个班级詹姆斯?还是这样更好?
    • @Adam:还有其他方法,但是如果您想将所有内容保存在一个文件中,而不是重构您的整个系统,那么这个对其他编码人员来说是最易读的,它可以完成工作好吧。
    • 就我个人而言,我总是尝试将我的代码分成模型视图表示层。你会在网上找到很多。但是无论如何,您肯定希望在类或函数中使用该代码,因为您不想重复代码 - 重复的代码使得以后很难更改。而且我确信 isLoggedIn() 将是一个经常使用的检查。
    • @wrikken - 不同意。将逻辑直接放入表示层会导致系统难以测试、难以更改和难以理解。具有清晰接口的漂亮模型层很棒。当然,如果它是一个小的单页简单系统,那可能就太过分了——但我猜任何有登录的系统都不是这样的系统。
    • 对不起,当我的意思是“逻辑”时,我一直在输入“登录” - agghhh
    【解决方案2】:

    包装你想隐藏的代码:

    <?php if ($_SESSION['login']): ?>
    <!-- code goes here -->
    <?php endif; ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2010-10-01
      • 1970-01-01
      • 2023-03-07
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多