CakePHP调用另一个模型错误的函数



我有一个网站在cakephp 2.x中发展我想在控制器中调用这样的另一个控制器的函数:

class ProductsController extends AppController {
    public $name = 'Products';
    public $scaffold;
    public $uses = array('Product','Unit');
        public function testFunction(){
             $this->loadModel('Unit');
             $this->Unit->test();
        }
}

uintcontroller.php的功能测试是:

public function test(){
                 echo("test");
            }

我的型号是产品和单位。当我调用功能测试时,给我一个错误:

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'prova' at line 1

现在在功能中为空,但给我这个错误。我尝试了:

public $uses = array('Unit');

并用$用法取消线。

我该如何解决?

要从另一个控制器调用函数,您可以使用requestAction:

定义

"此函数从任何位置调用控制器的操作,并从操作中返回数据。$ URL传递的是cakepHP相关的URL(/controlerName/actionname/params)。将额外的数据传递到接收控制器操作添加到接收控制器操作。$选项数组"。

用法

这就是您的代码的样子:

class ProductsController extends AppController
{
    public $name = 'Products';
    public $scaffold;
    public $uses = array('Product','Unit');
    public function testFunction() {
        // Calls the action from another controller            
        echo $this->requestAction('/unit/test');             
    }
}

,然后在UnitController中:

class UnitController extends AppController
{
    public function test() 
    {
        return 'Hello, I came from another controller.';
    }
}

警告

如cakephp食谱中所述:

"如果没有缓存请求的使用可能会导致性能差。在控制器或模型中使用很少。

最佳解决方案

但是,最适合您的解决方案是在模型中创建一个函数,然后从控制器中调用:

class ProductsController extends AppController {
    public $name = 'Products';
    public $scaffold;
    public $uses = array('Product','Unit');
    public function testFunction() {
         echo $this->Unit->test();
    }
}

Unit模型:

class Unit extends AppModel
{
    public function test(){
        return 'Hello, I came from a model!';
    }    
}

相关内容

  • 没有找到相关文章

最新更新