@a0xh

Почему приходит пустой request поля в Laravel?

Есть поле с именем 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, а именно пустая строка.
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
@v__V__v
Разработчик
Попробуйте сменить имя поля с content на какой-нибудь myGreatContent, возможно у вас конфликт имен, с Laravel'ом такое случается.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы