我试图在表单验证失败时显示表单错误。一切正常,表单验证正确,但视图中不显示表单错误。每次都返回一个空数组作为错误。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class HomeController extends Controller
{
public function storeProjectDetails(Request $request)
{
$messages = [
'title.required' => 'Please enter trip title',
'title.max' => 'Only 254 characters are allowed as trip title',
'startDate.required' => 'Please enter trip start date',
'startDate.date' => 'Only date formats are allowed as start date',
'endDate.required' => 'Please enter trip end date',
'endDate.date' => 'Only date formats are allowed as end date',
];
$this->validate($request,[
'title' => 'required|string|max:254',
'startDate' => 'required|date',
'endDate' => 'required|date',
]);
}
}
查看:
print_r($errors->all());
4条答案
按热度按时间vfhzx4xs1#
用这个
xtupzzrd2#
首先,您需要使用
if
条件检查错误,然后需要使用下面给出的循环打印错误在您的情况下,您缺少返回控制器中的错误数组。请尝试下面给出的验证检查。
pn9klfpd3#
您正在以错误的格式构建messages数组,它应如下所示:
klh5stk14#
好吧,对于其他有同样问题的人,让我分享我最初在这里分享的解决方案:www.example.comhttps://github.com/laravel/framework/issues/27729#issuecomment-1442976348
有很多类似的相关问题,这是非常棘手的。
我认为这里是分享我发现的正确线索。
例如,我正在使用一个几个月前从Laravel 5.2更新到5.5的遗留系统,因此请记住,您的问题可能有所不同。
最初我认为这可能是由于中间件的设置,更多关于这一点在下面的链接:
在几个小时没有成功或任何真正有用的东西之后,我决定用Laravel 5. 2挖掘旧代码。
他们改变了
ValidatesRequests
trait的行为,不仅仅是,主要是改变了validate
函数:弄明白后,我回到了文件,没有发现任何相关的。
无论如何,在
5.5
之后,如果您想将错误和输入发送到视图,而不是只执行return back();
,您将需要使用类似return back()->withInput()->withErrors($exception->validator ?? '');
的内容。或者,您可以使用
5.2
中的旧代码创建一个自定义trait(可能将两者结合起来),并将ValidatesRequests
的使用覆盖为CustomValidatesRequests
。从
5.2
恢复特征后,错误消息返回到系统。:表情:尽管如此,请记住这可能会导致其他问题,如果可能的话,最好使用
->withInput()->withErrors($exception->validator ?? '');
。