我最近开始使用Laravel学习如何使用它。目前,我正在处理表格,并研究Laravel提供的促进我们工作的不同方法,但我看不出为什么以下代码不起作用:
public function mensajes(Request $request) {
//return $request->all();
if ($request->has('nombre')){
return "Sí tiene nombre. Es ". $request->input('nombre') ." y su correo es ". $request->input('email');
} else {
return "No tiene nombre";
}
}
我试图验证该表单是否接收输入"名称",但是它接收到与否,它将其仿佛存在,并且如果填充,则在尝试执行此代码时,如果它正确执行此代码。
public function mensajes(Request $request) {
//return $request->all();
if ($request->input('nombre') != ''){
return "Sí tiene nombre. Es ". $request->input('nombre') ." y su correo es ". $request->input('email');
} else {
return "No tiene nombre";
}
}
我有很多,也许时间太多,看我的代码,而没有看到错误。
读取 laravel contents contents of Docs,以适当使用HTTP请求。
确定是否存在输入值
您应该使用有方法来确定请求中是否存在值。如果该值在请求中存在:
if ($request->has('name')) {
//
}
如果您想确定请求上是否存在一个值并且不是空的,则可以使用填充方法:
if ($request->filled('name')) {
//
}
您应该能够测试请求对象的nombre
属性是否是虚假的值(即不存在,是空的,或null
(
if($request->nombre) {
//do something
} else {
//do something else
}
如果您不使用 SanitizeMiddleware
laravel将将输入名称保留为请求中的属性,则以空字符串("")
,因此->has("name")
方法将始终返回true
。
在控制台上执行以下操作:
php artisan make:middleware SanitizeMiddleware
然后填充新的中间件
<?php
namespace AppHttpMiddleware;
use Closure;
class SanitizeMiddleware
{
/**
* Handle an incoming request.
*
* @param IlluminateHttpRequest $request
* @param Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
foreach ($request->input() as $key => $value) {
if (empty($value) || $value == "") {
if($value !== '0')
$request->request->remove($key);
}
}
return $next($request);
}
}
并在Kernel
,Web中间件组或YO想要使用的任何地方注册:
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
AppHttpMiddlewareEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateSessionMiddlewareStartSession::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
AppHttpMiddlewareVerifyCsrfToken::class,
IlluminateRoutingMiddlewareSubstituteBindings::class,
SanitizeMiddleware::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
这将从传入请求中删除空输入,因此->has("")
现在应该使用。