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->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 不起作用
Laravel 刀片模板不起作用 - 调用未定义的函数 Illuminate\View\Compilers\token_get_all()