【问题标题】:Serialization of 'Closure' is not allowed - laravel不允许序列化“闭包” - laravel
【发布时间】:2014-06-20 12:27:16
【问题描述】:

我正在尝试在我的表中创建一个元组。数据来自表格或收到。 我的数据库:

查看

@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();*/







    }
}
}

当完全改变表单并发送时,出现以下错误

我该如何解决?

【问题讨论】:

  • 像错误消息所述,您在$this-&gt;attributes 的某处有一个Closure(一个匿名函数)。函数不能序列化。

标签: php mysql laravel laravel-4


【解决方案1】:

您的控制器中有错字:-&gt;withErros($validator) - 应该是 withErrors。差别很大。

Laravel 将withErros($validator) 转换为with(['erros' =&gt; $validator]),这意味着尝试将整个验证器对象放入会话中。要将东西放入会话存储中,首先需要对其进行序列化,这就是导致错误的原因。

【讨论】:

  • 谢谢。这很有帮助 --- 从 -&gt;with_errors-&gt;with_input 更改为 -&gt;withErrors-&gt;withInput 解决了我的问题。
【解决方案2】:

我有类似的问题:

问题是:

  • 我正在验证输入不存在。
  • 列(数据库)的名称与输入的名称不相似
  • 列(数据库)不为空

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 2018-05-08
    • 2014-04-21
    • 2019-01-30
    • 2017-02-14
    • 2012-11-23
    • 1970-01-01
    相关资源
    最近更新 更多