Pesquisei varios metodos de implementar uma validacao personalizada, mas varios deles dizem para registrar o metodo em algum ServiceProvider, sem falar nas mensagens de erro. A documentacao do Laravel tambem nao ajuda, tratando o topico bem brevemente.Eu estava procurando algo que nao precisasse mudar varios arquivos, e que a validacao nao ficasse em outra classe alem da Request que criei para a validacao. Assim, apresento a solucao que encontrei.Assumindo que voce esta fazendo a validacao atraves de um Form Request, alem dos metodos tradicionais authorize() e rules(), voce pode criar seu metodo de validacao personalizado, e sobrescrever o metodo getValidatorInstance() da classe Request para adicionar seu metodo no procedimento de validacao.Vamos supor que no nosso formulario temos um campo numero_par que, como o nome sugere, deve ser um numero par. Criamos entao nosso metodo de validacao na nossa classe FormularioRequest:public function validatePar($validator){ if( $this->numero_par % 2 != 0 ) // se o numero nao for par { $validator->errors()->add('numero_par', 'Insira um numero par'); }}Sobrescrevemos entao o metodo getValidatorInstance():public function getValidatorInstance(){ $validator = parent::getValidatorInstance(); // Validacao personalizada $validator->after(function () use ($validator) { $this->validatePar($validator); }); return $validator;}Nossa classe completa ficaria entao como:<?phpnamespace App\Http\Requests;use App\Http\Requests\Request;use Validator;class FormularioRequest extends Request{ public function authorize() { return true; } public function rules() { return [ 'numero_par' => 'required|numeric', ]; } public function getValidatorInstance() { $validator = parent::getValidatorInstance(); // Validacao personalizada $validator->after(function () use ($validator) { $this->validatePar($validator); }); return $validator; } public function validatePar($validator) { if( $this->numero_par % 2 != 0 ) // se o numero nao for par { $validator->errors()->add('numero_par', 'Insira um numero par'); } }}Note que, diferente das outras formas de adicionar uma validacao personalizada, esta aqui nao registra uma regra de validacao para voce usar no array de regras. Este metodo se torna util quando voce deseja executar uma operacao especifica de um model, principalmente se envolve outros campos do mesmo formulario. O primeiro trabalho da disciplina pediu para implementar um algoritmo que, dada uma coordenada no espaco de tela, fosse colocada na memoria de video para, em seguida, ser exibida na tela. Entretanto, nao e pratico descrever funcoes e objetos neste espaco, pois frequentemente possuem dimensoes diferentes da tela.Deste modo, a descricao mais adequada e feita no espaco canonico, o passo anterior ao da rasterizacao. Neste espaco, todos os vetores estao descritos em tres dimensoes, com o valor dos seus componentes dentro do intervalo [-1, 1]. Portanto, o segundo trabalho da disciplina consiste em implementar a conversao deste espaco canonico para o espaco da tela. Neste trabalho, serao consideradas apenas as coordenadas x e y dos vetores.Processo de conversaoUm objeto no espaco canonico, como descrito anteriormente, possui vertices cujas componentes estao compreendidas entre o intervalo [-1, 1], como na figura abaixo.Objeto descrito no espaco canonicoO primeiro passo e inverter as coordenadas y, pois o sistema de coordenadas de tela possui o eixo y invertido em relacao ao espaco canonico. Em seguida, translada-se a area para o quadrante positivo, o que resultara em um quadrado de lado 2. Depois, aplica-se uma escala para que o quadrado tenha lado de comprimento 1.Objeto transladado, escalado e com a coordenada