Я пытаюсь создать кортеж в своей таблице. Данные взяты из формы или получены. Моя база данных:
Посмотреть
@extends('plantilla') @section('contenido') <div class="formulario"> {{Form::open(array('url' => 'servicio/create', 'files' => true))}} <input type="text" class="form-control" id="direccion" name="dirrecion" placeholder="Dirección" > <input type="text" class="form-control" id="cliente" name="cliente" placeholder="Nombre Cliente" > <input type="time" name='horainicio' id='horainicio' min='time' max='time' > {{Form::file('pdf', array('title' => 'Search for a file to add'))}} {{Form::select('idtecnico', $tecnico_selector)}} {{ Form::submit('Guardar', array('class' => 'btn btn-primary ')) }} {{Form::close()}} </div> @stop
маршрут
Route::get('servicio/create', function(){ $tecnicos = Tecnico::all(); $tecnico_selector = array(); foreach ($tecnicos as $tecnico) { $tecnico_selector[$tecnico->idTecnico] = $tecnico->Nombre; } return View::make('formservicio', array('tecnico_selector' => $tecnico_selector)); }); Route::post('servicio/create', array('uses' => 'ServicioController@doCreate'));
Модель
class Servicio extends Eloquent{ protected $table = 'Servicio'; protected $primaryKey = 'idServicio'; protected $fillable = array( 'Direccion', 'RutaPDF', 'Completado' ); public function materialUsado(){ return $this->hasMany('Material_Usado', 'idMaterial_Usado'); } public function tecnicos(){ return $this->belongsToMany('Tecnico', 'Servicio_Tecnico', 'Servicio_idServicio', 'Tecnico_idTecnico'); } }
контроллер
class ServicioController extends BaseController{ public function doCreate(){ $rules = array( 'idtecnico' => 'required', 'direccion' => 'required', 'cliente' => 'required' ); $validator = Validator:: make(Input::all(), $rules); if($validator->fails()){ return Redirect::to('servicio/create') ->withErros($validator) ->withInput(); }else{ $input = array( 'Direccion' => Input::get('direccion'), 'Cliente' => Input::get('cliente'), 'Completado' => '0' ); Servicio::create($input); /*$servicio = new Servicio; $servicio->Direccion = Input::get('direccion'); $servicio->Cliente = Input::get('cliente'); $servicio->Completado = '0'; $servicio->tecnicos->attach($idtecnico); $servicio->save();*/ $path = public_path().'/servicio/'.$servicio->idServicio; File::makeDirectory($path, $mode = 0777, true, true); // creamos la carpeta $archivoPdf = Input::file('pdf'); $archivoPdf->move($path, 'servicio'); /*$servicio->RutaPDF = $path.'/servicio'; $servicio->save();*/ } } }
Когда вы полностью меняете форму и отправляете ее, следующая ошибка
как я могу это исправить?
У вас есть опечатка в вашем контроллере: ->withErros($validator)
– она должна быть withErrors
. Разница большая.
Laravel конвертирует с withErros($validator)
в with(['erros' => $validator])
, что означает попытку поместить весь объект проверки в сеанс. Чтобы помещать вещи в хранилище сеансов, сначала необходимо сначала сериализовать, что и вызывает ошибку.
У меня была аналогичная проблема:
Проблема заключалась в следующем: