Che*_*Lin 15 php laravel laravel-4
现在,我会像下面的代码一样分别修改每个输入:
$username = trim(Input::get('username'));
$password = trim(Input::get('password'));
$email = trim(Input::get('email'));
$validator = Validator::make(array('username' => $username,
'password' => $password,
'email' => $email),
array('username' => 'required|min:6',
'password' => 'required|min:6',
'email' => 'email'));
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以同时修剪Trim
Input::all()
还是Input::only('username', 'password', 'email')
?
这样做的最佳做法是什么?
The*_*pha 48
注意:如果您的任何输入是数组(例如"data []"),则此解决方案将不起作用.
您可以尝试这个,在验证之前使用这一行代码修剪:
Input::merge(array_map('trim', Input::all()));
Run Code Online (Sandbox Code Playgroud)
现在做其余的编码
$username = Input::get('username'); // it's trimed
// ...
Validator::make(...);
Run Code Online (Sandbox Code Playgroud)
如果您想从修剪中排除某些输入,那么您可以使用以下代替 all()
Input::except('password');
Run Code Online (Sandbox Code Playgroud)
或者你可以使用
Input::only(array('username'));
Run Code Online (Sandbox Code Playgroud)
更新:由于Laravel 5.4.*
新的TrimStrings
中间件导致输入被修剪.所以,不必担心它,因为这个中间件在每个请求上执行,它也处理数组输入.
根据您的项目,以下内容可能过于干扰/概括/等等,以满足您的需求; 根据需要定制.
password
(及其确认)的字段都被排除,因为人们可能希望使用空格作为进一步模糊其密码的一部分.<br>
.虽然你可能不会在blob的开头或结尾处需要这个.因人而异.app/helpers.php
/**
* @param callable $callback
* @param array $array
*
* @return mixed
*
* @link http://php.net/manual/en/function.array-map.php#112857
*/
function array_map_recursive($callback, $array)
{
foreach ($array as $key => $value) {
if (is_array($array[$key])) {
$array[$key] = array_map_recursive($callback, $array[$key]);
} else {
$array[$key] = call_user_func($callback, $array[$key]);
}
}
return $array;
}
Run Code Online (Sandbox Code Playgroud)
app/filters.php
App::before(
function (\Illuminate\Http\Request $request) {
// Trim all input
$request->merge(
array_map_recursive(
"trim",
array_except(
$request->all(),
["password", "password_confirmation"]
)
)
);
}
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15093 次 |
最近记录: |