我的OOP概念存在问题。我会尽力解释一下。
我有这个班级
class Application_controller extends CI_Controller{
public function addItem(){
"some code to add the item to the database (working)";
}
}
我有另一个班,两个控制员:
require_once 'application_controller.php';
class Contact extends Application_controller{
public function __construct(){
parent::__construct("variables needed");
}
}
在联系人的视图添加中,我添加了以下操作 contact / addItem 。
好的,现在这就是我对OOP的了解。
addItem方法不应该是Contact类的一部分,因为它扩展了Application_controller吗?
我在问,因为当我提交表单时,我没有采取任何行动,当我在类中添加方法addItem时,覆盖其中的父作品。
答案 0 :(得分:1)
你没有采取行动的原因是codeigniter在你的Contact类中找不到方法addItem(更新:这可能是由于CodeIgniter路由的工作方式)。解决方案是使addItem成为模型中的通用方法,该模型将数据存储在表中,将其移动到模型中,并在控制器中加载模型。
创建application / models / writeModel.php
class writeModel extends CI_Model{
function addItem(){
// code here
}
}
在您的控制器中:
class Contact extends Controller{
function __controller(){
parent::Controller();
$this->load->model('writeModel');
}
function somefunction(){
$this->writeModel->addItem(); // call the method here
}
}
答案 1 :(得分:0)
此处的问题(除了OP中的几个语法错误之外)可能是“Contact”无法扩展“Application_controller”,因为它不知道它存在。如果我们设置这样的测试:
<强> /controllers/Test.php 强>
class Test extends CI_Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
echo 'test';
}
}
<强> /controllers/TestTwo.php 强>
require_once("Test.php");
class TestTwo extends Test
{
function __construct()
{
parent::__construct();
}
function index()
{
parent::index();
echo ' and test two';
}
}
我们将通过导航到appurl / TestTwo /获得所需的“测试和测试二”输出。这是因为TestTwo知道Test。删除require();来自TestTwo.php的一行将打破这种关系。
从TestTwo中删除index()函数将导致仅通过导航到appurl / TestTwo /输出“test”。
答案 2 :(得分:0)
我在Codeigniter论坛上找到了一些类似问题的答案。它说这个
您的ShopDownloads将从Shop控制器继承(方法,属性等)。并且如视频教程中所述,您必须从控制器类继承您的类,以便它可以继承codeigniter为您提供的所有属性和方法。
Sohaib,
帖子的链接是http://codeigniter.com/forums/viewthread/102718/#518120
我不知道如何,但这在今天有效。它可能是服务器。只需重新启动。
它解决了,只需启动服务器并开始开发LOL。谢谢你的时间。
此致
Elkas