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

[核心代码 Core] [3.0.6]为 CI 增加 HMVC 支持【更新日期:2016.4.25】

    [复制链接]
发表于 2013-5-16 13:51:22 | 显示全部楼层
My_Controller extends  CI_Controller,  我在 My_Controller 中的public 变量 ,如何在hmvc modules的Controller中访问 这个public 变量,请增加这个功能.
发表于 2013-5-16 13:56:07 | 显示全部楼层
如何 模块中的controllers 中 访问 全局变量
发表于 2013-5-21 14:39:14 | 显示全部楼层
本帖最后由 imhuzi 于 2013-5-21 18:37 编辑

加上HMVC后,原来的表单验证用不了了。我吧所有验证规则放在了:config/form_validation.php里,如下:
  1. $config = array(
  2.     'account/signin/session'=>array(
  3.       array(
  4.           'field'=>'login_key',
  5.           'label'=>'邮箱地址',
  6.           'rules'=>'trim|required|valid_email|xss_clean',
  7.       ),
  8.       array(
  9.           'field'=>'password',
  10.           'label'=>'登录密码',
  11.           'rules'=>'trim|callback_md5password_check|required',
  12.       ),
  13.     ),
  14.     'app/permission/user/add'=>array(),
  15. )
复制代码
account是controller,
account的代码如下:
  1. class Account extends CI_Controller {
  2.     //put your code here
  3.     function __construct() {
  4.         parent::__construct();
  5.         $this->load->model('Account_model');
  6.         $this->load->library('form_validation');
  7.     }

  8.     public  function index(){
  9.             $this->load->view('account/signin');
  10.     }

  11.     /**
  12.      * 登录
  13.      */
  14.     public function signin($slug = '') {
  15.         if ($slug !== 'session') {
  16.             $this->load->view('account/signin');
  17.         } else {
  18.             //登录表单验证
  19.             $this->load->helper('url');
  20.             $valid_flag = $this->form_validation->run();

  21.             //登录处理
  22.             $signin_flag = false;
  23.             if($valid_flag!=FALSE){
  24.                $signin_flag = $this->Account_model->do_signin();
  25.             }
  26.          
  27.            if (!$valid_flag || !$signin_flag) {
  28.                 //设置提示信息并跳转
  29.                 $this->session->set_flashdata('validation_error_messages',  validation_errors_array());
  30.                 setFlash_Message('error', 'Email Account or Password error.');
  31.                 redirect('/account/signin');
  32.             } else {
  33.                 redirect('/app/');
  34.             }
  35.         }
  36.     }
  37.    
  38.     public function  signout(){

  39.     }

  40.     /**
  41.      * 检查md5密码是否正确
  42.      * @param type $str
  43.      * @return boolean
  44.      */
  45.     public function md5password_check() {
  46.         $pass = $this->input->get_md5PasswordValue('password');
  47.         if ($pass == -1 || empty($pass)) {
  48.             $this->form_validation->set_message('md5password_check', '密码不能为空');
  49.             return FALSE;
  50.         } else {
  51.             return TRUE;
  52.         }
  53.     }
  54. }
复制代码
我跟踪调试后发现:在CI_Form_validation.php里的run方法去不到验证规则,不知道是什么问题,Hex大神...
发表于 2013-6-25 04:50:09 | 显示全部楼层
不错 、这个很像phpcms的modules
发表于 2013-7-1 13:23:48 | 显示全部楼层
学习,顺便标记一下以便以后查看
 楼主| 发表于 2013-7-1 13:28:31 | 显示全部楼层
imhuzi 发表于 2013-5-21 14:39
加上HMVC后,原来的表单验证用不了了。我吧所有验证规则放在了:config/form_validation.php里,如下:accou ...

表单验证类只能关联到控制器/方法吧 你这个已经是三级了,不能关联到参数,你再看看。

发表于 2013-7-2 11:22:04 | 显示全部楼层
问下这里是不是写错了
QQ截图20130702111354.jpg
我这么写提示错误找不到module_url
改成
$this->load->module_url('要访问的方法名/参数1/..../参数n', '控制器名');
才不会报错。
但是这么写有会出现 QQ截图20130702111614.jpg
这该怎么解决?直接用site_url好像不返回内容
发表于 2013-8-6 11:49:31 | 显示全部楼层
学习一下
 楼主| 发表于 2013-8-7 14:42:47 | 显示全部楼层
kinwyb 发表于 2013-7-2 11:22
问下这里是不是写错了

我这么写提示错误找不到module_url

这是用在视图里的,我在说明里也说明要在视图里使用。
不能用在控制器中。
本身我写的 HMVC 就是用在视图里的,类似 widget 的概念。
发表于 2013-8-20 08:49:17 | 显示全部楼层
Hex 发表于 2013-8-7 14:42
这是用在视图里的,我在说明里也说明要在视图里使用。
不能用在控制器中。
本身我写的 HMVC 就是用在视图 ...

额,谢谢指导

本版积分规则