用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3032|回复: 7
收起左侧

[已解决] 控制器中的方法如果有形参就一定得传参数?

[复制链接]
发表于 2010-2-7 09:48:48 | 显示全部楼层 |阅读模式
比如我一个控制器中有一个方法
PHP复制代码
 
<?php
  class Hello extends Controller {
      function Hello() {
          parent::Controller();
      }
 
      function index($str1, $str2) {
          $str1 = empty($str1) ? "hello" : '';
          $str2 = empty($str2) ? "world" : '';
          $data = Array('str' => $str1." ".$str2);
          $this->load->view('hello',$data);
      }
  }
?>
 
复制代码

View中直接
PHP复制代码
<?php echo $str ?>
复制代码


然后通过 http://localhost/hello 访问
虽然可以显示出结果,但是页面最上方会出错误提示
提示说没有参数
A PHP Error was encountered
Severity: Warning
Message: Missing argument 1 for Hello::index()
Filename: controllers/hello.php
Line Number: 7

该怎么写才不会出错误提示??
发表于 2010-2-7 11:13:42 | 显示全部楼层
这是PHP的基础知识,可以设置默认参数值。如:
function test($myargument = "默认值"){
      ...
}
 楼主| 发表于 2010-2-7 11:30:25 | 显示全部楼层
这是PHP的基础知识,可以设置默认参数值。如:
function test($myargument = "默认值"){
      ...
} ...
yinzhili 发表于 2010-2-7 11:13

不行啊...
即使这样也是得用
http://localhost/hello/index
这样的链接来访问才行
我想要的是
http://localhost/hello
发表于 2010-2-7 11:49:03 | 显示全部楼层
index 是不用写的,如果你不需要 index.php/hello/index/xxx/yyy 的话,index 是可以省略的,如果不可以就是你的 CI 的问题,因为我这里一直都是没问题的。
对于 URL 分段传参,必须用默认参数,否则就报错,这是规定,不容侵犯。
 楼主| 发表于 2010-2-7 12:35:14 | 显示全部楼层
index 是不用写的,如果你不需要 index.php/hello/index/xxx/yyy 的话,index 是可以省略的,如果不可以就 ...
Hex 发表于 2010-2-7 11:49

我知道,我的配置没问题
访问http://localhost/hello的话就相当于访问http://localhost/hello/index
但是像上面那样不传参数的话,即使参数默认赋值了也无法用http://localhost/hello来访问,一定要用http://localhost/hello/index才行
 楼主| 发表于 2010-2-7 12:37:16 | 显示全部楼层

原....原来是IE缓存导致的...
我把IE关掉再开就可以了....
发表于 2010-2-7 14:01:39 | 显示全部楼层
-_- 本来就是没问题的东西。。。。。。

不清缓存就调试网站是不良习惯。。。。
 楼主| 发表于 2010-2-7 14:25:01 | 显示全部楼层
-_- 本来就是没问题的东西。。。。。。

不清缓存就调试网站是不良习惯。。。。 ...
Hex 发表于 2010-2-7 14:01

我都是用Ctrl+F5来刷新进行调试的...
有时候可以...但有时候一定得关掉浏览器再开才行...甚至有时候得清空缓存才行...

本版积分规则