İsteğim denetleyiciye ulaşmadan önce tüm kullanıcı girdilerini kesmek için yollarım için bir ara katman olarak kaydedilmiş bir TrimInput ara yazılımım var. Middleware içinde kırpma çalışıyor gibi görünüyor, ama ben istek eylemi döktüğümde istek daha önce herhangi bir ara katman olmadığı gibi modifiye edilmemiş görünüyor.Orta katmandaki talebi değiştirin?
Burada sorun nedir? Sorun, ClientRequest değil, neden?
// TrimInput.php
<?php namespace App\Http\Middleware;
use Closure;
class TrimInput {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
*
* @return mixed
*/
public function handle($request, Closure $next) {
$request->replace($this->trimArrayRecursive($request->all()));
// When I dump $request right here, all seems fine (the input is trimmed)
return $next($request);
}
protected function trimArrayRecursive($input) {
if (!is_array($input)) {
return trim($input);
}
return array_map([$this, 'trimArrayRecursive'], $input);
}
}
// Somwhere in my routes.php
Route::post('/test', ['middleware' => 'trim', 'uses' => function(\App\Http\Requests\ClientRequest $request) {
dd($request->all()); // Unfortunately dumps the unfiltered (untrimmed) input
}]);
DÜZENLEME: Yukarıda kodunun çalıştığını, çıktı, ama ne yazık ki benim ClientRequest
TrimInputMiddleware
yok sayar.
// ClientRequest.php
<?php namespace App\Http\Requests;
class ClientRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize() {
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules() {
$idToIgnore = $this->input('id');
return [
'name' => 'required|max:255|unique:clients,name,' . $idToIgnore,
'street' => 'required|max:255',
'postal_code' => 'required|digits:5',
'city' => 'required|max:255',
'contact_person' => 'required|max:255'
];
}
}
sizin
web
katman grubuna ekleyebilirsiniz ve ben kesilmiş girişi alıyorum . Belki de php artisan açık-compiled' çalıştırmayı denemelisiniz? –@ MarcinNabiałek Sadece denedim ve işe yaramadı. Çalışma kodunuzu yapıştırıcıya koyar mısın? –
Ben de bu sorunu var, ben 5.2, Talebi Cephe kullanırsanız, giriş denetleyiciye değiştirilir ve yayılır, ben var, ama kendi isteğimi enjekte, sadece tam işlenmemiş girdi alır. Ortabilgisayarda, '\ Illuminate \ Http \ Request' örneğinin bulunduğunu, ancak sonunda' App'Http \ Requests \ ClientRequest'den 'all()' yöntemini çağıracağınızı fark edebilirim. Sanırım bunun yapılması gereken bir şey var, ama nasıl çözeceğimi bilmiyorum. Bu sorudaki herhangi bir gelişme var mı? – Anfelipe