Laravel Blade模板中如何在URL::to中使用foreach变量?

13

我正在创建一个基本的帖子列表视图,并需要一个指向“编辑”页面的链接。

我正在使用Blade模板,并且我的表格中有一个foreach循环,展示每个帖子以及编辑/删除按钮。

我想要使用Blade中的URL::to函数来创建指向编辑和删除页面的链接,以确保链接一致性。

我尝试使用的代码如下(请注意这是foreach循环内部,因此有$post->id变量):

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

然而这并不起作用。我也尝试过。

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

同样也不起作用。

我没有收到任何错误信息,链接最终实际上是这样:

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

有没有什么方法可以解决这个问题?

7个回答

25

我认为问题在于你在单引号字符串中使用了php变量($post)。在这种情况下,它只会输出变量的名称。尝试这样:

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

希望这可以帮到你。 Vlad


14

vlad已经回答了你的问题,但要注意您还可以通过URL::action直接链接到您的控制器操作:

<a href="{{ URL::action('Admin\PostsController@edit', $post->id) }}">Edit</a>

谢谢。这帮助我解决了一个问题,我以为链接到操作会知道与路由中匹配的变量设置。但事实并非如此。我必须将其作为第二个参数传递。 - zyglobe

1

我认为这会起作用

<a href="{{ url('test/'.$post->id.'/view') }}"></a>

1

{{ }} 等同于 <?php echo ;?>

如果你使用单引号'

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

但是如果你使用双引号" -> <?php "$hello" ;?> = Hello World (只是一个例子)

你需要写类似这样的代码 {{ URL::to("admin/posts/edit/$post->id") }}


0

另一种方式

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

0

此外,您可以使用route()助手根据路由名称生成URL。例如,路由的定义:

Route::get('/test/mypage/{id}', 'MyController@myAction')->name('my_route_name');

在你的视图中编写代码:

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

0

在Laravel 5中遇到了这个问题,所以我想即使这个问题已经过时,我也会把它放进来。使用以下代码解决了我的问题:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接