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

时间:2014-12-05 08:41:00

标签: php

我有以下问题:

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}

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

1 个答案:

答案 0 :(得分:1)

发生这种情况的原因是你实际上回应了你的封闭$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>