2016-03-05 160 views
1

我想从另一个控制器加载一个功能。这是我的结构:从另一个控制器使用控制器CodeIgniter和HMVC

- modules 
--orderpages 
---controllers 
----WebshopCore.php 
----WebshopController.php 

在WebshopController.php我的功能insertItemInCart被调用。但是当我想从另一个控制器执行一个函数时,它会崩溃。

class WebshopController extends MX_Controller { 
    public function __construct() { 
     parent::__construct(); 
     $this->load->module('orderPages/WebshopCore'); 
    } 

    function insertItemInCart(){ 
     $partId = $this->input->post('partId'); 
     $quantity = $this->input->post('quantity'); 

     $output = $this->WebshopCore->getPickLocations($partId,$quantity); 

    } 
} 

我WebshopCore:

class WebshopCore extends MX_Controller { 
    public function __construct() { 
     parent::__construct(); 
    } 

    public function getPickLocations($partId,$amount){ 
     $result = "test"; 

     return $result; 
    } 
} 

错在何处?我不明白这一点

解决办法:

$output = modules::load('orderPages/WebshopCore/')->getPickLocations($partId,$quantity); 
+0

IMO,调试:'的var_dump($这个 - > WebshopCore, __FILE __.__ LINE __);紧接在'$ output = ....'之前。 Yopu应该看到WebshopCore对象。 –

+0

@RyanVincent NULL字符串(107)“/Applications/AMPPS/www/cart.local/application/modules/orderPages/controllers/WebshopController.php19”这就是我回到 – da1lbi3

+0

@RyanVincent我已经做到了 – da1lbi3

回答

0

你应该写在这种情况下,一个图书馆。

在应用程序/库创建Cart.php(或任何你想要的)

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Cart 
{ 
    protected $ci; 

    public function __construct() 
    { 
     $this->ci =& get_instance(); 
    } 

    public function getPickLocations($partId, $qty) 
    { 
     //Your stuff 
    } 

} 

然后在你的控制器:

$this->load->library("cart"); 
$data = $this->cart->getPickLocations($this->input->post('partId'), $this->input->post('quantity')); 
+0

是的,这是一个选项,但我已阅读这篇文章http://stackoverflow.com/questions/14947261/codeigniterhmvc-跨模块调用控制器方法是hmvc模型可以在更短的时间内完成此任务。 – da1lbi3

相关问题