können Sie versuchen, die all()
Methode in Ihrer Request
Klasse außer Kraft zu setzen und Ihre Erweiterung vor der Validierung anhängen statt nach. Das wäre so etwas sein
public function all() {
$data = parent::all(); // Get all the data in your request
$data['filename'] .= '.txt'; // Concatenate the file extension
return $data; // DONT FORGET TO RETURN THE CHANGED DATA
}
Nun wird die Regel richtig, da es für die Datei mit die Erweiterung suchen. Erinnerung: Sie werden aufhören müssen, um die Erweiterung in Ihrem Controller-Anhänge oder welche auch immer Ort, den Sie, dies zu tun verwenden, sonst werden Sie mit filename.txt.txt
am Ende und werden 1 bis Platz
Persönlich finde ich es wieder ein wenig chaotisch die all()
Methode außer Kraft zu setzen, wenn ich Lust dazu habe, so ich habe folgendes Merkmal
trait SanitizeRequest {
protected $sanitized = false;
public function all() {
return $this->sanitize(parent::all());
}
protected function sanitize(array $inputs) {
if ($this->sanitized) return $inputs;
foreach ($inputs as $field => $value) {
if (method_exists($this, $field))
$inputs[$field] = $this->$field($value);
}
$this->replace($inputs);
$this->sanitized = true;
return $inputs;
}
}
Diese Eigenschaft mir eine eigene Methode mit dem Feldnamen schreiben kann, wenn ich es vor der Validierung sanieren will. Mit diesem Ansatz können Sie eine Methode wie folgt haben
class YourRequest extends Request {
use SanitizeRequest;
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize() {
return true;
}
...
protected function filename($value) {
return $value . '.txt';
}
}
Wo in Ihrem Code fügen Sie eine Erweiterung an den Dateinamen an? –
@ MarcoAurélioDeleu nach Validierung übergeben, verkette ich den Dateinamen und seine Erweiterung und speichern Sie sie in der Datenbank. Das ist ein ziemlich bulliger Code, ist es wirklich nötig, hier gepostet zu werden? –
Das hängt davon ab, dass ich eine Lösung für Sie haben kann, aber es hängt davon ab, dass Sie die Strategie ändern, was bedeutet, dass Sie die Erweiterung NACH der Validierung nicht mehr anhängen und das VORHER tun müssen. –