double0201 2012-05-23 14:51
浏览 27
已采纳

Codeigniter库类的公共变量不起作用

Here is a snippet of my code:

<?php

if (!defined('BASEPATH')) {
exit('No direct script access allowed');
}

class sample{

function __construct() {
    $this->ci = & get_instance();
    }

public $name;
public $style;


function set_data($data)
{
    /* List of parameters that you can set */

    $this->name = (isset($data['name']) ? $data['name']: ''); // Set select name
    $this->style = (isset($data['style']) ? $data['style']: ''); // Set select style

}

function select_both_dropdown()
{
    $select = '<select name="'.$this->name.'" class="chzn-select" style="'.$this->style.'">';
    $select .= '<option value=""></option>';
    $select .= '</select>';
return $select;
}

Controller:

$data['select'] = $this->sample->select_both_dropdown(array(
        'name' => 'eventselect',
        'style' => 'min-width: 247px;'
    ));

How it is being loaded in controller: function _construct() { parent::_construct(); $this->load->library('tank_auth'); $this->load->library('sample'); }

When the select loads on the screen, nothing is filled in. No name, no style etc.. What am I doing wrong?

  • 写回答

1条回答 默认 最新

  • dqlk31541 2012-05-23 14:53
    关注

    You need to reference them properly;

    In the library;

    // as you have done
    $this->select = 'foo';
    

    In your controller it would be something like $this->sample->name or $this->sample->style

    But the $select is not an attribute or being returned so will not be avaiable.

    UPDATE - based on comments controller;

    $this->sample->set_data(array(
            'name' => 'eventselect',
            'style' => 'min-width: 247px;'
        ));
    $data['select'] = $this->sample->select_both_dropdown();
    

    ANOTHER UPDATE:

    function select_both_dropdown($data)
    {
        $this->set_data($data);
        $select = '<select name="'.$this->name.'" class="chzn-select" style="'.$this->style.'">';
        $select .= '<option value=""></option>';
        $select .= '</select>';
    return $select;
    }
    

    I would then change set_data() to private instead of public.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染