laravel 中的三元条件
ternary condition in laravel
我必须实现记住我的功能,所以我必须将 $remember
的值作为第二个参数传递给 Auth:attempt();
函数。但问题是当我使用此语法在 $remember
中设置值时,它显示语法错误
$remember = isset($request->input('remember')) ? true : false;
----------------------------------------------^//Expected: variable
但是当我使用这个语法时,它不会报错
$remember = isset($request->remember) ? true : false;
使用has()
:
$request->has('remember')
You should use the has
method to determine if a value is present on the request. The has method returns true if the value is present and is not an empty string.
has
是这样使用的:
$remember = $request->has('remember'); //return true if the remember is selected :)
关于你的问题,以上两种语法有什么区别:
这是因为 isset
是一种语言结构,而不是真正的函数。 docs:
中提到
Warning
isset() only works with variables as passing anything else will result
in a parse error. For checking if constants are set use the defined() function.
试试这个
$r = $request->input('remember');
$remember = isset($r)?true:false;
请求class已经有一个内置方法来检查是否设置了参数:
if ($request->has('remember')) {
// remember is set
} else {
// remember is not set
}
但是有更好的方法来实现您想要实现的目标。请求 class 也有一个方法 get
,它接受键作为第一个参数,默认值作为第二个参数(在键未设置的情况下返回)
所以你可以这样写:
Auth::attempt([...], $request->get('remember', false));
我必须实现记住我的功能,所以我必须将 $remember
的值作为第二个参数传递给 Auth:attempt();
函数。但问题是当我使用此语法在 $remember
中设置值时,它显示语法错误
$remember = isset($request->input('remember')) ? true : false;
----------------------------------------------^//Expected: variable
但是当我使用这个语法时,它不会报错
$remember = isset($request->remember) ? true : false;
使用has()
:
$request->has('remember')
You should use the
has
method to determine if a value is present on the request. The has method returns true if the value is present and is not an empty string.
has
是这样使用的:
$remember = $request->has('remember'); //return true if the remember is selected :)
关于你的问题,以上两种语法有什么区别:
这是因为 isset
是一种语言结构,而不是真正的函数。 docs:
Warning
isset() only works with variables as passing anything else will result in a parse error. For checking if constants are set use the defined() function.
试试这个
$r = $request->input('remember');
$remember = isset($r)?true:false;
请求class已经有一个内置方法来检查是否设置了参数:
if ($request->has('remember')) {
// remember is set
} else {
// remember is not set
}
但是有更好的方法来实现您想要实现的目标。请求 class 也有一个方法 get
,它接受键作为第一个参数,默认值作为第二个参数(在键未设置的情况下返回)
所以你可以这样写:
Auth::attempt([...], $request->get('remember', false));