Есть поле с именем content в тегах
textarea
, которое почему-то вместо заданных значений выдает пустую строку. Хотя с других полей textarea приходит нормальный
request
.
HTML-код:
<textarea id="editor" name="content" class="form-control @error('content') is-invalid @enderror" aria-label="content" autocomplete="content">{{ $page->content ?? old('content') }}</textarea>
@error('content')
<span class="invalid-feedback" role="alert">{{ $message }}</span>
@enderror
App\Http\Requests\Page\UpdatePageRequest:
public function formRequest(): PageDto
{
return new PageDto(
title: $this->title,
keywords: $this->keywords,
status: $this->status,
description: $this->description,
slug: $this->slug,
content: $this->content,
file: $this->file,
heading: $this->heading,
icon: $this->icon,
excerpt: $this->excerpt
);
}
App\Http\Controllers\Controller\PageController:
public function update(UpdatePageRequest $request, Page $page, UpdatePage $updatePage): RedirectResponse
{
$updatePage->handle($page, $request->formRequest());
return redirect()->action([self::class, 'index'])->with('success', 'messages.page.update');
}
app\Dto\PageDto:
class PageDto
{
public function __construct(
private string $title,
private ?string $keywords,
private string $status,
private ?string $description,
private ?string $slug,
private ?string $content,
private ?UploadedFile $file,
private ?string $heading,
private ?string $icon,
private ?string $excerpt
) {}
/* ... */
public function getContent(): ?string
{
return $this->content;
}
/* ... */
}
App\Actions\Page\UpdatePage:
class UpdatePage
{
public function __construct(
private MediaRepositoryInterface $media,
private PageRepositoryInterface $page
) {}
public function handle(Page $page, PageDto $request): bool
{
$updateMedia = new UpdateMedia($this->media);
$media = $updateMedia->handle($page->media_id, $request->getFile());
$data = collect([
'title' => $request->getTitle(),
'keywords' => $request->getKeywords(),
'status' => $request->getStatus(),
'description' => $request->getDescription(),
'slug' => $request->getSlug(),
'content' => $request->getContent(),
'data' => $request->getData()
]);
$updatePage = $this->page->updatePage($page, $data->merge([
'user_id' => $page->user_id,
'media_id' => $media->id ?? null
])->toArray());
return $updatePage;
}
}
Может я что-то не вижу, типа, глаз замылился. Может вы ошибку заметите или объясните почему приходит request в виде пустой строки. Т. е. даже не
null
, а именно пустая строка.