Jade中的多行PHP脚本

时间:2016-02-17 16:36:28

标签: php html pug

我正在使用Jade和PHP构建一个网站,并且我不能在我的Jade文件中包含多行PHP脚本,因为它会抛出缩进错误。

这将是我的代码示例:

        p.base Somos una empresa de distribución de Temped ea nos mi, sequam autecer spernat essimos dolorepud
        ul.grilla-productos-home 
            <?php
                $sql        = "SELECT a.IdProducto,a.NombreCorto,a.Descripcion as Descripcion,a.precioUnitario,a.Imagen,b.Descripcion as Categoria,c.Descripcion as SubCategoria FROM productos a, categoria b, subcategoria c WHERE a.IdCategoria=b.idCategoria AND a.IdSubCategoria=c.IdSubCategoria limit 12";
                $resultados = $pdo->query($sql);
                while ($registro = $resultados->fetch(PDO::FETCH_ASSOC)) {
                echo "<li class='producto'><ul class='producto-componentes'><li class='imagen-producto'><img src=" . $registro['Imagen'] . "alt='Sanitarios'/></li><li class='titulo-producto'>" . $registro["NombreCorto"] . "</li></li><li class='Material-producto'><p class='titulo-divisor-producto'>Material</p><p class='material-producto'>" . $registro['Descripcion'] . "</p></li><li class='precio-producto'>$" . $registro['precioUnitario'] . "</li><a href='detalle.php?Id=" . $registro['IdProducto'] . "'class='cta-ghost main'>Ver detalles</a> </ul></li>";
                }
            ?> 
            li.producto

当它尝试编译上面的代码时,它会抛出错误

unexpected token "indent"

指向我脚本的第二行(“$ sql ...”)

由于这个问题,我被迫将脚本缩小为一行,这使得他们之后很难编辑

有没有办法在Jade模板中包含多行内联脚本?有没有更好的做法让PHP脚本在Jade中运行?

谢谢!

2 个答案:

答案 0 :(得分:1)

只需将您的php作为纯文本加上

p.base Somos una empresa de distribución de Temped ea nos mi, sequam autecer spernat essimos dolorepud
  ul.grilla-productos-home  
  | <?php
  |              $sql        = "SELECT a.IdProducto,a.NombreCorto,a.Descripcion as Descripcion,a.precioUnitario,a.Imagen,b.Descripcion as Categoria,c.Descripcion as SubCategoria FROM productos a, categoria b, subcategoria c WHERE a.IdCategoria=b.idCategoria AND a.IdSubCategoria=c.IdSubCategoria limit 12";
  |              $resultados = $pdo->query($sql);
  |              while ($registro = $resultados->fetch(PDO::FETCH_ASSOC)) {
  |                echo "<li class='producto'><ul class='producto-componentes'><li class='imagen-producto'><img src=" . $registro['Imagen'] . "alt='Sanitarios'/></li><li class='titulo-producto'>" . $registro["NombreCorto"] . "</li></li><li class='Material-producto'><p class='titulo-divisor-producto'>Material</p><p class='material-producto'>" . $registro['Descripcion'] . "</p></li><li class='precio-producto'>$" . $registro['precioUnitario'] . "</li><a href='detalle.php?Id=" . $registro['IdProducto'] . "'class='cta-ghost main'>Ver detalles</a> </ul></li>";
  |              }
  |          ?> 
  li.producto

将产生

<p class="base">Somos una empresa de distribución de Temped ea nos mi, sequam autecer spernat essimos dolorepud
  <ul class="grilla-productos-home"> </ul><?php
               $sql        = "SELECT a.IdProducto,a.NombreCorto,a.Descripcion as Descripcion,a.precioUnitario,a.Imagen,b.Descripcion as Categoria,c.Descripcion as SubCategoria FROM productos a, categoria b, subcategoria c WHERE a.IdCategoria=b.idCategoria AND a.IdSubCategoria=c.IdSubCategoria limit 12";
               $resultados = $pdo->query($sql);
               while ($registro = $resultados->fetch(PDO::FETCH_ASSOC)) {
                 echo "<li class='producto'><ul class='producto-componentes'><li class='imagen-producto'><img src=" . $registro['Imagen'] . "alt='Sanitarios'/></li><li class='titulo-producto'>" . $registro["NombreCorto"] . "</li></li><li class='Material-producto'><p class='titulo-divisor-producto'>Material</p><p class='material-producto'>" . $registro['Descripcion'] . "</p></li><li class='precio-producto'>$" . $registro['precioUnitario'] . "</li><a href='detalle.php?Id=" . $registro['IdProducto'] . "'class='cta-ghost main'>Ver detalles</a> </ul></li>";
               }
           ?> 
  <li class="producto"></li>
</p>

答案 1 :(得分:0)

如果你使用这个Jade的PHP分支:https://github.com/kylekatarnls/jade-php,你可以这样做:

p.base Somos una empresa de distribución de Temped ea nos mi, sequam autecer spernat essimos dolorepud
  ul.grilla-productos-home
    - $sql        = "SELECT a.IdProducto,a.NombreCorto,a.Descripcion as Descripcion,a.precioUnitario,a.Imagen,b.Descripcion as Categoria,c.Descripcion as SubCategoria FROM productos a, categoria b, subcategoria c WHERE a.IdCategoria=b.idCategoria AND a.IdSubCategoria=c.IdSubCategoria limit 12"
    - $resultados = $pdo->query($sql)->fetchAll(PDO::FETCH_OBJ)
    for registro in resultados
      li.producto: ul.producto-componentes
        li.imagen-producto
          img(src=registro.Imagen alt='Sanitarios')
      li.titulo-producto
        =registro.NombreCorto
      li.Material-producto:p.titulo-divisor-producto ...

但我建议在控制器中执行SQL请求,而不是在视图中。