我的验证似乎不太正确,所以我在尝试将费用存入我的数据库时收到此错误消息。
我已经预先检查了相关的问题,但它并没有很大的帮助。我使用此数组创建了 FeeValidator ,扩展了 Validator :
<?php namespace \Events\Services\Validations;
use \Events\Services\Validations\AbstractValidator as Validator;
class FeeValidator extends Validator {
protected $rules = array(
'title' => 'required',
'price' => 'required|numeric',
'quantity' => 'integer',
'valid_from' => 'date',
'valid_to' => 'date',
'ticket_limit' => 'integer',
'url_redirect' => 'string',
);
}
然后我在 FeesRepository 类中有一个带有 store()函数的FeesRepository:
<?php namespace \Events\Repositories;
use \Events\Models\Fee as Fees;
use \Events\Models\Event as Event;
use \Events\Repositories\Contracts\FeesRepositoryInterface;
use \Events\Services\Validations\FeeValidator;
class FeeRepository implements FeesRepositoryInterface {
protected $theme;
protected $feeValidator;
public function store($eventId) {
$validation = $this->feeValidator->with(\Input::all());
if ($validation->passes()) {
$fee = new Fees;
$fee->event_id = $eventId;
$fee->title = \Input::get('title');
$fee->price = \Input::get('price');
$fee->quantity = \Input::get('quantity') == "" ? 1 : \Input::get('quantity');
$fee->discount = \Input::get('discount');
$fee->valid_from = \Input::get('valid_from');
$fee->valid_to = \Input::get('valid_to');
$fee->coupon = \Input::get('coupon') == "" ? null : \Input::get('coupon');
$fee->tickets_limit = \Input::get('ticket_limit');
$fee->url_redirect = \Input::get('url_redirect');
$fee->save();
$id = $fee->event->id;
if ( $fee->event->eventable_type == '\Events\Models\Training' )
{
return \Redirect::route('admin.training.edit' , array($id));
}
elseif( $fee->event->eventable_type == '\Events\Models\Meetup' ) {
return \Redirect::route('admin.meetup.edit' , array($id));
}
else
{
return \Redirect::route('admin.conference.edit' , array($id));
}
}
else {
return \Redirect::back()->withInput()->withErrors($this->feeValidator->errors());
}
}
}
最后,您可以在 FeesController 中查看 store()函数:
<?php namespace \Events\Controllers;
use \Events\Repositories\FeeRepository as Fee;
use \Events\Models\Fee as Fees;use \Events\Services\Validations\FeeValidator;
class FeesController extends \BaseController {
protected $fee;
protected $feeValidator;
public function __construct(Fee $fee , FeeValidator $feeValidator)
{
$this->fee = $fee;
$this->feeValidator = $feeValidator;
}
public function store($eventId) {
return $this->fee->store($eventId);
}
}
我想知道这是什么问题。有人能给我一个暗示!的由于!
答案 0 :(得分:0)
我不知道你在那里使用的框架,但这里是我的laravel验证
使用Validator;
$rules = array(
'token' => 'required|min:5|max:50|string'
);
// Create a new validator instance from our validation rules
$validator = Validator::make(Input::all(), $rules);
// If validation fails, we'll exit the operation now.
if ($validator->fails()) {
return $validator->messages()->toJson();
}
答案 1 :(得分:0)
对于您的验证,您可以使用已在Laravel https://laravel.com/docs/5.2/validation中构建的默认验证来显示您可以使用 JS 的错误,或者只是在您的表单 ex: < / p>
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="col-md-4 control-label">E-Mail Address</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}">
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>@endif
</div>
</div>
编辑:嘿,你有简单的验证,所以你有一个简单的方法来使用这样的验证,但你的方式是正确的,但为什么你不能尝试简单的方法? 这对于Laravel 4.2简单的方法来使用验证示例
Route::post('register', function()
{
$rules = array(...);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
return Redirect::to('register')->withErrors($validator);
}
});