Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该在哪里编写将由多个模型(cakephp)调用的(通用)函数?_Php_Cakephp_Before Save_Cakephp Model - Fatal编程技术网

我应该在哪里编写将由多个模型(cakephp)调用的(通用)函数?

我应该在哪里编写将由多个模型(cakephp)调用的(通用)函数?,php,cakephp,before-save,cakephp-model,Php,Cakephp,Before Save,Cakephp Model,假设我有Model1和Model2。在每个beforeSave()中,我想调用函数f() 我必须在哪里放置f() 如何在模型的beforeSave()函数中调用它(语法问题) PS:我想做一些事情,比如在保存到数据库之前更改上传文件的名称。我知道如何上传,但不知道将该方法放在何处,以便在其他模型中使用。A行为具有可以挂接的事件-其中一个是beforeSave()回调 创建一个行为并将其附加到需要该行为的模型 有关详细信息,请参阅。一个行为具有可以挂接到的事件-其中一个事件是beforeSave(

假设我有Model1Model2。在每个beforeSave()中,我想调用函数f()

  • 我必须在哪里放置f()
  • 如何在模型的beforeSave()函数中调用它(语法问题)

  • PS:我想做一些事情,比如在保存到数据库之前更改上传文件的名称。我知道如何上传,但不知道将该方法放在何处,以便在其他模型中使用。

    A
    行为
    具有可以挂接的事件-其中一个是
    beforeSave()
    回调

    创建一个行为并将其附加到需要该行为的模型


    有关详细信息,请参阅。

    一个
    行为
    具有可以挂接到的事件-其中一个事件是
    beforeSave()
    回调

    创建一个行为并将其附加到需要该行为的模型

    有关更多信息,请参阅。

    好问题

    您可以使用AppModel.php

    <?php
      class AppModel extends Model{
    
        function f1($arg){
               // some code     
        }
      }
    ?>
    
    
    
    从model1和model2中,您可以如下所示调用它:

    <?php
      class Model1 extends AppModel{
    
        function beforeSave(){
             $this->f1($arg1);
               // some code     
        }
      }
    ?>
    
    
    
    我认为这将解决上述问题

    问得好

    您可以使用AppModel.php

    <?php
      class AppModel extends Model{
    
        function f1($arg){
               // some code     
        }
      }
    ?>
    
    
    
    从model1和model2中,您可以如下所示调用它:

    <?php
      class Model1 extends AppModel{
    
        function beforeSave(){
             $this->f1($arg1);
               // some code     
        }
      }
    ?>
    
    
    

    我认为这将解决上述问题

    工作得很有魅力!非常感谢。这已经解决了我的问题,但出于好奇,如果我想对许多模型和许多控制器(一些有用的函数,如strtolower函数)使用f1(),我需要做任何更改吗?当Model class扩展App Model时,可以在所有模型中使用f1(),但如果是controller,则必须在AppController中创建相同的函数,因为从控制器你们不能直接访问模型的函数,你们必须使那个类的对象……工作得很有魅力!非常感谢。这已经解决了我的问题,但出于好奇,如果我想对许多模型和许多控制器(一些有用的函数,如strtolower函数)使用f1(),我需要做任何更改吗?当Model class扩展App Model时,可以在所有模型中使用f1(),但如果是controller,则必须在AppController中创建相同的函数,因为从控制器不能直接访问模型的函数,所以必须使该类的对象。。。。