小编iml*_*ell的帖子

PHP_SELF vs PATH_INFO vs SCRIPT_NAME vs REQUEST_URI

我正在CodeIgniter中构建一个PHP应用程序.CodeIgniter将所有请求发送到主控制器:index.php.但是,我不喜欢index.php在URI中看到.例如,http://www.example.com/faq/whatever将路由到http://www.example.com/index.php/faq/whatever.我需要一种可靠的方法让脚本知道它的地址是什么,因此它将知道如何处理导航.我mod_rewrite按照CodeIgniter文档使用过.

规则如下:

RewriteEngine on
RewriteCond $1 !^(images|inc|favicon\.ico|index\.php|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L] 
Run Code Online (Sandbox Code Playgroud)

通常,我会检查php_self,但在这种情况下,它总是index.php.我可以得到它REQUEST_URI,PATH_INFO等等,但我想,以决定这将是最可靠的.有谁知道(或不知道在哪里可以找到)之间的真正区别PHP_SELF,PATH_INFO,SCRIPT_NAME,和REQUEST_URI?谢谢你的帮助!

注意:我必须添加空格,因为SO看到了下划线,并且由于某种原因使其变为斜体.

更新:修复了空格.

php codeigniter http

101
推荐指数
5
解决办法
7万
查看次数

使用CodeIgniter重定向

任何人都可以告诉我为什么我的重定向助手不能像我期望的那样工作吗?我正在尝试重定向到我的主控制器的索引方法,但它需要我www.mysite.com/index/provider1/何时应该路由到www.mysite.com/provider1.这对任何人都有意义吗?我在配置中的索引页面设置为空白,虽然我不认为这是问题.有没有人就如何解决这个问题提出建议?提前致谢!

控制器:

if($provider == '') {
    redirect('/index/provider1/', 'location');
}
Run Code Online (Sandbox Code Playgroud)

.htaccess:

RewriteEngine on

RewriteCond %{REQUEST_URI} !^(index\.php|files|images|js|css|robots\.txt|favicon\.ico)

RewriteCond %{HTTP_HOST} ^mysite.com/ttnf/
RewriteRule (.*) http://www.mysite.com/ttnf/$1 [R=301,L]

RewriteBase /ttnf/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

php_flag display_errors On
Run Code Online (Sandbox Code Playgroud)

php redirect codeigniter urlhelper

59
推荐指数
4
解决办法
32万
查看次数

CodeIgniter:如何执行选择(不同的字段名称)MySQL查询

我正在尝试检索字段中所有唯一值的计数.

示例SQL:

SELECT count(distinct accessid) FROM (`accesslog`) WHERE record = '123'
Run Code Online (Sandbox Code Playgroud)

我怎么能在CodeIgniter里面做这种查询?

我知道我可以使用$this->db->query(),并编写自己的SQL查询,但我有其他要求,我想用它$this->db->where().如果我使用->query()虽然我必须自己编写整个查询.

php mysql codeigniter distinct

48
推荐指数
5
解决办法
13万
查看次数

访问其他模型中的CodeIgniter模型

过去,在CodeIgniter模型中,您无法访问其他模型.

$this->load->model('bar');
$this->bar->something();
Run Code Online (Sandbox Code Playgroud)

这仍然有效,还是他们改变了?

php codeigniter

38
推荐指数
4
解决办法
4万
查看次数

单元测试网站

我很想知道其他开发人员如何测试他们的网站.PHP特别适用于我的情况,但这可能跨越多种语言.我已经在一个网站上工作了一年多了,而且我真的想在版本之间自动执行很多回归测试.

这个特定的站点在CodeIgniter中,所以我对我的模型进行了一些测试.我想超越仅测试那些.然而,这是一个问题,即使非MVC开发人员必须解决我的确定.

编辑:我认为满足我的测试需求的功能是能够断言参数在脚本处理结束时具有特定值.在我的情况下,控制器中有很多逻辑,这是我想要测试的主要区域.

php unit-testing codeigniter

32
推荐指数
2
解决办法
2万
查看次数

CodeIgniter表单验证 - 将结果作为"数组"而不是"字符串"

我正在使用CodeIgniter编写表单验证类.有没有办法让我可以在名称值对中获取错误消息?例如,在一个样表有四个字段:user_name,password,password_conf,和timezone.其中user_namepassword验证执行以下后失败:

$result = $this->form_validation->run();
Run Code Online (Sandbox Code Playgroud)

如果上面的函数返回false,我想获取名称值对中的错误,如下所示:

Array
{
  'user_name' => 'user name is required',
  'password' => 'passord is required'
}
Run Code Online (Sandbox Code Playgroud)

我真的想形成一个JSON,我可以将其传递回AJAX调用.我有一个(脏)解决方案:我可以逐个调用验证方法,如下所示:

$this->form_validation->required($user_name);
$this->form_validation->required($password);
Run Code Online (Sandbox Code Playgroud)

还有其他方法,在名称值对中一次性获取所有错误消息吗?

编辑:我被建议用其中一个答案用jQuery进行验证:

jQuery将有助于客户端验证,但是服务器端,我正在使用CodeIgniter验证.

