フロントエンドでtt_newsレコードを編集する拡張機能をビルドしています。 setIgnoreEnableFields(TRUE)
を私のリポジトリに設定しました。私は隠されたレコードを編集しようとした場合 しかし、私はエラーにアイデンティティ「12345" とフロントエンドで隠しレコードを編集する
オブジェクトを取得しますが見つかりませんでした。
このための任意のソリューション?
フロントエンドでtt_newsレコードを編集する拡張機能をビルドしています。 setIgnoreEnableFields(TRUE)
を私のリポジトリに設定しました。私は隠されたレコードを編集しようとした場合 しかし、私はエラーにアイデンティティ「12345" とフロントエンドで隠しレコードを編集する
オブジェクトを取得しますが見つかりませんでした。
このための任意のソリューション?
問題はPropertyMappingです。 extbaseがドメインオブジェクト(tt_news)にuid(12345)を割り当てようとすると、リポジトリの "setEnableFields"設定は尊重されません。だから自分でオブジェクトを取得する必要があります。
簡単な解決策は、各「表示」アクションの「初期化」アクションでこれを行うことです。 editAction例えば:
public function initializeEditAction() {
if ($this->request->hasArgument('news')) {
$newsUid = $this->request->getArgument('news');
if (!$this->newsRepository->findByUid($newsUid)) {
$defaultQuerySettings = $this->newsRepository->createQuery()->getQuerySettings();
$defaultQuerySettings->setIgnoreEnableFields(TRUE);
$this->newsRepository->setDefaultQuerySettings($defaultQuerySettings);
if ($news = $this->newsRepository->findByUid($newsUid)) {
$this->request->setArgument('news', $news);
}
}
}
}
ザ・ハードの部分は、オブジェクトを更新するために取得することです。私はhttps://gist.github.com/helhum/58a406fbb846b56a8b50
にも隠されたレコードをフェッチするにTypeConverterを発見した私はこれをしようとしないようたぶん、代わりにあなただけのinitializeUpdateAction
public function initializeUpdateAction() {
if ($this->arguments->hasArgument('news')) {
$this->arguments->getArgument('news')->getPropertyMappingConfiguration()
->setTypeConverter('MyVendor\\MyExtension\\Property\\TypeConverters\\MyPersistenObjectConverter')
}
}
でそれを割り当てるために試すことができます(
ext_localconf.php
の例のように)すべてのためのTypeConverterを登録します
私ははあなたをを推測していますことを、あなたの問題がある
/**
* Single view of a news record
*
* @param \Vendor\Ext\Domain\Model\News $news news item
*/
public function detailAction(\Vendor\Ext\Domain\Model\News $news = null)
のようなアクションを使用しています210はではありません。はレコードの取得に使用されます。解決策として
、引数を削除し、キャッシュをクリアして、今、あなたはQuerySettings
を操作し、それらを使用することができる
/**
* Single view of a news record
*
* @param \Vendor\Ext\Domain\Model\News $news news item
*/
public function detailAction() {
$id = (int)$this->request->getArgument('news');
if ($id) {
$news = $this->newsRepository->findByUid($previewNewsId);
}
}
のようなものを試してみてください。
編集フォームを開くことができます。しかし、updateAction wil –
updateActionは、コードとエラーメッセージなしでエラー –
をスローします。誰もあなたをさらに助けることができません。申し訳ありません –
あなたは最初の解決策は動作しますが、updateActionでは、$ this-> request-> getArgument( 'news')['__ identity']によってnewsUidを取得する必要があります。 ネストTypeConverterソリューションをテストします。ありがとう! –
また、https://gist.github.com/helhum/58a406fbb846b56a8b50のTypeCpnverterも素晴らしい機能を発揮します。 –