問題タブ [cakephp-3.x]

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.

0 投票する
1 に答える
778 参照

json - cakephp 3.x _serializeキーが機能しない

Cakephp 3.1コントローラー関数からjsonを返そうとしています。私の問題は、_serialize フラグを使用して何をしても、ビュー テンプレート ファイルが見つからないという応答が常に返されることです。

Cake のドキュメントでは、テンプレートを使用して応答をフォーマットする必要がない場合は、_serialize フラグを設定するように指示されています。View _serializeのCake Docs

以下は、プロセスを初期化するクライアント側の Javascript です。

クライアントからの json を処理するコントローラー コード。

_serialize フラグを含めたり削除したりすると表示されるエラー メッセージ。

「テンプレート ファイル "Pages\json\module1\activity4.ctp" が見つかりません。」

誰でもこのメカニズムについて洞察を持っていますか? 私が見つけた回避策は、テンプレート ファイルを含めることですが、これは、この呼び出しが生成されるすべての場所を処理するために、本質的に空のテンプレート ファイルを数十個生成する必要があることを意味します。

何か助けてください。

0 投票する
0 に答える
705 参照

cakephp - Cakephp 3 - belongsToMany アソシエーションのスルー テーブルの追加の ID フィールド

私は少し複雑な部分を含む CakePHP 3 プロジェクトに取り組んでいますが、フレームワークの公式ドキュメントでは探している答えが得られないようです。次のことを行う必要があります。

ユーザーは複数のプロジェクトに所属できます。各プロジェクトでは、現在のプロジェクトに属する各ユーザーがアプリケーションのさまざまなセクションにアクセスできます。これは、リソース ID を格納する Resources というテーブルによって処理されます。

つまり、ユーザー A は、プロジェクト A とプロジェクト B で異なる量のリソースにアクセスできます。

次の関連付けをセットアップしました。

  1. ユーザーは、UsersProjects を介して、複数のプロジェクトに属しています。
  2. ユーザーは、UsersResources を介して複数のリソースに属しています

users_resources -table には、次のフィールドがあります。

ユーザー ID | resource_id | project_id

ユーザーのリソースをプロジェクト固有にするために、 project_id -field がテーブルに追加されます。

アソシエーション構成は次のとおりです。

ユーザーテーブル:

リソース表:

ユーザーリソーステーブル:

データの整合性を支援するために、UsersResourcesTable クラスに実装された buildRules 関数もあります。

データは次のように保存されます。

patchEntity の後のエンティティ データ:

プロジェクト ID 2 でデータを保存すると、保存は期待どおりに機能します。同じデータを保存し、プロジェクト ID を 1 に変更すると ( user_idresource_idは同じままです)、プロジェクト ID 2 の前の行がテーブルから削除されます。望ましい動作は明らかに、古いレコードがテーブルに残ることです。ただし、値が「append」の saveStrategy-option を UsersTable の Resources-association 定義に追加すると、保存が正しく行われることに気付きました (project_id 2 の行は削除されません)。しかし、append-strategy が使用されているときに既存のレコードを保存しようとすると、保存に失敗します (保存結果が false になります)。

したがって、replace-strategy を使用すると、以前のデータが削除され、append-strategy を使用すると、既存の行を更新すると、ケーキの観点からエラーが発生します。ユニークルールが原因で、ルールチェック中にエラーがスローされたと思います。

置換戦略が進むべき道だと思いますが、 project_id フィールドの値が無視され、新しい行が別の行に追加されるたびに以前のデータ (同じ user_id と resource_id を持つ) が削除されるという状況につながるようです。 project_id。

だから私の質問は:

追加のフィールドも id フィールドと見なされるように、3 番目の id フィールドを belongsToMany-association のトラフ テーブルに追加して、フレームワークがレコードをいつ更新または結合テーブルに挿入するかを認識できるようにすることは可能ですか?

テーブル内の 3 つのフィールドはすべて一意であるという考え方です。フレームワークが余分なフィールドを破棄するように見えるため、挿入と更新が期待どおりに機能しません。それとも、データベース構造に修正が必要な設計上の欠陥がありますか?

私は CakePHP の慣例に固執したいと思いますが、このシナリオに取り組むのは非常に難しいようです。任意のガイダンスをいただければ幸いです。

0 投票する
2 に答える
1714 参照

cakephp - CakePHP 3-コントローラーですべてのエラーとbuildRulesメッセージを表示する

すべてのエラー メッセージと buildRules を指定したこの Model/Table/UsersProfilesTable.php があります。

私の意図は、データを保存しようとしているときに、コントローラーのすべての検証エラーを一覧表示することです。

コードは後述します。


buildRules メソッドで指定されたメッセージを含むすべての検証エラーを一覧表示できる方法を誰か考えてもらえますか?

どんな助けでも大歓迎です。前もって感謝します!

平和!xD

0 投票する
2 に答える
93 参照

php - CakePHP 3.0 で、CakePHP の命名規則に従わないコントローラーと関数を実装する最良の方法は何ですか?

Android には、CakePhP では許可されていないアプリ リンク検証の命名規則があります。Android では、アプリ リンクの検証が次のように強制されます。

www.exampledomain.com/.well-known/assetlinks.json/

PhP は、「.WellKnownController」という名前のクラスも、「assetlinks.json」という名前の関数も許可しません。では、CakePhP 3.0 Web サイトをこの POST に応答させるにはどうすればよいでしょうか?

0 投票する
3 に答える
1695 参照

php - Cakephp 3.2アンカータグにhtml要素を含める方法は?

ここでは、cakephp 3.2 アンカー リンクに html 要素を含めたいと思います。私はそれを試しましたが、うまくいきません。以下はコードです。

以下のhtmlをケーキ形式で欲しいです。

ここにアイコンの代わりに、html tag() が来ます。よろしくお願いします。

ここに画像の説明を入力

0 投票する
2 に答える
1582 参照

php - CakePHP 3 エラー: SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064

次のエラーが表示されます。

このエラーが発生している SQL クエリは次のとおりです。

quoteIdentifiers config\app を有効にしましたが、次の新しいエラーが発生します。

クエリは次のようになります。

「大学のコル」をキーワード「COL」に取っていると思いますが、よくわかりません。これを修正する方法は?

これは、MySQL クエリを生成する CakePHP コードです。

0 投票する
1 に答える
696 参照

php - CakePHP 3:存在しない関数のルートエラーがありません

存在しない関数に対して「Missing Route」エラーが発生するのはなぜですか。

Reservationsコントローラー内にはadd、1 つの引数を持つ関数があります。

マッチングルート:

任意のページにアクセスすると、次のエラーが表示されます。

http://i.stack.imgur.com/ESX5I.jpg

エラーメッセージには次のように記載されています。

エラー: "array ( 'controller' => 'Reservations', 'action' => 'add', 'plugin' => NULL, '_ext' => NULL, )" に一致するルートが見つかりませんでした。

...引数のない関数を持っていないので、これは奇妙です。add()代わりに、add($carid)1つの引数を持つ関数があります。

しかし、そのルートを追加すると、すべて正常に動作します:

何が起こっている?