【发布时间】:2016-11-30 04:35:48
【问题描述】:
我是一名 Java 开发人员(我经常使用 Spring MVC 在 Java 中开发 MVC Web 应用程序),对 PHP 的了解很少,我必须从事一个使用 CodeIgniter 2.1.3的 PHP 项目>.
所以我对控制器在 CodeIgniter 中的工作方式有些疑问。
1) 在 Spring MVC 中,我有一个带有一些注释方法的控制器类,每个方法处理一个特定的 HTTP 请求(注释定义了该方法处理的 URL)并返回必须显示的视图的名称。
看了CodeIgniter的官方文档,感觉这个框架的逻辑很不一样:https://www.codeigniter.com/userguide3/general/controllers.html#what-is-a-controller
所以它似乎明白 CodeIgniter 是一个类,它处理具有相同名称的应用程序的单个 URL 的类名。对吗?
所以我有这门课:
class garanzieValoreFlex extends CI_Controller {
.....................................................
.....................................................
.....................................................
function __construct() {
parent::__construct();
$this->load->helper(array('form', 'url'));
$this->load->library(array('form_validation','session'));
}
public function reset() {
$this->session->unset_userdata("datiPreventivo");
$this->load->view('garanziavalore/garanzie_valore_questionario_bootstrap',array());
}
public function index() {
$this->load->model('Direct');
$flagDeroga = "true" ;
$this->session->userdata("flagDeroga");
$data = $this->session->userdata("datiPreventivo");
$this->load->model('GaranzieValoreFlexModel');
$data = $this->session->userdata("datiPreventivo");
$this->load->model('GaranzieValoreFlexModel');
$this->load->view('garanziavalore/index_bootstrap',$data);
}
public function back() {
$this->load->model('Direct');
$flagDeroga = "true" ;
$this->session->userdata("flagDeroga");
$data = $this->session->userdata("datiPreventivo");
$this->load->model('GaranzieValoreFlexModel');
//$this->load->view('garanziavalore/garanzie_valore_questionario_bootstrap',$data);
$this->load->view('garanziavalore/index_tornaIndietro_bootstrap',$data);
}
.....................................................
.....................................................
.....................................................
}
所以,据我了解,基本上这个控制器只处理对 URL 的 HTTP 请求:http://MYURL/garanzieValoreFlex。
因此,据我了解,当我访问上一个 URL 时执行的方法是 index(),即这一行:
$this->load->view('garanziavalore/index_bootstrap',$data);
显示我在我的 prohect 的 views 目录中找到的 garanziavalore/index_bootstrap.php 页面(这是必须进入 views 的标准吗? 目录?)
我的推理正确吗?
如果是,我正在加载传递给 id 的视图以及 $data 变量,我认为该变量是包含可以在页面中显示的数据的模型,该变量通过以下方式检索:
$data = $this->session->userdata("datiPreventivo");
这条线到底是什么?
最后一个疑问与我在上一个控制器中找到的另一个 back() 方法有关:它是 CodeIgniter CI_Controller 类的方法还是完全自定义的方法由在我之前开发此应用程序的开发人员?
【问题讨论】:
标签: php codeigniter codeigniter-2