2013-05-12 14 views
11

Ich erstelle eine grundlegende Listenansicht von Beiträgen und benötige einen Link zur "Bearbeiten" -Seite.Laravel Blade Vorlagen, foreach Variable innerhalb URL :: zu?

Ich benutze Blade, und was ich habe, ist eine Tabelle mit einer foreach-Schleife, die jeden Beitrag zusammen mit Bearbeiten/Löschen-Schaltflächen zeigt.

Was ich tun wollte, ist die Verwendung von Blade's URL :: für die Links zu den Seiten Bearbeiten und Löschen, um konsistente Links zu gewährleisten.

Der Code habe ich versucht, mit (nicht vergessen, diese innerhalb einer foreach-Schleife ist daher die $ post-> id var) ist dies:

<a href="{{ URL::to('admin/posts/edit/$post->id') }}" class="btn btn-mini btn-primary">Edit Post</a> 

funktioniert dies jedoch nicht. Ich habe auch versucht

<a href="{{ URL::to('admin/posts/edit/<?php echo $post->id; ?>') }}" class="btn btn-mini btn-primary">Edit Post</a> 

was auch nicht funktioniert.

ich einen Fehler nicht bekommen, endet die Verbindung buchstäblich Wesen nach oben:

http://domain.dev/admin/posts/$post->id 

Gibt es eine Möglichkeit, um dies zu arbeiten?

Antwort

20

Ich denke, das Problem ist, dass Sie PHP Variable ($ Post) innerhalb einer Zeichenfolge mit einem einzigen ' verwenden. In diesem Fall gibt es nur den Namen der Variablen aus. Versuchen Sie dies:

<a href="{{ URL::to('admin/posts/edit/' . $post->id) }}" class="btn btn-mini btn-primary">Edit Post</a> 

Hoffe, dass dies hilft. Vlad

13

vlad bereits die richtige Antwort auf Ihre Frage gegeben hat, aber darüber im Klaren sein, dass Sie auch Maßnahmen verknüpfen können direkt mit dem Controller über URL::action:

<a href="{{ URL::action('Admin\[email protected]', $post->id) }}">Edit</a> 
+0

Dank dafür. Dies half mir, mein Problem zu lösen, bei dem ich dachte, dass eine Verbindung zur Aktion Variablen erkennen würde, die mit Variablen in der Route übereinstimmen. Nicht so. Ich musste es als zweiten Parameter übergeben. – RedGlobe

1

Die {{ }} sind gleich <?php echo ;?>

wenn Sie setzen einzelne '

<?php echo '$hello' ?> = $ Hallo

aber wenn Sie doppelt setzt ' (") -><?php "$hello" ;?> = Hallo Welt (nur ein Beispiel)

Sie brauchen so etwas wie {{ URL::to("admin/posts/edit/$post->id") }}

0

Einen anderen Weg

<a href="{{URL::to('/')}}/admin/posts/edit/{{$post->id}}">Edit</a> 
0

hat ein Problem mit diesem in Laravel schreiben 5 so dachte Id, auch wenn die Frage alt ist. Gelöst mein Problem mit

{{ URL::to('/box').'/'.$box->id }}

oder
{{ url('/box').'/'.$box->id }}

0

Auch Sie route() Helfer verwenden können durch Namen Route URL zu generieren.Zum Beispiel Definition der Route:

Route::get('/test/mypage/{id}', '[email protected]')->name('my_route_name'); 

-Code aus Ihrer Sicht:

<a href="{{ route('my_route_name', $row['id']) }}">{{ $row['name'] }}</a>