Ich benutze Laravel 5.3Wie kann ich die Bedingung basierend auf den Parametern der Array-Daten auf den Regeln Laravel hinzufügen?
Meine Regeln Laravel dies mag:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class AddCartRequest extends FormRequest
{
public function rules()
{
return [
'product_id'=>'required|numeric',
'delivery_address'=>'required',
'request_delivery_at' => 'required|date_format:d-m-Y H:i:s|after:120 minutes'
];
}
}
Das Ergebnis echo '<pre>';print_r($this->request->get('delivery_address'));echo '</pre>';
wie folgt aus:
Array
(
[sender_name] => chelsea
[postal] => 12345
[country] => japan
[city] => tokyo
[send_date] => 09-12-2017
[send_time] =>
[information] => test
)
Ich möchte es so machen:
Wenn send_time ist leer, die Regeln von request_delivery_at lauten wie folgt:
'request_delivery_at' => 'required|date_format:d-m-Y H:i:s'
Also, es ohne |after:120 minutes
Wenn Sendezeit haben Wert ist (zum Beispiel Sendezeit = 12.30.00), die Regeln der request_delivery_at wie folgt aus:
'request_delivery_at' => 'required|date_format:d-m-Y H:i:s|after:120 minutes'
Wie kann ich es tun ?
aktualisieren:
ich so versuchen:
public function rules()
{
$send_time = $this->request->get('delivery_address')['send_time'];
if($send_time)
$validation_time = '|after:120 minutes';
else
$validation_time = '';
return [
'product_id'=>'required|numeric',
'delivery_address'=>'required',
'request_delivery_at' => 'required|date_format:d-m-Y H:i:s'.$validation_time
];
}
scheint es
da Ihre Anforderung recht komplex ist, können Sie es nicht erreichen mit Regeln Validierung bestehender, müssen Sie eine benutzerdefinierte Gültigkeitsregel erstellen, kann ich weiß aus, wenn nach 120 Minuten? –
@SuccessMan sieht gut aus, möchte vielleicht überprüfen, dass var nicht null ist, bevor Sie versuchen, auf ein Array-Element zuzugreifen, obwohl ... sidenote: Das 'FormRequest' ist ein' Request' ... '$ this-> all()' '$ this-> input()' etc ... es ist ein 'Illuminate \ Http \ Request' ... Sie befinden sich bereits im Kontext der Anfrage,' $ this-> input ('delivery_address') ' – lagbox
@ Lagbox, Okay. Danke für Ihre Hilfe –