8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

CodeIgniter 视图引用前一个视图的调用变量

deerey 1月前

30 0

我最近才注意到我的代码 ingiter 应用中有一个问题。我已将问题分解以尝试找出问题所在,但仍然不知所措。我有以下视图(template/assets/bo...

我最近才注意到我的代码 ingiter 应用中有一个问题。我已将问题分解以尝试找出问题所在,但仍然不知所措。

我有以下视图(模板/资产/框):

<div class="box <? if(isset($class)){echo $class;} ?>">

    <?
    if(isset($boxtitle) || isset($titleimg)){
        ?>
        <div class="head">
            <? if(isset($boxtitle)){ echo '<h3>'.$boxtitle.'</h3>';} ?>
            <? if(isset($titleimg)){ echo '<img src="'.$titleimg.'" />';} ?>
        </div>
        <?
        $has_head = 1;
    }
    ?>

    <div class="content <? if(!isset($has_head)){ echo 'border-top';}?> <? if(!isset($footer)){ echo 'border-bottom';}?>">
        <?
        if(isset($type)){
            switch($type){
                case 'list':
                    echo '<ul class="list" >';
                    foreach($items as $item){
                        ?>
                        <li><?=$item; ?></li>
                        <?
                    }
                    echo '</ul>';
                    break;
                case 'grid':
                    break;
                default:
                    echo '<div class="item">'.$content.'</div>';
                    break;
            }
        }
        else{
            echo '<div class="item">'.$content.'</div>';
        }

        ?>

    </div>


        <? 
        if(isset($footer)){
            ?><div class="footer <? if(isset($items)){echo 'border-top';} ?> "><?
            echo $footer; 
            ?></div><?
        } 
        ?>


</div>

然后,为了调试目的,我将以下内容添加到控制器中:

public function index(){

        // page data
        $data['page_title'] = 'Directories';

        // load template and output
        $this->load->view('template/assets/box',array('boxtitle'=>'foo','content'=>'bar')); 
        $this->load->view('template/assets/box',array('content'=>'blah'));
        $this->load->view('template/assets/box',array());
        #$this->Template_model->view('directories/index',$data);
    }

但是,当我加载该控制器时,我得到以下信息:

<div class="box ">

            <div class="head">
            <h3>foo</h3>                    </div>

    <div class="content  border-bottom">
        <div class="item">bar</div>
    </div>




</div>


<div class="box ">

            <div class="head">
            <h3>foo</h3>                    </div>

    <div class="content  border-bottom">
        <div class="item">blah</div>
    </div>




</div>


<div class="box ">

            <div class="head">
            <h3>foo</h3>                    </div>

    <div class="content  border-bottom">
        <div class="item">blah</div>
    </div>




</div>

基本上,除非被覆盖,否则每次调用视图似乎都会将先前的变量级联到视图。这是 codeigniter 中的错误吗?是不是 PHP 或 CI 配置可能会导致问题?我想不出我做过什么可能导致这个问题的事情。

帖子版权声明 1、本帖标题:CodeIgniter 视图引用前一个视图的调用变量
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由deerey在本站《codeigniter》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 如果我自己挖出来:/system/core/Loader.php 第 800 行。

  • Olaf 1月前 0 只看Ta
    引用 3

    @RobinCastlin,不,抱歉。仅基于过去的经验。它一直都是这样运作的。您可以随时向 codeigniter 社区本身寻求澄清,但这就是它的运作方式。

  • o11c 1月前 0 只看Ta
    引用 4

    这是一项功能。顺序视图加载可以访问您传递给先前视图的所有先前变量。

    以下是来自 CI 源代码的一条注释,可以大致证明这一事实:

    /系统/核心/Loader.php:840

    /*
    * Extract and cache variables
    *
    * You can either set variables using the dedicated $this->load->vars()
    * function or via the second parameter of this function. We'll merge
    * the two types and cache them so that views that are embedded within
    * other views can have access to these variables.
    */
    
返回
作者最近主题: