可捕获的致命错误:无法将对象转换为字符串


Catchable fatal error: Object could not be converted to string

>我有以下查询:

ORM::for_table('producto')->where_like('nombre_producto',"%{$valor}%")->find_array();

我收到以下查询

array (size=1)
  0 => 
    array (size=11)
      'id' => string '1' (length=1)
      'nombre_producto' => string 'Calabacin blanco' (length=16)
      'nombre_latin' => null
      'peso' => string '100.00' (length=6)
      'descatalogado' => string '0' (length=1)
      'dimensiones' => null
      'descripcion' => null
      'cantidad_stock' => string '100' (length=3)
      'precioVenta' => string '1.00' (length=4)
      'gama_id' => string '2' (length=1)
      'proveedor_id' => string '1' (length=1)

我想向 heredoc 展示选择的值,我这样做:

  $optionproducts = function($productos)
       {
          $data="";
          foreach($productos as $producto)
          {
              $data.="<option value='{$producto['id']}'>{$producto['nombre']}</option>";
          }
          return $data;
       };

我的字符串 heredoc 是:

$cadena = <<<EOD
    <form class='form-horizontal' method='POST' role='form' action={{ urlFor('lineorder_create',{'id':{'$productos['id']}}) }}>
    <h2>Listado de {$str}</h2>
    <div class='form-group'>
        <label class='col-md-4 col-xs-4 control-label' for='selectproductname'>Nombre producto:</label>
        <div class='col-md-5 col-xs-5'>
            <select name='selectproductname' class='form-control'>
                {$optionproducts}
            </select>
        </div>
    </div>

我得到的错误是,在第 53 行中,函数中的值无法转换为字符串

Catchable fatal error: Object of class Closure could not be converted to string in C:'wamp'www'viver'public'products_ajax.php on line 53
The line 53 in my products_ajax.php is in the heredoc {$optionproducts}

我怎么能解决这个问题?谢谢

发生这种情况的

原因是您实际上回显了您的闭包$optionproducts并且它是一个

闭包对象,相反,您需要像函数$optionproducts($parameter)一样调用它。

  $cadena = <<<EOD
      <form class='form-horizontal' method='POST' role='form' action={{ urlFor('lineorder_create',{'id':{'$productos['id']}}) }}>
      <h2>Listado de {$str}</h2>
      <div class='form-group'>
          <label class='col-md-4 col-xs-4 control-label' for='selectproductname'>Nombre producto:</label>
          <div class='col-md-5 col-xs-5'>
              <select name='selectproductname' class='form-control'>
                  <!-- you need to call it -->
                  {$optionproducts($productos)}
              </select>
          </div>
      </div>