Autour de Laravel

Validation de formulaire avec Livewire

Avatar de YoussoufOuattara
YoussoufOuattara

Salut à tous, j'ai besoin de vos coup d'oeil! Je souhaite faire un enregistrement de formulaire mais ça ne marche pas, j'ignore l'erreur

Route

use App\Http\Livewire\ContactComponent;

Route::get('/contact', ContactComponent::class)->name('contact');

ContactComponent

use App\Models\Contact;

class ContactComponent extends Component
{
	public $name;
    public $phone;
    public $email;
    public $sujet;
    public $message;
	
	public function storeContact()
	{
	    	//dd($this->name); j'ai rien comme retour
	    	$contact = new Contact();
			$contact->name = $this->name; 
			$contact->phone = $this->phone;
			$contact->save();
			session()->flash('message', 'Catégorie enrégistrer avec succès');

	}

    public function render()
    {
        return view('livewire.contact-component')->layout('layouts.base');
    }

}

livewire.contact-component

<form id="contact-form" wire:submit.prevent="storeContact">
						<div class="row clearfix">
							<div class="col-lg-6 col-md-6 col-sm-12 form-group">
								<span class="icon flaticon-user-2"></span>
								<input type="text"name="name" wire:model="name" placeholder="Votre nom" required>
							</div>
							<div class="col-lg-6 col-md-6 col-sm-12 form-group">
								<span class="icon flaticon-phone-call"></span>
								<input type="text" name="phone" wire:model="phone" placeholder="Votre contact téléphonique" required>
							</div>
							<div class="col-lg-6 col-md-6 col-sm-12 form-group">
								<span class="icon flaticon-big-envelope"></span>
								<input type="email" name="email" wire:model="email" placeholder="Email" required>
							</div>
							<div class="col-lg-6 col-md-6 col-sm-12 form-group">
								<span class="icon flaticon-notepad"></span>
								<input type="text" name="sujet" wire:model="sujet" placeholder="Sujet" required>
							</div>	
							<div class="col-lg-12 col-md-12 col-sm-12 form-group">
								<span class="icon flaticon-message"></span>
								<textarea name="message" wire:model="message" placeholder="Message"></textarea>
							</div>
							<div class="col-lg-12 col-md-12 col-sm-12 text-center form-group">
								<button class="theme-btn btn-style-three" type="submit">Envoyez maintenant</button>
							</div>
						</div>
					</form>
Posté il y a 1 mois
Avatar de Bilal
Bilal

tu dois définir la validation en procédant ainis :

  public function rules()
    {
        return [
            'phone' => 'sometimes',
            'email' => 'sometimes',
            'sujet' => 'sometimes',
             'message' => 'sometimes'
        ];
    }
Posté il y a 1 mois
Avatar de YoussoufOuattara
YoussoufOuattara

Merci pour la reponse, Après la validation l'envoi ne marche pas, que dois-je faire dans ce cas ?

Posté il y a 1 mois
Avatar de Bilal
Bilal

dans le ContactComponent :

use App\Models\Contact;

class ContactComponent extends Component
{
    public Contact $contact; 
    
    //tu définit les règles de validation que tu veux pour chaque champs
    protected function rules()
    {
        return [
           'contact.name' => 'string',
            'contact.phone' => 'sometimes',
            'contact.email' => 'email',
            'contact.sujet' => 'sometimes',
             'cintact.message' => 'sometimes'
        ];
    }
    
    public function storeContact()
	{
	    	
			 $this->validate();
			$this->contact->save();
			session()->flash('message', 'Catégorie enrégistrer avec succès');

	}
    
    
    

dans le la vue :

wire:model="contact.name"

fait pareil pour les autres.

le lien vers la documentation https://laravel-livewire.com/docs/2.x/input-validation

Posté il y a 1 mois
Avatar de YoussoufOuattara
YoussoufOuattara

Merci

Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.