好的,所以我在CodeIgniter 灵活性方面遇到了一个大问题。我有许多个人规则(如 20 条)针对大型项目中表单中的输入。
当我使用 CodeIgniter 的经典“callback_”系统时,一切正常。我只是将方法放在与表单检查相同的类中,并且它会正确检查。
我的问题是:
1)我想在另一个控制器的另一个 form_validation 中使用所有这些规则,而无需复制/粘贴代码;我们都知道这是肮脏/邪恶的。
2) 理想情况下,我希望将这些规则放在一个大库中,因为它需要大约 800 行,而将其放在我的控制器中并不是一个好主意;正如我所说,这个项目非常庞大。
我正在寻找解决方案 6 小时,但绝对没有什么干净的:
我已经有一个MY_Form_Validation来放置一些通用规则,但我不喜欢将我的特定规则混合在一个全局类中,这样每次都会徒劳地调用它。此外,这些规则包含许多库、模型、本机 CI 核心方法,例如 $this->input->post(),当我将所有内容放入此 MY_Form_Validation 时会产生错误。不是好的解决方案:(
我创建了一个MY_Controller,包括一个名为“imports”的方法,该方法在控制器中重新生成选定的库方法(在 PHP4 中,如果人们好奇,它是一种“aggregate_methods”函数);该系统运行良好,但 CodeIgniter 不理解它。这些方法可以在控制器内调用,但似乎框架检查 $CI 内容以调用规则('/system/' 中的 Form_validation.php 第 590 行),因此它最终不起作用;这个核心部分也很难修改,我宁愿不碰它也放弃了。
$this->load->library('volt/lbl_validation'); $this->imports('Lbl_validation'); // 然后你可以在控制器中使用 $this->method() 调用任何 $this->lbl_validation->method()
- 我试图破解 CI 在我的库中创建一个自定义的 form_validation ('lbl_validation');该系统有点混乱,但工作正常。问题是当我回到 CI form_validation 系统显示错误消息时,它是一个真正的意大利面条代码,它运行得不是很好。也不是好的解决方案。
我还尝试了其他一些糟糕的解决方案,但我不想承认。
现在我在电脑前问自己为什么坏事会发生在好人身上,为什么很难将 set_rules 与 CodeIgniter 中的调用方法分开,为什么他们没有提前计划人们可能需要调用库方法作为规则。我不知道该怎么做,我正在犹豫是否将一个愚蠢的 require() 放在某个地方,让它像我现在的办公桌一样变得又脏又乱。
也许,有人有一个好的 dans clean 解决方案。我所有的希望都寄托在 StackOverFlow 社区;有人?一个疯狂的 CI 极客?
谢谢 ;)