简体   繁体   中英

Multiline PHP script in Jade

I'm building a website with Jade and PHP, and I can't include multiline PHP scripts in my Jade file because it throws an indent error.

This would be an example of my code:

        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

When it tries to compile the code above, it throws this error :

unexpected token "indent"

Pointed at the second line of my script ("$sql...")

Due to this issue, i'm forced to minify the scripts to a single line, which makes them really hard to edit afterwards.

Is there a way I can include multiline inline scripts in a Jade template? Is there a better practice to make PHP scripts work in Jade?

Thanks!

Just prefix your php as plain text

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

wich will produce

<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>

If you use this PHP fork of Jade: https://github.com/kylekatarnls/jade-php , you can do:

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 ...

But I recommand to do SQL requests in the controller, not in the view.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM