Skip to content

Commit 6815c5a

Browse files
makowskidclaude
andcommitted
Fix translatable fields resolution: use class_uses_recursive and Nova resource fallback
- Replace class_uses() with class_uses_recursive() to detect HasTranslations trait on parent classes - Replace hardcoded field fallback with dynamic resolution from Nova resource model Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent c37aad7 commit 6815c5a

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/Actions/TranslateModel.php

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,13 +196,23 @@ function (Trix $field, NovaRequest $request, FormData $formData) use ($locales)
196196
$modelQuery = $request->findModelQuery();
197197
if ($modelQuery) {
198198
$modelClass = $modelQuery->getModel();
199-
if ($modelClass && in_array(HasTranslations::class, class_uses($modelClass))) {
199+
if ($modelClass && in_array(HasTranslations::class, class_uses_recursive($modelClass))) {
200200
$translatableFields = $modelClass->getTranslatableAttributes();
201201
}
202202
}
203203
} catch (\Throwable $e) {
204-
// fallback for batch requests with no model context
205-
$translatableFields = ['title', 'subtitle', 'content']; // or leave empty if uncertain
204+
// Resolve translatable fields from the Nova resource when model query is unavailable
205+
try {
206+
$resourceClass = $request->resource();
207+
if ($resourceClass) {
208+
$modelInstance = new $resourceClass::$model;
209+
if (in_array(HasTranslations::class, class_uses_recursive($modelInstance))) {
210+
$translatableFields = $modelInstance->getTranslatableAttributes();
211+
}
212+
}
213+
} catch (\Throwable) {
214+
// leave $translatableFields as empty array from line 193
215+
}
206216
}
207217

208218
if ($sourceLang && $targetLang) {

0 commit comments

Comments
 (0)