我正在使用CodeIgniter访问各种表单类型
我有一个这样的目录:
-views
--resources
---app1
----form.php
---app2
----form.php
---app3
----form.php
---app4
----form.php
我的课程目前非常基础,但这
class Resources extends CI_Controller {
public function app1($page = '')
{
$data['title'] = ucfirst($folder); // Capitalize the first letter
$this->load->view('templates/header', $data);
$this->load->view('resources/app1/form.php', $data);
$this->load->view('templates/footer', $data);
}
public function app2($page = '')
{
$data['title'] = ucfirst($folder); // Capitalize the first letter
$this->load->view('templates/header', $data);
$this->load->view('resources/app2/form.php', $data);
$this->load->view('templates/footer', $data);
}
}
这似乎很冗长,也不需要为每种形式都提供一个方法。但是我找不到不创建新方法就如何更改目录的方法。理想情况下,我希望可以像$ page这样的arg传入新目录。例如:
class Resources extends CI_Controller {
public function view($page = '')
{
$data['title'] = ucfirst($folder); // Capitalize the first letter
$this->load->view('templates/header', $data);
$this->load->view('resources/'. $folder. '/form.php', $data);
$this->load->view('templates/footer', $data);
}
}
但是,似乎CodeIgniter不允许这样做。谁能建议一种可行的方法?
答案 0 :(得分:0)
将函数称为“视图”几乎肯定不是一个好主意... CI将此用于启动器的$ this-> load-> view()。
public function app_form($page = '')
{
$data['title'] = ucfirst($folder); // Capitalize the first letter
$this->load->view('templates/header', $data);
$this->load->view('resources/'. $page. '/form.php', $data);
$this->load->view('templates/footer', $data);
}
应该可以,但是如何调用这些函数?通过routes.php文件?
答案 1 :(得分:0)
实际上可以。
在base_controller
文件夹中创建一个core
,并将其命名为MY_Controller.php
,使其扩展CI_Controller
,并在MY_Controller
中创建一个方法,并将其命名为{{ 1}}并在函数内部加载所需内容,以布局局部和模板,然后将视图传递给它:render, render_view, view
application/core/MY_Controller.php
,并为应用程序中的每个控制器扩展class MY_Controller extends CI_Controller {
protected $data = array();
public function render_view($view = '')
{
$this->load->view('templates/header', $this->data);
$this->load->view('view_path/'. $view, $this->data);
$this->load->view('templates/footer', $this->data);
}
}
,每当您想要渲染视图时,就使用MY_Controller
,并预先加载render_view($view)
和header
,这就是使它变干的最简单方法。
最后在您的控制器中应该是这样的:
footer
}