Da Sie einen Eingangs Namen attachments[]
definiert werden Anhänge ein Array enthält Ihre Datei sein. Wenn Sie nur eine Datei hochladen müssen, möchten Sie möglicherweise den Namen der Eingabe in attachments
umbenennen, ohne dass die []
(oder attachment
in diesem Fall mehr Sinn machen würde). Wenn Sie mehrere hochladen zu können, können Sie einen Iterator in Ihrem Request
-extending Klasse bauen, die eine Reihe von Regeln gibt abdeckt jeden Eintrag innerhalb attachments[]
protected function attachments()
{
$rules = [];
$postedValues = $this->request->get('attachments');
if(null == $postedValues) {
return $rules;
}
// Let's create some rules!
foreach($postedValues as $index => $value) {
$rules["attachments.$index"] = 'required|mimes:jpeg,jpg,png';
}
/* Let's imagine we've uploaded 2 images. $rules would look like this:
[
'attachments.0' => 'required|mimes:jpeg,jpg,png',
'attachments.1' => 'required|mimes:jpeg,jpg,png'
];
*/
return $rules;
}
Dann können Sie nur innerhalb rules()
diese Funktion aufrufen zu die Array verschmelzen zurück von attachments
mit anderen Regeln, die Sie möglicherweise für diese Anforderung angeben mögen:
public function rules()
{
return array_merge($this->attachments(), [
// Create any additional rules for your request here...
]);
}
Wenn Sie noch nicht über eine dedizierte Request
-extending Klasse für Ihr Formular können Sie create one mit dem handwerklichen cl ich durch Eingabe von: php artisan make:request MyRequestName
. Eine neue Anfrageklasse wird innerhalb app\Http\Requests
erstellt. Das ist die Datei, in die Sie den obigen Code schreiben würden. Als nächstes können Sie diese Klasse typehint in die Funktionssignatur Ihres Controller-Endpunkts eingeben:
public function myControllerEndpoint(MyRequestName $request)
{
// Do your logic... (if your code gets here, all rules inside MyRequestName are met, yay!)
}