2016-04-22 11 views
0

私はCakePHP3を使用し、2つの質問持っている:私は、文字列から数字だけを返す、「onlyNumbers()」のようなグローバル関数を置くことができますCakePHP 3 - グローバル関数とモデル/コントローラへのアクセスはどこにありますか?

  • を。私はコントローラとエンティティでこの関数を使用します。
  • ユーザー入力とは異なるDBに変更値を挿入するにはどうすればよいですか?たとえば、郵便番号のような入力フィールドがあり、xxxxx-xxxのようなjsマスクがあり、ユーザがそれを送ると、cakephpはドットとダッシュで文字列を受け取ります。 DBに数字だけを挿入したい。

エンティティに「_setZipCode()」関数を追加して文字列の変更を直接行うことはできますが、グローバル関数「onlyNumbers()」にアクセスするにはどうすればよいですか?

ありがとうございます!

+2

を持っていたい場合は、あなたがモデルを追加することができますケーキでbootstrap.phpの – CodeZilla

+0

アプリケーションで機能を置くことができます'$ this-> myMethod()'と '$ this-> Model-> myMethod();によってコントローラからアクセス可能な' AppModel.php'ファイルへのメソッド ' AppController.php'、これはコントローラによってのみアクセス可能です。 –

答えて

0

ここでは、 "onlyNumbers()"のようなグローバル関数を置くことができますが、文字列から数値だけを返します。私はコントローラとエンティティでこの関数を使用します。

これはバリデーターの内部で行う必要があるように聞こえます。 See this link

実際ににはグローバル関数が必要ですが、bootstrap.phpに入れておきますが、私はOOPのままにして、適切な場所とコンテキストにコードを置きます。

DBのユーザー入力と異なる値に変更値を挿入するにはどうすればよいですか?例えば、郵便番号のような入力フィールドがあり、xxxxx-xxxのようなjsマスクがあり、ユーザーがそれを送ると、cakephpはドットとダッシュで文字列を受け取ります。 DBに数字だけを挿入したい。

このは、です。公式文書のこの章を読んだことがありますか?

2はあなたのユースケースのために使用することができ、多分3つのルール、すでにあります

2

あなたはのsrc /コントローラ/コンポーネント/ GlobalComponentの 'コンポーネント'

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

を使用することができます。YourControllerまたは中のAppControllerで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アクセス

class YourController extends Controller 
{ 

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


    public function yourAction() 
    { 

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

    } 
} 
関連する問題