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

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

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

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

2回答

7479閲覧

cakephpでvalidationのエラーメッセージが表示されない

gomes_2222

総合スコア94

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2020/04/30 02:45

cakephpのバージョン4.0.6を使用しています。
会員登録画面を作っています。
入力に失敗した際にエラーメッセージを表示させたいのですが、それが表示されません。
どこをどう直したらいいのでしょうか?

公式マニュアルなども該当しそうなとこをみましたが、解決の糸口がわかりませんでした。

cakephp

1<?=$this->Form->create($entity, 2 ['type'=>'post', 3 'url'=>['controller'=>'People', 4 'action'=>'add']]) ?> 5<fieldset class="form"> 6 MAIL: <?= $this->Form->error('People.mail') ?> 7 <?=$this->Form->text('People.mail') ?> 8 <?=$this->Form->submit('送信') ?> 9</fieldset> 10<?=$this->Form->end() ?>

cakephp

1<?php 2namespace App\Model\Table; 3 4use Cake\ORM\Query; 5use Cake\ORM\RulesChecker; 6use Cake\ORM\Table; 7use Cake\Validation\Validator; 8 9class PeopleTable extends Table { 10public function validationDefault(Validator $validator): Validator { 11 12 $validator 13 ->scalar('mail', 'テキストを入力下さい。') 14 ->notEmpty('mail') 15 ->email('mail', false, 'メールアドレスを記入下さい。'); 16 17 return $validator; 18 } 19} 20

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

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

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

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

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

guest

回答2

0

自己解決

PeopleController::addが間違っていました。
newEntityにすべきところをnewEMptyEntityにしていたのが原因でした。

投稿2020/04/30 10:48

gomes_2222

総合スコア94

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

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

0

エラーメッセージの表示を含むフォームコンポーネントを作成したい場合は、FormHelper::control() を利用してください。

また、モデル名は不要でフィールド名だけで良いです。
FormHelper::createの第一引数に指定したエンティティのフィールド名を指定すれば良いです。

php

1$this->Form->control('mail');

text(), select()などのメソッドは、入力エレメント(input、selectタグのみ)を表示するだけなので、通常はcontrolメソッドを使用しましょう。

フォームコントロールの作成 Form - 4.x

※4.xのドキュメントは日本語訳がまだ完全ではなく3.xの内容のままの場合がありますので、enも参照してください。

Creating Form Controls Form - 4.x

投稿2020/04/30 03:25

編集2020/04/30 03:31
nojimage

総合スコア959

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

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

gomes_2222

2020/04/30 06:00

ありがとうございます。 $this->Form->error('People.mail') を $this->Form->control('mail'); に差し替えましたが。ダメでした・・ 色々調べてみて <?=$this->Form->control('mail', ['label' => '', 'error' => false]); ?>にしてもダメでした・・ 他のファイルのコードを書き換えなければいけないでしょうか?
nojimage

2020/04/30 08:07 編集

コントローラーの該当アクション(PeopleController::add)のコードも提示してください
gomes_2222

2020/04/30 10:47

そっちか!と思いました。 無事解決しました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問