フォームにデータベースの値を読み込んでいます。フォームがキャッシュされ、データベースから古いデータを読み込んでいるようです。
私はここで指示に従いました( D8で匿名ユーザーのフォームがキャッシュされないようにするにはどうすればよいですか? )。
ここに私のコードがあり、私が行方不明の場所を誰かが明かすことができれば幸いです。
....
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
// Define form fields.
$form['#cache']['max-age'] = 0;
$form['name'] = array(
'#type' => 'textfield',
'#size' => 80,
'#title' => t('Your Name'),
'#default_value' => $result->name,
);
return $form;
}
....
「use Drupal\Core\Cache;」を追加する必要がありますか?このファイルの上に?
どうもありがとう。
リンクされた質問で、モジュールInternal Page Cacheが有効になっていませんでした。すべてのページのページキャッシュを無効にしたくないが、このフォームページに対してのみ無効にする場合は、フォームを返す前に\Drupal::service('page_cache_kill_switch')->trigger()
を追加します。
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
// Define form fields.
$form['#cache']['max-age'] = 0;
$form['name'] = array(
'#type' => 'textfield',
'#size' => 80,
'#title' => t('Your Name'),
'#default_value' => $result->name,
);
\Drupal::service('page_cache_kill_switch')->trigger();
return $form;
}