問題タブ [cakephp-3.1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cakephp - 非列入力フィールドのエラーを報告する方法
イベントのバッチを作成するためのフォームがあります。名前、説明、場所、開始時間と終了時間の入力があり、これらはすべてイベント テーブルの列です。、などdates.0.date
のフィールド名を使用して、日付の入力も多数あります。dates.1.date
保存プロセスは、送信された入力の日付配列をループし、残りのデータとそれぞれの日付を含むエンティティを作成して保存します。つまり、結果のエンティティには、名前、説明、場所、開始、終了、および日付というフィールドが含まれます。transactional
(それが明確であることを願っています!) この部分はうまく機能し、すべてが成功した場合にのみイベントが保存されるように関数にラップされています。
問題は、無効な日付が指定された場合です。エンティティは保存されず、エラーは に正しく配置されてい$e->errors('date')
ます。しかし、そのエラーを日付ごとにユーザーに報告する方法がわかりません。エンティティのドキュメントから推定し、他の場所で標準的なドット表記を使用して、 を試し$event->errors("dates.$i.date", $e->errors('date'));
、ビューがレンダリングされたとき (つまり、 を使用した場合) に、そのようなエラーがエンティティのエラーのリストに保存されることを確認しましたdebug($event->errors());
。しかし、入力フィールドを作成すると、日付が間違っていてもエラー メッセージは表示されません。それらにはすべて送信された値が含まれていますが、エラーはありません。
フィールド名のベースに "dates" の代わりに "date" を使用して (例:date.0.date
の代わりにdates.0.date
)、"dates" がテーブルの列ではないためにエラー チェックをスキップしているかどうかを確認しましたが、これにより残りのデータを検証する時点で検証エラーが発生したため、そのオプションをそれ以上追求しませんでした。
関連するエンティティにエラーを設定するコードが他の場所にあり、この状況に変換すると のようになりますが$event->dates[0]->errors($e->errors('date'));
、$event
日付と呼ばれるものに関連付けられていないため、ここでこれを機能させる方法がわかりません。dates
エンティティに配列として作成してみたの$event
ですが、代入$event['dates'][$i] = $this->Events->newEntity(...);
すると「オーバーロードされた要素を間接的に変更しても効果がありません」というPHP警告が出て、エンティティが捨てられてしまいます。おそらく、手動で ArrayContext オブジェクトを作成し、それにエラーを割り当てますか? それを行う方法はすぐにはわかりません。
php - コントローラCakePhp 3で許可されているページを確認するには?
現在のページがログアウトしたユーザーに許可されているかどうかを確認する、作成しようとしているログアウト関数があります。そうであれば、私はページにとどまります。そうでなければ、ホームページにリダイレクトします。現在のページが許可されているかどうかを確認する方法を知りたいと思っていました。次のコードで承認されているかどうかを確認できます。
しかし、現在のページが許可されているかどうかを確認できません:
php - ブラウザ ウィンドウを閉じた後も、ユーザーをログインしたままにします
私app.php
は持っています:
私が達成したいのは、ユーザーの行動に関係なくユーザーがログインできるようにすることです。これは、ユーザーが手動でログアウトすることを選択しない限り、2 週間ログインしたままにする必要があることを意味します。ブラウザ ウィンドウを閉じても、サーバーからログアウトされません。
現在、ブラウザ ウィンドウを閉じると、ユーザーがログアウトされます。
どうすればこれを防ぐことができますか?
php - newEntities() CakePhp 3.xで複数のレコードを保存するときに検証を取得するには?
何らかの理由で、複数のレコードを保存するときに検証エラーが発生しません。print_r($user->errors()); を使用してエラーを取得できます。ただし、単一のユーザーを追加するときのように、フォームに自動的に挿入されることはありません。ドキュメントによると、「保存前のエンティティの検証は、newEntity()、newEntities() を使用すると自動的に行われます。」複数のレコードの検証を返すようにフォームを設定する特定の方法があるかどうか、またはインデックスを持つ入力のモデルで特別な検証を行う必要があるかどうかはわかりません。
見る:
コントローラ:
テーブル:
public function initialize(array $config) {parent::initialize($config);
cakephp - CakePHP 3.1 でベイクされたプラグインの Missing Controller エラー
CakePHP 3.1 を新規インストールしました。次に、プラグインを焼きました。次に、プラグイン コントローラーを焼きました。
ドキュメントの例に従って実行: http://book.cakephp.org/3.0/en/plugins.html#creating-your-own-plugins
しかし、/cake-cms/cake-cms にアクセスすると、Missing Controller エラーが発生します。
焼き付けられたコードはすべて私にはうまく見えます。ベイクされたプラグインの routes.php が実行されています (exit; でテストしました)。ベイクされたコントローラは /plugins/CakeCms/src/Controller/CakeCmsController.php にありますが、CakePHP はそこを探していません。
ドキュメントの例は、それがうまくいくはずだと言っています。
php - CakePHP を使用して日付範囲を照会するために FriendsOfCake\Search を実装すると致命的なエラーが発生する
FriendsOfCake\Search
プラグインを CakePHPに実装しようとしています。検索タイプを正しく実装したかどうか 100% 確信があるわけではありませんが、フォームを送信して日付を使用して検索しようとすると、次の致命的なエラーが発生します。
エラー: オブジェクト以外でのメンバー関数 format() の呼び出し
途中で日付が日付オブジェクトとしてフォーマットされていないと想定していますが、どこでそれを行う必要があるかはわかりません。ここに私が取り組んでいるコードスニペットがあります。
UsersTable.php -searchConfiguration()
メソッドの内部
index.ctp - 私のフォームの生成
それだけだと思います。フォームの一部として機能するテキスト ボックスと選択ボックスがあります。
エラーメッセージのスタックトレースは次のとおりです(これが求められていたものだと思います。これは私のページの左側の列です。
完全な Error ブロックは次のように述べています。
DataTimeType.php の 94 行目は toDatabase() メソッドの一部です。データベースで使用するために日時オブジェクトを文字列に変換しようとしています。特に94行目
Cake バージョン 3.1.0 の使用
php - Cakephp3: $this->Auth->user('id') in AppController
AppController で $this->Auth->user('id') を使用すると、特定の問題に行き詰まりました。次のエラーが返されます: エラー: null のメンバー関数 user() への呼び出し
今私がやりたいことは、すべての人に適切なプロフィールを取得するよう強制したいということです。そこで、AppController で関数 forceprofile() を作成しました。この関数を AppControllers beforefilter-function で実行するように依頼します。したがって、毎回実行されます。プロファイルがない場合、ユーザーは forceprofile-function からフォームにリダイレクトされ、そこでプロファイルを保存できます。
この forceprofile-function の最初のコード行で、いくつかのコメントの直後に、UserID を変数に取ります。
ここでエラーが発生します。
そこで何が起こったのかを確認したかったので、行を次のように置き換えました
結果は次のとおりです。
int(1)
実際、私はそこで非常に適切な結果を得ています。
元の障害のスタックは、有用な情報を提供しませんでした。コンテキストやコードなしで [内部関数] を出力するだけです...そして、BaseErrorHandler を出力します。
debug() が適切な結果を返し、id を変数に割り当てるように要求しないのはなぜですか?
ご協力ありがとうございました。
validation - CakePHP 3.1:翻訳動作フィールドの私の検証、レビュー/コメントで助けが必要
このスレッドに基づいて、翻訳されたフィールドを検証するためのフックに取り組みました: https://stackoverflow.com/a/33070156/4617689。私がやったことはトリックですが、コードを改善するのを手伝ってくれる人を探しているので、コメントして変更してください
私は $data を使った自分のトリックを誇りに思っていませんが、バリデーターのデータを入れ子になったValidator に入れる方法を見つけられませんでした...
ここで重要な部分は、「翻訳」に関するネストされたValidatorのルールのみであることに注意することです。これは非常に重要です!
I18nsが機能するための基本
その formHelper を使用して、nestedValidation のエラーを取得し、それらを入力に挿入します。私はテンプレートに慣れていないため、非常に醜いです。
ここで、type_id が Type::TYPE_HOMEPAGE に設定されていない場合、fr_FR.slug が必要です。そうです、私のホームページにはスラッグがありません。en_US.slug はまったく必要ないことに注意してください。 「_translations.xx_XX.xxxx」。
そしてコードの最後の部分、コントローラ
ここに私の側の最終結果の .gif があります: http://i.giphy.com/3o85xyrLOTd7q0YVck.gif