n00b の質問の可能性があることをお詫びしますが、ここで説明します。現在、ajax を使用してデータを収集するサービス クラスを symfony2 で作成しています。データは基本的に、フォーム送信時に送信される 2 つのタイムスタンプで構成されます。次に、これをコントローラーに渡し、カスタム parameters.yml ファイルに書き込んで、このファイルに値を保存し、ユーザーがフォームを送信するたびにこのファイルを更新できるようにします。次のようなエラーが表示されます。
Impossible to call set() on a frozen ParameterBag
また、Google で検索すると、一度コンパイルしたコンテナは変更できないことがわかります。特にこれを引き起こしている行は次のとおりです。
$this->container->setParameter('quicksign.start.off', $startOff);
コードを表示する時間です。これが私のコントローラーです:
public function updateServiceSigAction() {
$logger = $this->get('logger');
$request = $this->get('request');
$errors = array();
if (WebserviceController::POST_ONLY && $request->getMethod() != 'POST') {
$errors[] = "Not allowed !";
return $this->sendResponse($errors);
}
$params = $request->request->all();
if (count($params) == 0) {
$errors[] = "Missing parameters !";
return $this->sendResponse($errors);
} else {
$servicesig_services = $this->get('servicesigservice');
$errors = $servicesig_services->updateServiceSig($params, false);
}
return $this->sendResponse($errors, array(), true);
}
そして、これが私のサービスクラスの関連メソッドです:
public function updateServiceSig($params, $need_to_flush = true) {
$errors = array();
$startOff = $params['date_debut'];
$endOff = $params['date_fin'];
if (empty($startOff) || empty($endOff)) {
$errors[] = "Missing parameters from query !";
} else {
$this->container->setParameter('quicksign.start.off', $startOff);
$this->container->setParameter('quicksign.end.off', $endOff);
}
return $errors;
}
コンテナをコンパイルする前にこれを行うべきでしょうか?しかし、コンテナがどこでコンパイルされているのか正確にはわかりません...または、別の方法でコンパイルする必要があります...?