当我想在我的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
我正在使用表单请求验证方法来验证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中使用此验证方法进行表单请求验证?
我是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的授权方法中使用它呢?
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数字字段?
我想验证"表单请求"中的路由参数,但不知道如何操作.
下面是代码示例,我正在尝试:
路线
// 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) 我正在使用 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的选项.但我没有找到任何默认支持的选项.
我试图覆盖我的应用程序请求抽象类,如下所示:
<?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) 我在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自定义消息.这是我到目前为止所尝试的:
$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)
但它不起作用.该消息仍然与默认消息相同.我该如何解决这个问题,以便我可以使用自定义消息?
由于将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.".我不明白的是:
为什么验证失败时未设置为required?意思是,它应该忽略它,如果值为空则不抛出错误,对吧?
如果将值设置为null?,为什么验证失败?
为什么在根本没有发送参数时验证失败?(就像lastName根本没有张贴的那样)
Laravel 5.3验证中有什么变化吗?
我正在尝试验证日期字段,只有它存在.在从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 ×10
laravel-5 ×6
php ×5
laravel-5.2 ×3
laravel-5.3 ×1
laravel-5.4 ×1
routes ×1
validation ×1