【问题标题】:I tried validating and I get this mesaage : Method [validateString] does not exist我尝试验证并收到此消息:方法 [validateString] 不存在
【发布时间】:2016-11-22 21:44:51
【问题描述】:

我的验证似乎不太正确,所以我在尝试将费用存储到我的数据库中时收到此错误消息。

我之前已经检查过相关问题,但并没有太大帮助。我创建了 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);
           }
      }

我想知道是什么问题。谁能给我一个提示! 谢谢

【问题讨论】:

  • 您收到什么错误?
  • 发布您的错误。

标签: php string validation laravel store


【解决方案1】:

对于您的验证,您可以使用 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>

编辑:嘿,你有简单的验证,所以你有一个简单的方法来使用这样的验证,但你的方法是正确的,但你为什么不能尝试简单的方法? 这是 Laravel 4.2 使用验证的简单方法示例

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

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

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

【讨论】:

  • 我正在使用 Laravel 4.2,我正在尝试什么不起作用,但它不起作用。尝试了这两个建议。可能数组 $rules 定义不正确。
  • @ajax_27 或许它会帮助你
  • 我尝试按照您的建议进行验证,并且确实有效,但是我的项目是以另一种方式构建的,因此我正在尝试遵循该约定。问题是 Laravel 4.2 验证规则。再次感谢您的帮助!
猜你喜欢
  • 2014-09-04
  • 2019-11-22
  • 1970-01-01
  • 2021-04-28
  • 2021-03-31
  • 1970-01-01
  • 2013-06-20
  • 2016-07-12
  • 1970-01-01
相关资源
最近更新 更多