用户
 找回密码
 入住 CI 中国社区
搜索
收起左侧

[已解决] 动态添加数据问题

[复制链接]
 楼主| 发表于 2017-3-15 16:05:43 | 显示全部楼层
Closer 发表于 2017-3-15 16:03
1. 你是在手冊的哪一頁看到這種用法?
$nji = $this->load->library('testclass');

$test = new Testclass();   这种用法会报错的 
发表于 2017-3-15 16:07:47 | 显示全部楼层
Android 发表于 2017-3-15 16:05
$test = new Testclass();   这种用法会报错的 

你需要的是兩件事:
1. 看 CI 手冊怎麼使用相關函數
2. 理解 PHP 的基礎使用
 
 楼主| 发表于 2017-3-15 16:08:19 | 显示全部楼层
Closer 发表于 2017-3-15 16:03
1. 你是在手冊的哪一頁看到這種用法?
$nji = $this->load->library('testclass');

用return  不出数据的,  你看 我说的 问题一  贴的代码
发表于 2017-3-15 16:12:18 | 显示全部楼层
Android 发表于 2017-3-15 16:08
用return  不出数据的,  你看 我说的 问题一  贴的代码

你的問題一,前半段正確,後半段錯了


CI 是在控制器端用 $this->load->view('blogview.html', $data); 這種方式來載入視圖
相同的,在控制器 echo 也是可行的 (但不建議)
你載入的 loadfun() 是 return; 既沒有 view() 也沒有 echo
自然而然沒有任何東西


 

 楼主| 发表于 2017-3-15 16:21:10 | 显示全部楼层
Closer 发表于 2017-3-15 16:12
你的問題一,前半段正確,後半段錯了

其一:  不明白你这话--你載入的 loadfun() 是 return; 既沒有 view() 也沒有 echo,
其二:我就是这么做的啊- $this->load->view('blogview.html', $data); 這種方式來載入視圖。

 这不是有返回值嘛 
  public function loadfun() {

       // return  "通过 加载数据";
       echo  "通过  加载数据";
    }
 
  下面属于view层的:
   <?php

    echo $nji ->loadfun();
   ?>
   
  
发表于 2017-3-15 16:25:54 | 显示全部楼层
Android 发表于 2017-3-15 16:21
其一:  不明白你这话--你載入的 loadfun() 是 return; 既沒有 view() 也沒有 echo,
其二:我就是这么 ...

你問題一的 code 只剩下這樣

PHP复制代码
 
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
    public function index(){
        $this -> load->library('testclass');
        $this ->testclass->loadfun();
    }
}
 
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Testclass{
 
    protected  $CI;
    public function _construct() {
       $this -> $CI =& get_instance();
    }
 
    public function testlass() {
       echo $this ->loadfun();
    }
 
    public function loadfun() {
        return  "通过 this 加载数据";
    }
}
 
复制代码

你試圖訪問 Welcome 的 index 方法
他載入了類名 testclass (3.x+ 要注意大小寫)
然後試圖呼叫 loadfun()
此時你的 loadfun() 是用 return
又因 $this->testclass->loadfun(); 沒用任何變數承接 loadfun() 所 return 回的值

於是 index() 既沒有 view() 也沒有 echo
理論上你問題一的畫面應該是白的

 
发表于 2017-3-15 16:38:20 | 显示全部楼层
Closer 发表于 2017-3-15 16:03
1. 你是在手冊的哪一頁看到這種用法?
$nji = $this->load->library('testclass');

你不要试图把对象特别是 CI 里面的类库传递给视图,你可以理解成 CI 不支持(或不推荐)你这样做,正确的做法就是在控制器里获取 loadfun() 的返回值,然后把这个值传给视图。
 楼主| 发表于 2017-3-15 16:42:20 | 显示全部楼层
Closer 发表于 2017-3-15 16:25
你問題一的 code 只剩下這樣

是的,这是我的原因,少加echo  整体应该是 echo $this ->testclass->loadfun();    这样用return 就可以了
其二: 那在view层 怎么处理呢?
发表于 2017-3-15 16:56:59 | 显示全部楼层
Hex 发表于 2017-3-15 16:38
你不要试图把对象特别是 CI 里面的类库传递给视图,你可以理解成 CI 不支持(或不推荐)你这样做,正确的做 ...

這點我表示理解與支持

只是 Android 連基本都不懂了
只能先循序漸進地跟他說

 
发表于 2017-3-15 16:59:29 | 显示全部楼层
Android 发表于 2017-3-15 16:42
是的,这是我的原因,少加echo  整体应该是 echo $this ->testclass->loadfun();    这样用return 就可 ...

接下來你只要參考 CI 手冊的視圖 http://codeigniter.org.cn/user_guide/general/views.html#id6
或 Hex 所提供的範例即可 http://codeigniter.org.cn/forums ... 4&fromuid=34802

本版积分规则