用户
 找回密码
 入住 CI 中国社区
搜索
楼主: 丘思甲
收起左侧

[已解决] 急,我用3.0版本,运行提示找不到自定义的函数

[复制链接]
发表于 2016-8-22 11:40:49 | 显示全部楼层

你的用法错了,你不能直接调用 fget_user_info() 方法,要用 $this->user_info_model->fget_user_info() 方式调用,这个手册都有说明。
发表于 2016-8-22 11:40:54 | 显示全部楼层
丘思甲 发表于 2016-8-22 10:48
没错,$this->load->model('这里是model名'); 写法不会有错

重點不在載入 Model 的時候
而是你呼叫此 Model 中方法的時候

也許是呼叫寫法錯了
導致它去 User_infomation 找方法 farm_user_login() ...

 
 楼主| 发表于 2016-8-22 11:53:58 | 显示全部楼层
Hex 发表于 2016-8-22 11:40
你的用法错了,你不能直接调用 fget_user_info() 方法,要用 $this->user_info_model->fget_user_info()  ...

我晕,吓了一跳,这么低级的错误,因为我一直为CI的版本问题搞糊涂了,我下意识以为是版本对应的写法有问题,所以没想过是我的写法出错了,我查看了其它自定义的controller,都没这样,哈哈,哎,3Q,另外再问个问题,我下载别人的原玛时发现有些人是class abc extends Controller,这种写法是不是以前版本的写法,而现在一定要CI_Controller是吗?,另外析构函数里头的parent::__construct();有些人又写成parent::controller哪种对,区别?再看那图,fget_user_info()函数里头要传递四个数组,每次调用都要为这四个数组赋值,没值也申明一下,似乎挺麻烦的,怎么优化一下呢?
发表于 2016-8-22 12:15:24 | 显示全部楼层
1. Controller 的写法是 CI 2.x 的,CI 3 都要 CI_Controller
2. parent::__construct(); 是正统的 PHP 写法,其他方法都不要用了。
3. 首先,变量都要初始化再使用,这是优秀程序员必须具备的品质,麻烦也要做。其次,你这里如果不需要变量,可以直接把数组传给函数。
 楼主| 发表于 2016-8-22 13:45:20 | 显示全部楼层
本帖最后由 丘思甲 于 2016-8-22 13:52 编辑
Hex 发表于 2016-8-22 12:15
1. Controller 的写法是 CI 2.x 的,CI 3 都要 CI_Controller
2. parent::__construct(); 是正统的 PHP 写 ...

我是使用$this->input->post['username'];来获取输入的用户名,但系统提示Field 'input' not found in User_infomation,input下面还有红色横线,似乎CI框架认不得这个,$this->input->post()这应该是系统默认支持的吧,不用我修改什么配置文件吧!我仔细看了一下发现$this->session->set_userdata和$query->num_rows(),$this->user_info_model->...似乎都认不得,都提示no found in(指的是session,num->rows(),自定义的Model如user_info_model)
到底是不是环境问题,真是奇怪
发表于 2016-8-22 13:55:12 | 显示全部楼层
丘思甲 发表于 2016-8-22 13:45
我是使用$this->input->post['username'];来获取输入的用户名,但系统提示Field 'input' not found in Use ...

請提供你的代碼
才能知道你真正的原因

應該絕大部分都是寫錯或未載入 ...
手冊要細看


 
 楼主| 发表于 2016-8-22 14:01:33 | 显示全部楼层
本帖最后由 丘思甲 于 2016-8-22 14:04 编辑
Closer 发表于 2016-8-22 13:55
請提供你的代碼
才能知道你真正的原因

页面调用Controller:
<form action="<?php echo site_url('user_infomation/farm_user_login')?>" method="post">
        <input name="username" type="text" value="请输入用户名" />
        <input name="userpass" type="text" value="请输入密码" />
        <input type="submit" value="登陆" />
</form>

下面是Controller:我调试的时候发现$farm_user_name是null,而input下方有红横线提示no found in
    function farm_user_login(){
        $farm_user_name     = $this->input->post['username'];       //用户名
        $farm_user_password = $this->input->post['userpass'];       //密码    }


具体看图:像session和user_info_model都有红线说no found in

发表于 2016-8-22 14:04:21 | 显示全部楼层
本帖最后由 Closer 于 2016-8-22 14:07 编辑
丘思甲 发表于 2016-8-22 14:01
页面调用Controller:

(X) $this->input->post['username']
(O) $this->input->post('username')

建議善用 exit() 與 print_r() 去一步步除錯
盡可能的不要想著「為什麼沒有存進資料表 ? 」
而是「我真的有拿到 POST 過來的資料了嗎 ? 」

先求有,再求好

 楼主| 发表于 2016-8-22 14:14:03 | 显示全部楼层
Closer 发表于 2016-8-22 14:04
(X) $this->input->post['username']
(O) $this->input->post('username')

Method 'num_rows' not found in还有session为什么提示no found in
发表于 2016-8-22 14:15:10 | 显示全部楼层
丘思甲 发表于 2016-8-22 14:01
页面调用Controller:

要注意的是
有些工具是要先載入才能使用
例如 : session、database 等
這些手冊裡面大多都有寫到
千萬不要認為手冊寫了一行無意義的代碼在那邊
 

本版积分规则