Angularjs 正在验证Laravel中的输入::json()
验证不适用于Input::json。我尝试了使用json_解码/使用数组的不同方法,但仍然没有成功。这是我的密码:Angularjs 正在验证Laravel中的输入::json(),angularjs,laravel,angular-resource,Angularjs,Laravel,Angular Resource,验证不适用于Input::json。我尝试了使用json_解码/使用数组的不同方法,但仍然没有成功。这是我的密码: //routes.php Route::get('create', function() { $rules = array( 'username' => 'required', 'password' => 'required', ); $input = Input::json(); //var_dump
//routes.php
Route::get('create', function() {
$rules = array(
'username' => 'required',
'password' => 'required',
);
$input = Input::json();
//var_dump($input); //outputs std obj with correct inputs
$validation = Validator::make($input, $rules);
if ($validation->fails()) { //throws exeption "Call to a member function to_array() on a non-object"
return Response::json($validation->errors->all());
}
}
我使用Angular Resource发布数据…但它总是抛出一个错误“调用非对象上的_array()的成员函数”…我无法粘贴Angular代码,因为我无法正确格式化它,stackoverflow不允许我这样做。这是因为在input::json()中返回一个对象,验证方法需要数组或有说服力的对象。您可以做的是将对象转换为数组
$input = Input::json();
$input_array = (array)$input;
$validation = Validator::make($input_array, $rules);
更新:
在与@Ryan讨论之后,我注意到问题不是来自验证,而是在响应中::eloquent()是通过数组而不是一个eloquent对象传递的 这是因为在input::json()中返回一个对象,验证方法需要数组或雄辩的对象。您可以做的是将对象转换为数组
$input = Input::json();
$input_array = (array)$input;
$validation = Validator::make($input_array, $rules);
更新:
在与@Ryan讨论之后,我注意到问题不是来自验证,而是在响应中::eloquent()是通过数组而不是一个eloquent对象传递的 从[至少]Laravel 5.3开始,您需要在@Raftalks post的答案中添加->all()。下面是一个在一行中自动抛出异常(422)和所有错误的速记方法:
use Validator;
use Input;
... other stuff
Validator::make((array)Input::json()->all(), ["rule"=>"filter"])->validate();
从[至少]Laravel 5.3开始,您需要在@Raftalks post的答案中添加->all()。下面是一个在一行中自动抛出异常(422)和所有错误的速记方法:
use Validator;
use Input;
... other stuff
Validator::make((array)Input::json()->all(), ["rule"=>"filter"])->validate();
我已经尝试过将Input::json转换为array和其他格式,但仍然遇到相同的错误“在非对象上调用成员函数到_array()”;var_转储返回$input返回正确的数组。我对此感到抓狂。@Ryan你能将完整的错误消息粘贴到paste.laravel.com上并在此处共享链接吗?未处理的异常消息:调用成员函数到非对象位置上的_array():`C:\xampp\htdocs\myApp\framework\laravel\helpers.php,第288行
我不知道laravel调用_array()的原因关于数组…我传递的数组参数已经不是对象了。你能在Laravel IRC上联机吗?我尝试过在IRC上发布它,但没有人尝试回复我…我把我的代码粘贴在这里:然后在IRC频道上发布,但仍然没有得到回复。我已经尝试过将Input::json转换为数组和所有内容,但仍然得到相同的错误“对非对象上的_array()调用成员函数”var_dumping返回$input返回正确的数组。对此我有些挠头。@Ryan能否将完整的错误消息粘贴到paste.laravel.com上,并在此处共享链接未经处理的异常消息:对_array()调用成员函数在非对象位置:`C:\xampp\htdocs\myApp\framework\laravel\helpers.php,第288行
我不知道laravel为什么调用_array()我传递的数组参数已经不是对象了。你能在Laravel IRC上上网吗?我试着在IRC上发布,但没有人回复我。我把代码贴在这里,然后在IRC频道上发布,但仍然没有回复。