我设计它是为了:

  1. 我使用AJAX发布所有值.
  2. 在服务器端验证(PHP).
  3. 如果输入有效,则执行所需的操作; 否则会向用户返回错误.

php codeigniter

16
推荐指数
2
解决办法
2万
查看次数

设置Apache进行本地开发/测试?

Rails的截屏视频给我留下了深刻的印象,它展示了内置的Web服务器,以及允许在本地机器上进行开发和测试的数据库.我如何获得一个Apache实例来执行项目目录作为其DocumentRoot,并可能在端口8080(或类似的东西)上提供文件?

我问的原因是因为我将要尝试CodeIgniter,我想将它用于多个项目.我宁愿不要弄乱我的机器的DocumentRoot.关于如何进行数据库迁移的建议也是受欢迎的.


感谢您对目前的回复.我应该澄清一下,我使用的是Mac OS X.看起来WAMP只适用于Windows.此外,XAMPP看起来是安装Apache和许多其他Web工具的好方法,但我没有看到加载实例来提供项目目录的方法.Mac OS X同时安装了Apache和PHP - 我只是想找到一种方法来让它在非标准端口上提供服务.

我刚发现MAMP Pro可以满足我的需求,但如果可行的话,更简约的方法会更好.有没有人有一个可以编辑并放入项目目录的httpd.conf文件?

另外,抱歉我刚刚提到了数据库迁移问题.我希望找到的东西能够让我将架构更改推送到实时服务器而不会丢失现有数据.我怀疑这很难,而且高度依赖环境因素.

php apache codeigniter

12
推荐指数
2
解决办法
2万
查看次数

如何将类添加到CodeIgniter锚点

我有以下内容:

'.anchor('','Home').'
Run Code Online (Sandbox Code Playgroud)

我想为它添加以下CSS类:

class="top_parent"
Run Code Online (Sandbox Code Playgroud)

这样,当它在浏览器中呈现时,代码将类似于以下内容:

<a href="#" class="top_parent">Home</a>
Run Code Online (Sandbox Code Playgroud)

在此先感谢,非常感谢任何帮助.

-

汤姆

css codeigniter

12
推荐指数
2
解决办法
2万
查看次数

如何将基于页面的PHP应用程序转换为MVC?

我已经苦苦挣扎了一段时间,正是如何使用MVC框架重新编码基于页面的PHP应用程序.仅仅是为了背景,我不得不将应用程序转移到MVC,因为我的老板正在制作我.无论如何,我坐下来打印出目录结构.然后我开始尝试计划如何将这些页面转换为控制器/动作对.有些事情似乎很直接.例如,我有几页专门用于添加/编辑/删除用户.这很容易创建一个"用户"控制器,并添加添加/编辑/删除的方法或操作.我遇到问题的地方在于决定何时实际创建一个控制器,而不是只做一个动作,因为它并不总是那么明确.例如,登录控制器与用户/登录,或寄存器控制器与用户/寄存器.对我来说,

另一个例子是,我有大约12个用于创建"计划"的表单页面.在我脑海中,我认为我需要创建一个"计划"控制器,然后每个旧的页面将成为一个动作.所以我有一个控制器有12个动作(方法).对我来说问题是,虽然这些页面中的所有12页都是数据输入表格,但最终构成了这个"计划",这是他们共同拥有的.每个页面在数据库中使用不同的表,并且彼此之间没有任何其他共同点.基本上通过创建一个"计划"控制器,我只是真的使用它作为分组机制; 不一定使用它,因为它们有相互关联的东西.至少在上面的"用户"控制器示例中; 这些行动中的每一个都使用相同的"

我想它只是归结为让我自己使用控制器作为层次结构实体而不是对象/动作.看起来很容易使用控制器以错误的方式陷入陷阱.有谁知道我在说什么?希望它不会太混乱.

编辑:如果我尝试坚持每个视图一个控制器; 然后,我会将每个请求的代码保持在最低限度.这是最好的方法吗?

编辑:从每个人的意见来看,似乎每个视图的一个控制器不符合我的最佳利益.我仍然有一些担忧,因为看起来控制器可能会匆忙变胖,但这是另一个讨论.我还有一些问题,何时决定使用控制器而不是动作.一个很好的例子是堆栈溢出本身.在页面顶部,您有一个"问题"选项,我们可以假设将您带到"问题"控制器.我这样说是因为在右侧您可以选择"提出问题",URL指向"问题/提问".这是有道理的,你使用问题控制器的ask方法.令我困惑的是,您在菜单上有"未答复"选项.它看起来像是一个控制器.为什么它不仅仅是问题控制下的行动,如"问题/未答复"?这就是我变得浑浊的地方.

php model-view-controller controller codeigniter

11
推荐指数
1
解决办法
5195
查看次数

如何在CodeIgniter中扩展帮助程序?

我想在核心string帮助器中添加一些新功能,可以在system/helpers文件夹中找到.我认为有一种'正确'的方法可以使用MY_String_helper,或类似的东西.我不记得究竟是怎么做到的.有关这个问题的任何想法?

php codeigniter

11
推荐指数
2
解决办法
8469
查看次数