Le coin des artisans

Réinjecter les vieilles valeurs dans un Edit Form sur livewire

Avatar de Mimachh
Mimachh

Bonjour à tous,

Je cherche actuellement à permettre à un utilisateur de créer, puis éditer son topic. Je passe par livewire.

Je vous poste d'abord mes bouts de code et j'explique ce qu'il se passe.

Ici le controler de mon composant "Edit"

class Edit extends Component
{
    public $topic;
    public $title;
    public $content
    public $user_id;
    public $ids;

    public function update()
    {
        $ids = $this->topic->id;

        $this->user_id = auth()->user()->id;

        $this->validate([
            'title' => 'required',
            'content' => 'required',
            'user_id' => 'required',
        ]);

        $update = Topic::find($ids)->update([
        'title' => $this->title,
        'content' => $this->content,
        'user_id' => $this->user_id,
        ]);

    }

    public function info($ids) {
        $ids = $this->topic->id;
        $info = Topic::find($ids);
        $this->title = $info->title;
        $this->content = $info->content;
     }
     
 
 
     public function render()
     {     
         return view('livewire.edit');
     }
    
}

Je poste maintenant le formulaire d'edit qui est basique :

<div>
<form wire:submit.prevent="update">
<h1>{{$topic->id}}{{$topic->title}}</h1>
<input type="hidden" wire:model="ids">
<input type="text" wire:model="title" value="{{$topic->title}}" placeholder="{{$topic->title}}">

<input type="text" wire:model="content" placeholder="{{$topic->content}}">

<button type="submit">Save </button>
</form>
</div>

Mon problème est le suivant. Lorsque je clique sur edit, ça me "reset" mon topic, c'est à dire que je dois à nouveau remplir tous les champs (certes pour l'instant il n'y en a que 2 mais ce n'est pas le problème". Ce que je veux c'est que le formulaire edit injecte les anciennes valeurs du topic. Ce qui me permet, si je veux changer uniquement le titre et non le content de ne pas avoir besoin de retaper le content.

J'ai d'abord testé ce que vous voyez c'est à dire dans le formulaire de mettre le value = $topic->title cependant rien ne s'affiche, pourtant dans le H1 les infos s'affichent, pareil pour le placeholder. Je précise que si j'enlève de l'input le wire:model, tout s'affiche bien..mais évidemment je ne peux plus update le formulaire derrière. Tout se joue sur ce wire:model.

J'ai ensuite voulu récupérer les anciennes valeurs dans la function info()...mais je n'ai pas réussi à la faire marcher.

Aidez moi pitié ^^

Vous ne pouvez pas répondre à ce sujet.