2009-09-30 109 views
0

下面的视图代码如下生成html代码。为什么此代码将html =“active”添加到html?

Q1。第一行是干什么的?

<?php $ci_uri = trim($this->uri->uri_string(), '/'); $att = ' id="active"';?> 

Q2。为什么

产生id =“active”?

Q3。

<?= substr($ci_uri, 0, 7) == 'example'? $att: ''?> 
<?= $ci_uri == $this->config->item('FAL_login_uri')? $att: ''?> 
... 
... 
<?= $ci_uri == $this->config->item('FAL_changePassword_uri')? $att: ''?> 
etc. 

是什么意思使用三元运算符?

查看代码

<?php $ci_uri = trim($this->uri->uri_string(), '/'); $att = ' id="active"';?> 
<ul id="navlist"> 
<li<?= $ci_uri == ''? $att: ''?>><?=anchor('', 'home')?></li> 
<li<?= substr($ci_uri, 0, 7) == 'example'? $att: ''?>><?=anchor('example', 'examples')?></li> 
<li<?= $ci_uri == $this->config->item('FAL_login_uri')? $att: ''?>><?=anchor($this->config->item('FAL_login_uri'), 'login')?></li> 
<li<?= $ci_uri == $this->config->item('FAL_register_uri')? $att: ''?>><?=anchor($this->config->item('FAL_register_uri'), 'register')?></li> 
<li<?= $ci_uri == $this->config->item('FAL_forgottenPassword_uri')? $att: ''?>><?=anchor($this->config->item('FAL_forgottenPassword_uri'), 'forgotten password')?></li> 
<li<?= $ci_uri == $this->config->item('FAL_changePassword_uri')? $att: ''?>><?=anchor($this->config->item('FAL_changePassword_uri'), 'change password')?></li> 
<li<?= substr($ci_uri, 0, 5) == 'admin'? $att: ''?>><?=anchor('admin', 'admin')?></li> 
</ul> 

HTML代码

<ul id="navlist"> 
<li id="active"><a href="http://127.0.0.1/ci_freak_auth/index.php">home</a></li> 
<li><a href="http://127.0.0.1/ci_freak_auth/index.php/example.html">examples</a></li> 
<li><a href="http://127.0.0.1/ci_freak_auth/index.php/auth/login.html">login</a></li> 
<li><a href="http://127.0.0.1/ci_freak_auth/index.php/auth/register.html">register</a></li> 
<li><a href="http://127.0.0.1/ci_freak_auth/index.php/auth/forgotten_password.html">forgotten password</a></li> 
<li><a href="http://127.0.0.1/ci_freak_auth/index.php/auth/changepassword.html">change password</a></li> 
<li><a href="http://127.0.0.1/ci_freak_auth/index.php/admin.html">admin</a></li> 
</ul> 

回答

3
  1. 它设置$ ci_uri当前的URL,与开头和结尾的斜杠去掉,所以 “/富/酒吧/” 会成为“foo/bar”。然后将$ att设置为该字符串,以备后用。

  2. 的字符串将被注入到一个HTML标记以后 - 也许因此它可以以不同的CSS样式化

  3. 基本上它看起来,如果它是印刷的链接是当前网址并加入活动属性,如果它是。

总之,整件事是以不同的方式链接到当前页面。

代码:

<?= $ci_uri == $this->config->item('FAL_login_uri')? $att: ''?> 

表示:

<?= // this is a shortcut for <?php echo 

// If the current url is the same as the url for "FAL_login_uri" 
$ci_uri == $this->config->item('FAL_login_uri') 

// then 
? 

// use $att in the echo 
$att 

// else 
: 

// use an empty string in the echo 
'' 
?> 

$x ? $y : $z语法是ternary operator - 这几乎是做if/else

的一小段路