私は、フォームからデータベースに挿入したいファイルを検証しようとしています。ファイルは "csv"であり、その内容も検証されます。Laravel:CSVインポートをインポートする
public function importFromCsv(array $data) {
if (Input::hasFile('import_file')) {
$path = Input::file('import_file')->getRealPath();
$data = Excel::load($path, function($reader) {
//...
})->get();
$this->validator = new QuoteValidator();
$this->validate($data);
if (!empty($data) && $data->count()) {
foreach ($data as $key => $value) {
$insert[] = [
'content' => $value->content,
'created_at' => $value->created_at,
'updated_at' => $value->created_at
];
}
if (!empty($insert)) {
DB::table('quotes')->insert($insert);
}
}
}
return true;
}
validateメソッド::私が得た
public function validate(array $data) {
$this->validator = Validator::make($data, $this->rules, $this->messages);
if ($this->validator->fails()) {
$exception = new InvalidDataException();
$errors = $this->_parseMessages();
$exception->setErrors($errors);
throw $exception;
}
}
エラー:QuoteServiceで
ErrorExceptionここ
は、フォームを処理し、コントローラでインポート方法です。 PHPの行123:引数1が に渡されたApp \ Services \ QuoteService :: validate()は、型配列0123でなければなりませんライン233上 /var/www/html/Acadia/app/Services/QuoteService.phpに呼び出され、指定されたオブジェクト、および 定義さ
あなたの方法 'validate'のコードを..postしてください:あなたは、メソッド
toArray()
例を呼び出すことによってそれを行うことができます。それは配列を受け取ることを期待しています。 'data'はロードされたExcelオブジェクトです – cmnardi
public function validate(array $ data) { $ this-> validator = Validator :: make($ data、$ this-> rules、$ this-> messages); if($ this-> validator-> fails()){ $ exception = new InvalidDataException(); $ errors = $ this - > _ parseMessages(); $例外 - > setErrors($エラー); throw $ exception; } } –
私は、Excelオブジェクトを検証するためにバリデーターを使用しようとしていますが、このバリデーターはフォームフィールドの検証を期待していると思います。このまま試してみましたか? http://stackoverflow.com/questions/23625672/laravel-file-upload-validation – cmnardi