2016-07-19 7 views
0

Кажется, мой валидация не совсем корректна, поэтому я получаю это сообщение об ошибке, пока я пытаюсь хранить платежи в моей базе данных.Я пробовал проверить, и я получаю этот mesaage: Метод [validateString] не существует

У меня есть проверенные связанные вопросы, но это не помогло. Я создал FeeValidator, который расширяет валидатора с этим массивом:

<?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 с этой функциеймагазин() в 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 :

<?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); 
      } 
     } 

Im интересно, в чем проблема. Может кто-нибудь дать мне подсказку! Thanks!

+0

Какая ошибка вы принимаете? – Daniel

+0

опубликовать вашу ошибку. –

ответ

0

Для вашего подтверждения, вы можете использовать проверку по умолчанию, которые уже построить в Laravel https://laravel.com/docs/5.2/validation для отображения ошибок вы можете использовать JS или просто в вашей форме Ex:

<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> 

EDIT: эй, у вас простая проверка, поэтому у вас есть простой способ использовать валидацию, как это, но ваш путь правильный, но почему вы не можете попробовать легко? Это для Laravel 4.2 простой пример использования

Route::post('register', function() 
{ 
    $rules = array(...); 

    $validator = Validator::make(Input::all(), $rules); 

    if ($validator->fails()) 
    { 
     return Redirect::to('register')->withErrors($validator); 
    } 
}); 
+0

Я использую Laravel 4.2, и я пытаюсь, что не работает, и он не работает. Пробовал эти два предложения. Возможно, массив ** $ rules ** определен неверно. –

+0

@ ajax_27 chek mayb это поможет вам – Hamelraj

+0

Я пробовал проверить, как вы мне предложили, и это действительно работает, но мой проект построен по-другому, поэтому я стараюсь следовать этому соглашению. Проблема была в правиле проверки Laravel 4.2. Еще раз спасибо за помощь! –

0

Я не знаю рамки Wich вы используете там, но вот моя Laravel проверка

использование валидатор;

$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(); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^