Вы можете попробовать переопределить метод all()
в вашем Request
классе и добавьте ваше расширение Перед проверкой, а не после. Это было бы что-то вроде этого
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
}
Теперь ваше правило будет работать должным образом, потому что он будет искать файл с расширения. Напоминание: Вам нужно прекратить добавление расширения в контроллере или в зависимости от того места вы используете, чтобы сделать это, в противном случае вы будете в конечном итоге с filename.txt.txt
и вернется на круги 1.
Лично я нахожу это немного грязный, чтобы переопределить all()
метод всякий раз, когда я чувствую, как это, так что у меня есть следующие черты
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;
}
}
Эта черта позволяет мне написать собственный метод с именем поля всякий раз, когда я хочу, чтобы дезинфицировать его перед проверкой. Используя этот подход, вы можете получить такой метод:
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';
}
}
В каком коде вы добавляете расширение для имени файла? –
@ MarcoAurélioDeleu после прохождения проверки, я объединяю имя файла и его расширение и сохраняю их в базе данных. Это довольно мудрый фрагмент кода, действительно ли это нужно, чтобы его можно было разместить здесь? –
Это зависит от того, у меня может быть решение для вас, но оно зависит от вас, меняя стратегию, а это означает, что вы прекратите добавление расширения после проверки и сделайте это до. –