CakePHP 3 - 在模型/控制器上放置全局函数和访问权限?

时间:2016-04-22 02:30:18

标签: php function cakephp model helper

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

  • 我可以在哪里放置像“onlyNumbers()”这样的全局函数,只返回字符串中的数字。我将在控制器和实体中使用此功能。
  • 如何在不同用户输入的DB中插入修改值?让我们举一个例子:我有一个输入字段(如邮政编码),js掩码如: xxxxx-xxx ,当用户发送它时,cakephp会收到带点和短划线的字符串。我想只插入DB数字。

我不知道它是否正确,但我认为向实体添加“_setZipCode()”函数并直接进行字符串修改,但是如何访问“onlyNumbers()”全局函数?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用'组件'

http://book.cakephp.org/3.0/en/controllers/components.html

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;
    }
}

YourController AppController 中加载组件(如果您想要获得golbal访问权限)

class YourController extends Controller
{

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


    public function yourAction()
    {

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

    }
}

答案 1 :(得分:0)

  

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

这听起来像是要进行验证,应该在验证器内完成。 See this link

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

  

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

验证。您是否阅读过官方文档的这一章?

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