I have a livewire component:
class Cards extends Component
{
use WithFileUploads;
public $question;
public $answer;
public $questionImage;
public $questionImageOrigin;
public $answerImage;
public $answerImageOrigin;
public $questionAudio;
public $questionAudioOrigin;
public $answerAudio;
public $answerAudioOrigin;
public function render()
{
return view('livewire.cards');
}
Now I want to create and validate a card:
public function createCard()
{
$this->validate([
'answerImage' => 'nullable|image|max:3000',
'questionImage' => 'nullable|image|max:3000',
'question' => 'required_without_all: questionImage, questionAudio',
'answer' => 'required_without: answerImage, answerAudio',
'questionAudio' => 'nullable|file|mimeTypes:audio/mpeg|max:3000',
'answerAudio' => 'nullable|file|mimeTypes:audio/mpeg|max:3000'
]);
But this is not working. When I insert something (image or audio) I get the error:
The answer field is required when answer image / answer audio is not present.
So - I guess this is not working. Or am I wrong? Maybe I have to use another syntax? But I found nothing in the docs.
Please help.
You have added space in the rule
'answer' => 'required_without: answerImage, answerAudio',
Change it to this
'answer' => 'required_without:answerImage,answerAudio',
And
'question' => 'required_without_all: questionImage, questionAudio',
to this
'question' => 'required_without_all:questionImage,questionAudio',