Laravel withError函数不起作用

Posted

技术标签:

【中文标题】Laravel withError函数不起作用【英文标题】:Laravel withError function not working 【发布时间】:2015-03-10 03:22:49 【问题描述】:

我正在测试这个新框架 (Laravel),到目前为止,我正在关注他们在文档中添加的示例。在我遇到这个问题之前一切都很好。

我正在打电话给Redirect::to('\signup')->withErrors($validator->messages());,但它没有显示任何内容 但如果我只是像print_r($validator->messages()); 那样打印它,它会向我显示错误。请帮助我并告诉我哪里出错了?

控制器

public function registerUser()
    $validator = Validator::make(Input::all(),array(
            'username' => 'required|email|unique:user',
            'password' => 'required|min:8',
            'fullname' => 'required'
        )
    );
    if($validator->fails())

        return Redirect::to('signup')->withInput()->withErrors($validator);
    else
        return Redirect::route('user');
    


路线 Route::get('/signup',array('as'=>'signup', 'uses'=>'HomeController@signUp'));

查看

<?php print_r($errors) ; ?>

【问题讨论】:

你能粘贴代码如何显示错误吗? 您在问题中说您调用withErrors($validator-&gt;messages()),但在代码示例中您调用withErrors($validator) - 它是什么? 我已经尝试了 withErrors($validator) 和 withErrors($validator->messages()),它们都不起作用.. @nhbjgfcxhgchg @RobinValk 我只是在查看页面上使用 print_r($errors) 好吧,您如何在视图中显示错误? 【参考方案1】:

以下是来自 Laravel 网站的相关信息:

Route::post('register', function()

    $rules = array(...);

    $validator = Validator::make(Input::all(), $rules);

    if ($validator->fails())
    
        return Redirect::to('register')->withErrors($validator);
    
);

你可以像这样从 Blade 中引用...

<?php echo $errors->first('email'); ?>

注意 $errors 是一个对象吗?您调用 print_r($errors) 可能不会产生非常有用的输出。

试试这个...

<?php
    var_dump($errors->first('username'));
    var_dump($errors->first('password'));
    var_dump($errors->first('email'));
?>

另外:您的unique:user 验证应该是unique:user,username。使用数据库表名和列名,而不是模型值。

注意:如果您在浏览器中对此进行测试,您可能需要考虑使用Clockwork,这样您就可以从浏览器中查看会话信息,而无需调用 print_r/var_dump。

【讨论】:

先生,感谢您的回复,但我发现了我的问题.. 我在会话文件(配置文件夹中)中更改了 secure = true,并在没有 https 的本地网络服务器上对其进行了测试,所以这就是我没有得到的原因作为错误消息的回复存储在 Sessions 中。但是仍然感谢您的详细回答和您指出的其他一些事情,非常感谢:) Laravel Debugbar 也很有用:D【参考方案2】:

问题是我在session 文件(在config 文件夹中)中将secure 选项更改为true,并且在没有https 的情况下在本地服务器上对其进行测试。这就是我的错误没有显示在视图中的原因。

【讨论】:

以上是关于Laravel withError函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:更改其函数名称时,belongsTo 不起作用

AS 函数在 LARAVEL 数据库语句中不起作用

Laravel 刀片模板不起作用 - 调用未定义的函数 Illuminate\View\Compilers\token_get_all()

Laravel注销功能不起作用

将 Laravel 从 5.6 升级到 6.0 后,调用未定义的 str_random() 函数不起作用

Laravel 中间件“除外”规则不起作用