标签: laravel-validation

未定义的变量:Laravel中的错误

当我想在我的laravel项目中注册用户时,页面总是说

未定义的变量:错误(查看:/var/www/resources/views/auth/register.blade.php)"

根据Laravel文档,$errors应始终自动设置:

因此,重要的是要注意每个请求的所有视图中都会提供$ errors变量,这样您就可以方便地假设$ errors变量始终定义并且可以安全使用.

我使用时在每个视图上都有这个:

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
Run Code Online (Sandbox Code Playgroud)

或者当我想使用$errors变量时的任何其他方式.

为什么是这样?我之前从未遇到过这个问题.

有谁可以帮助我吗?

laravel laravel-5 laravel-validation laravel-middleware laravel-5.2

62
推荐指数
3
解决办法
6万
查看次数

在Laravel 5中使用表单请求验证时如何添加自定义验证规则

我正在使用表单请求验证方法来验证laravel 5中的请求.我想用表单请求验证方法添加我自己的验证规则.我的请求类在下面给出.我想添加自定义验证numeric_array和字段项.

  protected $rules = [
      'shipping_country' => ['max:60'],
      'items' => ['array|numericarray']
];
Run Code Online (Sandbox Code Playgroud)

我的cusotom功能如下

 Validator::extend('numericarray', function($attribute, $value, $parameters) {
            foreach ($value as $v) {
                if (!is_int($v)) {
                    return false;
                }
            }
            return true;
        });
Run Code Online (Sandbox Code Playgroud)

如何在laravel5中使用此验证方法进行表单请求验证?

php custom-validators laravel laravel-5 laravel-validation

37
推荐指数
6
解决办法
5万
查看次数

如何在Laravel 5表单请求中使用请求路由参数?

我是Laravel 5的新手,我正在尝试使用新的表单请求来验证我的应用程序中的所有表单.

现在我陷入了需要删除资源的地步,我创建了一个DeleteResourceRequest,只是为了使用authorize方法.

问题是我需要在route参数中找到所请求的id,但我看不到如何将其转换为authorize方法.

我可以在控制器方法中使用id,如下所示:

public function destroy($id, DeletePivotRequest $request)
{
    Resource::findOrFail($id);
}
Run Code Online (Sandbox Code Playgroud)

但是如何在Form Request的授权方法中使用它呢?

php laravel laravel-routing laravel-5 laravel-validation

33
推荐指数
4
解决办法
5万
查看次数

在laravel 5中验证数字输入的长度

foo.blade.php

<input type="text" name="national-id" />
Run Code Online (Sandbox Code Playgroud)

FooController.php

$rules = [
    'national-id' => 'required|size:10|numeric'
];
Run Code Online (Sandbox Code Playgroud)

national-id字段应该包含10 digits,我实际上期望上面的代码验证这一点,但它将检查如果national-id完全等于10或不...

我如何验证length数字字段?

php laravel laravel-5 laravel-validation laravel-5.2

31
推荐指数
3
解决办法
4万
查看次数

Laravel 5如何验证路由参数?

我想验证"表单请求"中的路由参数,但不知道如何操作.

下面是代码示例,我正在尝试:

路线

// controller Server
Route::group(['prefix' => 'server'], function(){
    Route::get('checkToken/{token}',['as'=>'checkKey','uses'=> 'ServerController@checkToken']);
});
Run Code Online (Sandbox Code Playgroud)

调节器

namespace App\Http\Controllers;


use App\Http\Controllers\Controller;

use Illuminate\Http\Request;
use App\Http\Requests;


class ServerController extends Controller {
    public function checkToken( \App\Http\Requests\CheckTokenServerRequest $request) // OT: - why I have to set full path to work??
        {   
            $token = Token::where('token', '=', $request->token)->first();      
            $dt = new DateTime; 
            $token->executed_at = $dt->format('m-d-y H:i:s');
            $token->save();

            return response()->json(json_decode($token->json),200);
        }
}
Run Code Online (Sandbox Code Playgroud)

CheckTokenServerRequest

namespace App\Http\Requests;

use App\Http\Requests\Request;

class CheckTokenServerRequest extends Request {

        //autorization

