Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.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 3-模型/控制器的全局函数和访问权放在哪里?_Php_Function_Cakephp_Model_Helper - Fatal编程技术网

CakePHP 3-模型/控制器的全局函数和访问权放在哪里?

CakePHP 3-模型/控制器的全局函数和访问权放在哪里?,php,function,cakephp,model,helper,Php,Function,Cakephp,Model,Helper,我正在使用CakePHP3,有两个问题: 在哪里可以放置全局函数,比如“onlyNumbers()”,只从字符串返回数字。我将在控制器和实体中使用此函数 如何在用户输入的不同DB中插入修改值?让我们举个例子:我有一个输入字段(如邮政编码),js掩码为:xxxxx-xxx,当用户发送它时,cakephp接收带有点和破折号的字符串。我只想在DB中插入数字 我不知道这是否正确,但我认为向实体添加“_setZipCode()”函数并直接修改字符串是可行的,但我如何访问“onlyNumbers()”全

我正在使用CakePHP3,有两个问题:

  • 在哪里可以放置全局函数,比如“onlyNumbers()”,只从字符串返回数字。我将在控制器和实体中使用此函数
  • 如何在用户输入的不同DB中插入修改值?让我们举个例子:我有一个输入字段(如邮政编码),js掩码为:xxxxx-xxx,当用户发送它时,cakephp接收带有点和破折号的字符串。我只想在DB中插入数字
我不知道这是否正确,但我认为向实体添加“_setZipCode()”函数并直接修改字符串是可行的,但我如何访问“onlyNumbers()”全局函数呢

谢谢

在哪里可以放置全局函数,比如“onlyNumbers()”,只从字符串返回数字。我将在控制器和实体中使用此函数

这听起来像是要进行验证,应该在验证器中完成

如果您真的需要一个全局函数,请将其放在bootstrap.php中,但我会保持OOP,并将代码放在正确的位置和上下文中

如何在用户输入的不同DB中插入修改值?让我们举一个例子:我有一个输入字段(如邮政编码),js掩码为:xxxxx-xxx,当用户发送它时,cakephp接收带有点和破折号的字符串。我只想在DB中插入数字

这是验证。你读过官方文件的这一章吗

对于您的用例,已经有两个,也许三个规则可以使用:

在哪里可以放置全局函数,比如“onlyNumbers()”,只从字符串返回数字。我将在控制器和实体中使用此函数

这听起来像是要进行验证,应该在验证器中完成

如果您真的需要一个全局函数,请将其放在bootstrap.php中,但我会保持OOP,并将代码放在正确的位置和上下文中

如何在用户输入的不同DB中插入修改值?让我们举一个例子:我有一个输入字段(如邮政编码),js掩码为:xxxxx-xxx,当用户发送它时,cakephp接收带有点和破折号的字符串。我只想在DB中插入数字

这是验证。你读过官方文件的这一章吗

对于您的用例,已经有两个,也许三个规则可以使用:


您可以使用“组件”

src/Controller/Components/GlobalComponent.php中

namespace App\Controller\Component;

use Cake\Controller\Component;

class GlobalComponent extends Component
{
    public function onlyNumbers($string)
    {

       //Do something to get numbers or what you want

       return $result;
    }
}
如果希望具有golbal访问权限,请在YourControllerAppController中加载组件

class YourController extends Controller
{

    public function initialize()
    {
        parent::initialize();
        $this -> loadComponent('Global');
    }


    public function yourAction()
    {

       $only_numbers = $this -> Global -> onlyNumbers('ABC123BCA');

    }
}

您可以使用“组件”

src/Controller/Components/GlobalComponent.php中

namespace App\Controller\Component;

use Cake\Controller\Component;

class GlobalComponent extends Component
{
    public function onlyNumbers($string)
    {

       //Do something to get numbers or what you want

       return $result;
    }
}
如果希望具有golbal访问权限,请在YourControllerAppController中加载组件

class YourController extends Controller
{

    public function initialize()
    {
        parent::initialize();
        $this -> loadComponent('Global');
    }


    public function yourAction()
    {

       $only_numbers = $this -> Global -> onlyNumbers('ABC123BCA');

    }
}

您可以将该函数放在应用程序bootstrap.phpIn中。您可以将模型方法添加到
AppModel.php
文件中,然后通过
$this->myMethod()
$this->model->myMethod()在任何模型中访问该文件
同样适用于
AppController.php
,但这只能由控制器访问。您可以将该函数放在应用程序bootstrap.phpIn中。您可以将模型方法添加到
AppModel.php
文件中,然后可以通过
$this->myMethod()在任何模型中访问该文件
和控制器由
$this->Model->myMethod()
同样适用于
AppController.php
,但这只能由控制器访问。