【发布时间】:2019-07-03 02:16:00
【问题描述】:
我正在使用 CodeIgniter 并尝试制作一个自定义控制器来扩展我的所有控制器。然后它将把它传递给一个布局,除了主页之外的所有代码都将是。我希望有人能告诉我我做错了什么。下面是我如何设置它以及每个控制器和视图的代码。
我做了一个MY_Controller,所以我可以从中扩展我所有的控制器。在MY_Controller 内部,我添加了一个名为loadView 的公共函数。下面是代码。
然后我从它扩展了我的Contact 控制器并调用loadView 并传递了一些变量。请参阅下面的代码。
在我的布局/主视图中,它不会看到任何变量。下面是查看标题的sn-p。
class MY_Controller extends CI_Controller
{
// protected $trainedJobs = array();
public function __construct()
{
parent::__construct();
}
public function loadView($layout = "main", $title = "What Do I Work", $page = "index", $xtraCSS = null, $xtraJS = null, $hideNavbar = false)
{
$data['$_title'] = $title;
$data['$_view'] = $page;
$data['$_xtraCSS'] = $xtraCSS;
$data['$_xtraJS'] = $xtraJS;
$data['$_hideNavbar'] = $hideNavbar;
$this->load->view('layouts/' . $layout, $data);
}
}
我的联系人控制器
class Contact extends MY_Controller
{
public function index()
{
$this->loadView('main',"Contact Us", 'contact', 'base_url("assets/css/contact-us.css")');
}
}
在我的主布局视图中
<!DOCTYPE html>
<html>
<head>
<title><?php if (isset($_title)) echo $_title; ?></title>
</head>
<body>
<?php if (isset($_view) && $_view)
$this->load->view($_view);
?>
</body></html>
【问题讨论】:
-
注意到你的合约控制器上有
4 parameters,而你的自定义控制器上有6 parameters。那显然是有错误了。 -
@Roshan 所有
loadView()参数都是可选的,因此您可以使用0-6 个参数来调用它。
标签: php codeigniter