        /**
         * Get the validation rules …
Run Code Online (Sandbox Code Playgroud)

routes laravel laravel-5 laravel-validation laravel-request

27
推荐指数
4
解决办法
1万
查看次数

如何在Laravel 5.1中强制FormRequest返回json?

我正在使用 FormRequest来验证从我的智能手机应用程序的API调用中发送的内容.所以,我希望FormRequest在验证失败时总是返回json.

我看到了Laravel框架的以下源代码,如果reqeust是Ajax或wantJson,则FormRequest的默认行为是返回json.

//Illuminate\Foundation\Http\FormRequest class
/**
 * Get the proper failed validation response for the request.
 *
 * @param  array  $errors
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function response(array $errors)
{
    if ($this->ajax() || $this->wantsJson()) {
        return new JsonResponse($errors, 422);
    }

    return $this->redirector->to($this->getRedirectUrl())
                                    ->withInput($this->except($this->dontFlash))
                                    ->withErrors($errors, $this->errorBag);
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以添加Accept= application/json请求标头.FormRequest将返回json.但我希望提供一种更简单的方法来通过默认支持json来请求我的API,而无需设置任何标头.所以,我试图在Illuminate\Foundation\Http\FormRequest课堂上找到一些强制FormRequest响应json的选项.但我没有找到任何默认支持的选项.

解决方案1:覆盖请求抽象类

我试图覆盖我的应用程序请求抽象类,如下所示:

<?php

namespace Laravel5Cg\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\JsonResponse;

abstract class Request extends FormRequest
{
    /**
     * Force response json type when validation fails
     * @var bool …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-5 laravel-validation

23
推荐指数
3
解决办法
1万
查看次数

Laravel 5.2验证错误

我在Laravel 5.2中验证有些麻烦当我在这样的控制器中尝试验证请求时

$this->validate($request, [
                'title' => 'required',
                'content.*.rate' => 'required',
            ]);
Run Code Online (Sandbox Code Playgroud)

验证器捕获错误,但不将它们存储到会话中,所以当我尝试在模板中调用此代码时

 @if (isset($errors) && count($errors) > 0)
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif
Run Code Online (Sandbox Code Playgroud)

Laravel抛出错误

Undefined variable: errors (View: /home/vagrant/Code/os.dev/resources/views/semantic/index.blade.php)
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此代码验证时

 $validator = Validator::make($request->all(), [
                'title' => 'required',
                'content.*.rate' => 'required'
            ]);

            if ($validator->fails()) {
                return redirect()
                    ->back()
                    ->withInput($request->all())
                    ->withErrors($validator, 'error');
            }
Run Code Online (Sandbox Code Playgroud)

变量$ error在模板中也不可用,但如果我尝试在控制器中显示错误

   if ($validator->fails()) {
                dd($validator->errors()->all());
            }
Run Code Online (Sandbox Code Playgroud)

错误显示但我无法从模板访问它们.

怎么了?

laravel laravel-validation laravel-5.2

21
推荐指数
3
解决办法
4万
查看次数

自定义消息laravel验证

我正在尝试创建用于验证的laravel自定义消息.这是我到目前为止所尝试的:

$messages = [
    'required'  => 'Harap bagian :attribute di isi.',
    'unique'    => ':attribute sudah digunakan',
];
$validator = Validator::make($request->all(), [
    'username' => array('required','unique:Userlogin,username'),
    'password' => 'required',
    'email'    => array('required','unique:Userlogin,email'),$messages
]);

if ($validator->fails()) { 
    return redirect('/')
        ->withErrors($validator) // send back all errors to the login form
        ->withInput();
} else {
    return redirect('/')
        ->with('status', 'Kami sudah mengirimkan email, silahkan di konfirmasi');   
}   
Run Code Online (Sandbox Code Playgroud)

但它不起作用.该消息仍然与默认消息相同.我该如何解决这个问题,以便我可以使用自定义消息?

php laravel laravel-validation

20
推荐指数
10
解决办法
4万
查看次数

当变量为空时,Laravel 5.3验证失败

由于将laravel从5.1升级到5.3,我在验证方面遇到了一些奇怪的问题.

当我发布这样的数据时:

firstName    null
Run Code Online (Sandbox Code Playgroud)

验证规则如下:

$validator = Validator::make($postData, [
              'firstName'           => 'string|max:255',
              'lastName'            => 'string|max:255'
            ]);
Run Code Online (Sandbox Code Playgroud)

上面的消息失败了"The XYZ must be a string.".我不明白的是:

  1. 为什么验证失败时未设置为required?意思是,它应该忽略它,如果值为空则不抛出错误,对吧?

  2. 如果将值设置为null?,为什么验证失败?

  3. 为什么在根本没有发送参数时验证失败?(就像lastName根本没有张贴的那样)

Laravel 5.3验证中有什么变化吗?

validation laravel laravel-validation laravel-5.3

19
推荐指数
2
解决办法
2万
查看次数

Laravel 5.4有时验证规则不起作用

我正在尝试验证日期字段,只有它存在.在从Laravel 5.2升级到5.4之前,它工作正常

在Laravel 5.2中,此规则可以正常工作:

public function rules()
{
    return [
        'available_from' => 'date',
    ];

}
Run Code Online (Sandbox Code Playgroud)

在5.4中它返回验证错误The available from is not a valid date.我尝试了这个新规则

public function rules()
{
    return [
        'available_from' => 'sometimes|date',
    ];

}
Run Code Online (Sandbox Code Playgroud)

仍然有相同的错误,似乎sometimes规则不会影响验证.我怎样才能摆脱这个错误?

我不明白为什么Laravel改变了以前工作的东西!

laravel laravel-validation laravel-5.4

15
推荐指数
1
解决办法
5915
查看次数