estou tentando adaptar esse seu exemplo no meu código porém não estou conseguindo. vou deixar o código pra ver se vc consegue me dar uma força.
meu validator atualmente está assim… queria incluir essa sua validação na minha existente.
$validator = Validator::make($request->all(),[
'paciente' => 'required',
'local' => 'required',
'event_start_date'=>'required',
'event_start_time'=>'required',
'event_end_time'=>'required',
//'event_start_date' => 'before:event_end_date',
],
[
'required' => 'O campo :attribute é obrigatório',
], [
'paciente' => 'Paciente',
'local' => 'Sala de Atendimento',
'event_start_date'=>'Data Início',
'event_start_time'=>'Horário Inicial',
'event_end_time'=>'Horário Término',
// 'event_end_date'=>'Data de Término',
]
);
$feed_back=array();
if ($validator->passes()){
}
Observação: a validação é colocado de uma só vez com a separação | para cada validação acho eu que você está fazendo um validação por linha, não é isso é uma linha para cada item da tela, exemplo, se você tem um campo que é uma data e ela tem que ser digitada então a validação é
Estou fazendo assim, os campos de comparação são o event_start_date e event_end_date:
$validator = Validator::make($request->all(),[
'paciente' => 'required',
'local' => 'required',
'event_start_date'=>'required',
'event_start_time'=>'required',
'event_end_time'=>'required',
'event_start_date' => 'required|date_format:d/m/Y|minordate:event_end_date',
'event_end_date' => 'required|date_format:d/m/Y'
],
[
'required' => 'O campo :attribute é obrigatório',
], [
'paciente' => 'Paciente',
'local' => 'Sala de Atendimento',
'event_start_date.required' => 'Data inicial é requerida',
'event_start_date.date_format' => 'Data inicial está em formato inválido',
'event_start_date.minordate' => 'Data inicial tem que ser menor que data final',
'event_end_date.required' => 'Data final é requerida',
'event_end_date.date_format' => 'Data final está em formato inválido',
]);
está tudo na mesma linha. vou tirar os outros campos, pra ficar mais fácil o entendimento.
$validator = Validator::make($request->all(),[
'event_start_date' => 'required|date_format:d/m/Y|minordate:event_end_date',
'event_end_date' => 'required|date_format:d/m/Y'
],
[
'event_start_date.required' => 'Data inicial é requerida',
'event_start_date.date_format' => 'Data inicial está em formato inválido',
'event_start_date.minordate' => 'Data inicial tem que ser menor que data final',
'event_end_date.required' => 'Data final é requerida',
'event_end_date.date_format' => 'Data final está em formato inválido',
]);
atualmente para validar os outros campos eu fiz assim, que irá exibir o erro na tela caso encontre algum problema no preenchimento do formulário.
minha ideia é adaptar a sua lógica das validações da data nessa minha lógica.
fiz tudo o que vc falou, não acontece nada…
tirei tudo o que eu fiz anteriormente e continua não acontecendo nada.
veja se a lógica é realmente essa, se vc reparar no código abaixo estou passando a variável $validator no if, onde irá exibir a uma mensagem de erro que, a única diferença da sua lógica agora pra minha é essa.
$rules = [
'event_start_date' => 'required|date_format:d/m/Y|minordate:event_end_date',
'event_end_date' => 'required|date_format:d/m/Y'
];
$messages = [
'event_start_date.required' => 'Data inicial é requerida',
'event_start_date.date_format' => 'Data inicial está em formato inválido',
'event_start_date.minordate' => 'Data inicial tem que ser menor que data final',
'event_end_date.required' => 'Data final é requerida',
'event_end_date.date_format' => 'Data final está em formato inválido',
];
$validator=Validator::make($request->all(), $rules, $messages)->validate();
$feed_back=array();
if ($validator->passes()){
O código passado a você foi testado, se você não conseguiu adaptar o problema não é no meu código que ratificando foi testado, agora você dizer que não aconteceu nada é estranho você não pode dizer isso assim dessa forma dessa maneira como se tivesse certeza daquilo que pelo visto não tem, o que você realmente fez, diga o seu passo a passo que ai posso encontrar o problema, porque, sinceridade se você colocou e não gerou erro ou a validação não surtou efeito tem algo que não estou conseguindo ver no seu jeito de programar!
Isso é tão simples de fazer em PHP puro que nem precisava esquentar a cabeça com Laravel. Mas se quer usar e seu projeto está estruturado assim, o colega acima já deu uma baita aula pra você aqui. É questão de parar o projeto e estudar isoladamente tutoriais. Depois que dominar adapte o que aprendeu no seu projeto.
O problema na minha visão, não é fazer isso como se fosse independente, porque o código é PHP puro, o grande problema na minha visão é a falta de ler a documentação e quando a gente coloca um código testado, funcional e padrão o cara diz que não está funcionando e não te aponta o problema real.
Falta mesmo ler a documentação e é melhor que faça dentro do código do Framework, porque? Por causa da visualização das validações e manter um padrão.
Bom já fiz o papel de até construir o código, falta mesmo entender aonde o amigo tem problema, mas, fica a dica, nunca dizem o que acontece.
O padrão pode ser o que cada equipe definir, pode ser com ou sem framework. Claro, se ele escolheu Laravel então tem que encarar mesmo. Problema que a galera vem aqui e nem debuga…
Amigo a tag é Laravel não sei pra que isso e tem que ser feito do jeito que está não deprecie as coisas, se ele viesse aqui e não fosse Laravel eu faria diferente.
Não debuga e não entendem documentação.
Tente entender uma coisa o problema é tagLaravel não mude o enfoque, eu sei como funciona padrão de equipe…
galera, obrigado pela força. é sempre bom saber outros métodos de resolver um determinado problema.
mas nesse caso resolvi da seguinte forma…
percebi que Dragoon achou que eu estava ofendendo-o de alguma forma, mas não foi a minha intenção. me expressei mal.
Leia sobre strtotime no PHP.net. Vai funcionar pra certas datas para outras não por causa do cálculo. Esse código é baseado nesse cara, que para datas yyyy-mm-dd, mas não é o seu caso
Bom fica mais mesmo como aviso.
Nota :
Datas nos formatos m/d/y e d-m-y são diferenciadas observando o separador entre os vários componentes: se o separador é uma barra ( / ), o formato Americano m/d/y é utilizado; enquanto que, se o separador for um traço ( - ) ou um ponto ( . ), o formato Europeu d-m-y será utilizado. Entretanto, se o ano foi informado no formato de dois dígitos e o separador for um traço ( - , a string de data será interpretada como y-m-d .
Para evitar uma ambiguidade em potencial, o melhor é utilizar datas que seguem a ISO 8601 ( YYYY-MM-DD ) ou o métodoDateTime::createFromFormat() sempre que possível.
after: date (after_or_equals só muda o sinal)
The field under validation must be a value after a given date. The dates will be passed into the strtotime PHP function:
'start_date' => 'required|date|after:tomorrow'
Então com essas informações essa validação não funciona corretamente em todos os casos dessa pergunta tornando a solução inválida, por causa do formato da data.
A maior intenção aqui é deixar mais clara possível o potencial problema.