This question already has answers here:
PHP code is not being executed, but the code shows in the browser source code
(35 answers)
Closed 4 years ago.
this is my blade showing codes instead of the interface that i wanted to show :
https://i.stack.imgur.com/JSMzL.png
this is my blade
<div class="container">
<div class="row">
#foreach($details as $details)
<tbody action="{{!! action('DestinationDetailsController#details') !!}}" method="get">
<img src="{{!! asset('img/admin/' . $details->dest_img) !!}}" alt="Opps..." style="width:70%;">
<h2>{{!! $details->dest_name !!}}</h2>
<p>{{!! $details->dest_desc !!}}</p>
</tbody>
#endforeach
</div>
this is my controller looks like
public function details($id = null)
{
$details = DB::table('destinations')->where('dest_id',$id)->first();
return view('destinationdetail')->with('details', $details);
}
im very new in development world so i really need to learn from this kind of simple mistakes :)
{{!! action('DestinationDetailsController#details') !!}}
Should be:
{!! action('DestinationDetailsController#details') !!}
Basically when using !! you only use one bracket.
You should however use:
{{ action('DestinationDetailsController#details') }}
unless you really don't want to escape the data.
Related
I want to put together a menu and get an icon dynamically.
the result i want is something like this:
Database table:
code:
<div class="card card-dashboard-eight">
<label class="main-content-label mb-1">Categoryes</label>
<span class="d-block mg-b-20 text-muted">Stores All</span>
<div class="list-group">
#foreach($tipos as $tipo)
<div class="list-group-item">
{{$tipo->icono }}
<p>{{$tipo->tipo }}</p>
</div>
#endforeach
</div>
</div>
but it prints the label not the icon
What should I do to show my icons?
I dont know the template engine you are using, but it seems to escape the html chars. maybe it just works by removing the double brackets ("{$tipo->icono}" instead of "{{$tipo->icono }}").
But for app-design reasons: i'd suggest to store just the type (or class) in the database. not an html-tag. meaning: the column "icono" should just contain f.e. "glass-martini" - instead of a complete html-tag. put the html-stuff in your template and add the class from your column there.
You have to use {!! !!} to display the raw unescaped HTML of your icon:
{!! $tipo->icono !!}
This way it doesn't get escaped with htmlspecialchars.
Basically {{ $var }} will be compiled to <?php htmlspecialchars($var); ?> and {!! $var !!} to <?php echo $var; ?>.
See the docs on how to display data in Blade templates for more information.
What is the correct way to call the "Links" function after this "Foreach"?
I don't know how to handle the variable to put in function.
#inject('usuarios', 'App\User')
#foreach($usuarios->getIndicados() as $user)
#endforeach
<div class="row">
<div class="col-12 text-center">
{{ $usuarios->getIndicados()->links() }}
</div>
</div>
Maybe it's just an editing error, but in your output the -tags don't seem to be closed again. Also, there should be no space like < a> at the beginning of the tag. And < a hr_ef= ... is obviously wrong.
In order to style them, you can add a class attribute to the tags while building the string and do the style-stuff in css.
This is what laravel document provides. You need to add links in the collection.
<div class="container">
#foreach ($users as $user)
{{ $user->name }}
#endforeach
{{ $users->links() }}
This question already has answers here:
Blade engine: print triple curly braces
(5 answers)
Closed 4 years ago.
I want to print double curly brackets from a Laravel blade template. Here is what I've tried so far and failed:
#{{ n }}
{!! '{{ n }}' }}
#php echo '{{ n }}'; #endphp
#php echo '{{ n }}'; #endphp
Here is the view I have:
<div class="new-page">
<div class="row">
<div class="col-sm-4"></div>
<h3 class="col-md-6 center">Page #if(isset($n)) {{ $n }} #else #{{ n }} #endif</h3>
</div>
</div>
Weirdly, when I try any of the above there is no error it just displays an empty page.
I am using Laravel 5.6, I've also tried googling but no solution worked.
It turns out the default app.js file that comes with Laravel is throwing an error and it is breaking the page - I don't know exactly why though. The error is as follows:
n is not defined
Page <?php if(isset($n)) echo "{{ ".$n." }}"; else echo "{{ ".n." }}"; ?>
This will work quite fine you can check below screenshots
Try once using php tag like
<?php if(isset($n)) echo $n; else echo "{{ n }}"; ?>
Can you not do something like:
#php echo "{{" . {{ $n }} . "}}" #endphp
The question being is n a variable passed in or created by a controller or declared earlier in the view?
I want to put a line break into a blade report.
I know there is the {!! !!} tags to escape the html tags, but in my situation I have a long string coming in at {{$row[$colField]}} so it already within {{ }} tags.
The way I tried it would have appeared like {{ randome text {!! <br/> !!} }}.
Is there any other way to do this perhaps.
#foreach($fieldList as $field)
#if ($header->group == $field->group)
<?php $colName = $field->columnname ?>
<?php $colField = $field->columnfield; ?>
<?php $fieldGroup = $field->group; ?>
#if ($colName != $fieldGroup)
<span class="titleSpan" style="white-space: nowrap; font-weight: bold">{{ $colName=='Age'?'':$colName.':' }} </span>
#endif
{{$row[$colField]}}<br>
#endif
#endforeach
The curly brace blade tags are for echoing values, they don't do anything else and you cannot nest them in the way you're trying to in your example. You can find information about these tags in the Blade documentation, but in summary:
The double curly brace tag means echo this value and escape it, e.g:
{{ $row[$colField] }}
compiles to:
<?php echo e($row[$colField]); ?>
A curly brace with 2 exclamation marks means echo this value without escaping it, e.g:
{!! $row[$colField] !!}
compiles to:
<?php echo $row[$colField]; ?>
If you would like for a line break (<br/>) to appear somewhere within the value of $row[$colField] then you must transform that value before outputting it. There are functions, like nl2br that can replace new lines with line breaks, so you could for example do this:
{!! nl2br($row[$colField]) !!}
Which would compile to:
<?php echo nl2br($row[$colField]); ?>
So if the value of $row[$colField] is:
Hello world
This is another line.
Then that code would output:
Hello world</br>
This is another line.
That said your question is unclear so if this information does not help then please rewrite your question to clearly communicate what you're trying to achieve, i.e: include an example of your input and an example of your desired output.
What i'm trying to do is basically have the "latest" episodes show for a series that is has a status of "ongoing" below is the code i have so far.
The problem i a facing is that I can't seem to make the foreach loop for episodes work for the series. Wit hthe current code what it does is shows the same variables. Rather what i think is happening is that it loops the same query for each series so that the same variable pops up for each series.
Can anyone help me out here?
Also the way the episodes are linked is by using the title_id for the titles so in the table for episodes, they are liked by 'title_id', I wouldn't know what to do with that in this sequence though.
<?php $titles = DB::table('titles')->whereNotNull('poster')->where('status', '=', 'ongoing')->orderBy('updated_at', 'desc')->limit(12)->get(); ?>
#foreach ($titles as $title)
<?php $episodes = DB::table('episodes')->orderBy('created_at', 'desc')->limit(1)->get(); ?>
#foreach ($episodes as $episode)
<figure class="col-lg-2 col-md-3 col-sm-4 pretty-figure">
<div class="home-episode-number">
{{ $episode->episode_number }}
</div>
<div class="flip-containerw">
<div class="flipper">
<img src="{{ $episode->poster ? $episode->poster : '/assets/images/noimageepisode.png' }}" alt="" class="img-responsive">
</div>
</div>
<div class="home-anime-name">
{{ str_limit($title->title, 23, '...') }}
</div>
</figure>
#endforeach
#endforeach
You are not following some basic design patterns, like, for instance, the Model-View-Controller structure.
MVC
It's not good practice to have DB calls inside your view, wich you are doing. You should do it inside your model, or in a repository. And pass it trought the controller.
You would avoid a lot of headache if you start using eloquent properly.
Eloquent
Now, answering your question:
If you want to get the episode for the title in the loop, try using a where:
$episodes = DB::table('episodes')->where('title_id,'=',$title->id)->orderBy('created_at', 'desc')->limit(1)->get();
That query will retrieve just one episode (limit(1)).