0

まず、いくつかの文字列をコントローラーに送信するフォームがあります。このコントローラーは、最初にデータベース内の対応するエンティティにアクセスし、次にそのエンティティの文字列を更新しようとします。

次のようにパラメーターを取得します。

$message = $request->request->get('message');

テスト目的で、次の行に入れました:

echo '<script>alert("the message is: ' . $message . '");</script>';

それは予想されるメッセージを警告します->だから私は先に進み、 $message 変数が実際にコントローラーに正しく「到達」すると仮定します。

次に、エンティティ情報を更新します。

$entity->setMessage($message);

これにより、データベース内の値が空になります。エラーもサーバーのクラッシュもありません$message。運命に到達することはありません。
私の次の仮定は、エンティティ関数 setMessage に問題がある可能性があるため、すべての可能な組み合わせで可能な限り (文字列) キャストを使用しました。

次に、var_dumpあらゆる場所に を配置します。ここでもすべての組み合わせが可能です。そして実体属性のメッセージまで出す"string(x)" xxxx

だから私は「まあそれは正しく割り当てられる」と思った

これまでのところ、おそらく忘れていたと思います

$em->persist($entity);

$em->flush();

でもそれも忘れず入れたようです。

そこで、新しい試みを考えました。$test という名前の新しい変数を作成し、それにランダムな文字列を割り当てて、これで setMessage を呼び出しました。やった。順調に持続しました。

要約すると、正しいエンティティが取得され、文字列が読み込まれ、コントローラー内に実際に正しく存在し、エンティティ メソッドが完全に機能し、エンティティ マネージャーが永続化され、希望どおりにフラッシュされます。

ここで何が問題なのですか?$test私の文字列と$message私が判断できる文字列の唯一の違いは、それ$messageがリクエストに由来することです。この問題に関する私の知識は限られているようです。

4

1 に答える 1