質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Phalcon

Phalconは、C言語で作られたPHPフレームワークです。 C言語で書かれているため、PHP Moduleとして動作するので、 他のフレームワークに比べて高速というのが特徴です。

Q&A

解決済

2回答

590閲覧

[PHP][Phalcon]Phalcon-devtoolsで生成したModelのNot Null項目に対するエラーメッセージの上書き方法

lashca

総合スコア8

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Phalcon

Phalconは、C言語で作られたPHPフレームワークです。 C言語で書かれているため、PHP Moduleとして動作するので、 他のフレームワークに比べて高速というのが特徴です。

0グッド

0クリップ

投稿2017/11/29 07:32

編集2017/11/29 21:32

###質問内容
Phalcon-devtoolsで生成したModelについて、テーブル定義上でNot Null制約が設定された項目は「PresenceOf」のValidationルールが自動で設定されますが、同時にPresenceOfエラー時のメッセージ「name is required」のように自動されてしまいます。
PresenceOfのValidationルールはそのままで良いのですが、このエラーメッセージを上書きする方法をご教示ください。

###概況

  • Phalcon-devtoolsにより以下のコマンドで、Modelを生成。
phalcon model user
  • Validationルールは特別に設定しなくても、Not Nullの入力項目「name」に対して入力しない状態でsaveすると、エラーが発生し、「name is required」のメッセージを取得可能。
  • エラーメッセージを独自の文字列にするため、Userモデルに以下を追加。
$validator = new Validation(); $validator->add( 'name', new PresenceOf([ 'message' => "入力必須", ]) );
  • エラーメッセージとして「入力必須」を取得する想定であったが、結果は変わらず「name is required」を取得してまう状態。

###ソースコード

PHP

1<?php 2 3use Phalcon\Mvc\Controller; 4use Phalcon\Validation; 5use Phalcon\Validation\Validator\PresenceOf; 6 7class User extends ModelBase 8{ 9 /** 10 * 11 * @var string 12 * @Column(type="string", length=767, nullable=false) 13 */ 14 public $name; 15 16 public function validation() 17 { 18 $validator = new Validation(); 19 20 $validator->add( 21 'name', 22 new PresenceOf([ 23 'message' => "入力必須", 24 ]) 25 ); 26 27 return $this->validate($validator); 28 } 29 30 /** 31 * Initialize method for model. 32 */ 33 public function initialize() 34 { 35 $this->setSchema("lashca"); 36 $this->setSource("user"); 37 } 38 39 /** 40 * Returns table name mapped in the model. 41 * 42 * @return string 43 */ 44 public function getSource() 45 { 46 return 'user'; 47 } 48 49 /** 50 * Allows to query a set of records that match the specified conditions 51 * 52 * @param mixed $parameters 53 * @return User[]|User|\Phalcon\Mvc\Model\ResultSetInterface 54 */ 55 public static function find($parameters = null) 56 { 57 return parent::find($parameters); 58 } 59 60 /** 61 * Allows to query the first record that match the specified conditions 62 * 63 * @param mixed $parameters 64 * @return User|\Phalcon\Mvc\Model\ResultInterface 65 */ 66 public static function findFirst($parameters = null) 67 { 68 return parent::findFirst($parameters); 69 } 70 71} 72

###環境

  • CentOS 7.4(x64)
  • Apache 2.4.6
  • PHP 7.0.26
  • Phalcon Framework 3.2.4
  • MySQL Ver 14.14 Distrib 5.6.38

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

Stack Overflowにて解決したました。当該回答内容はこちら

デフォルトのPresenceOfルールを無効化する、以下のコードを実装して対応しました。

PHP

1public function beforeValidationOnCreate() { 2 $this->setup(array('notNullValidations' => false)); 3}

投稿2017/12/01 06:17

lashca

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ザクっと見たが

getValidators
チェックの更新
setValidators

でメッセージの更新などは可能によめる
※ドキュメント読んだノミ

国際化対応でメッセージファイルがあるかもしれない

ちなみにaddは追加なのでチェックが二重化しているのかと

投稿2017/11/29 23:55

num79kill

総合スコア50

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問