我是学习Laravel的新手。我想从数据库中获取数据并显示它。我能做到。但我想使用标题(从数据库中提取)作为链接。但后来我得到一个NotFoundHttpException。
路线
Route::get('articles', 'ArticleController@index');
Route::get('articles/{id}', 'ArticleController@show');
控制器
class ArticleController extends Controller
{
public function index()
{
$articles = Article::all();
return view('articles.index', compact('articles'));
}
public function show($id){
$article = Article::find($id);
return view('articles.show', compact('article'));
}
}
查看
@extends('new_welcome')
@section('content')
<h1>Articles</h1>
@foreach($articles as $article)
<article>
<h2>
<a href="{url ('/articles',$article->id)}">{{$article->title}}</a>
</h2>
<div class="body">{{ $article->body}}</div>
</article>
@endforeach
@stop
在这种情况下有人可以帮助我吗?
答案 0 :(得分:0)
你的问题是因为你&#34; eat&#34;一个花括号(刀片引擎跳过它):
是:
href="{url ('/articles',$article->id)}"
必须是:
href="{{url ('/articles',$article->id)}}"
正如你所说:
如果我点击任何一篇文章标题,那么就无法告诉我了 具体文章。但是,如果我提供URL&#34; homestead.app/articles/2" ;;
所以当您点击链接时,您可以看到您的浏览器的地址栏变为:
homestead.app/{url ('/articles',$article->id)}
因为您是初学者,所以我建议您不要使用url()
帮助程序在视图中设置直接网址。
如果您希望将来能够正常使用的应用,则命名路线会更好您决定将网址从articles
更改为artcls
。在此命名路由中,您将从视图文件中保存批量更改URL。
使用'as'
指令将名称设置为您的路线,使您的路由更容易进行更改(当您需要更改URL以便仅更改路径并保持视图不变时):
Route::get('articles/{id}', ['as' => 'article', 'uses' => 'ArticleController@show']);
Route::get('articles', ['as' => 'articles', 'uses' => 'ArticleController@index']);
更改您的视图文件(在href中查找route
帮助程序):
@extends('new_welcome')
@section('content')
<h1> Articles </h1>
@foreach($articles as $article)
<article>
<h2>
<a href="{{ route('article', $article->id) }}">{{$article->title}}</a>
</h2>
<div class="body">{{ $article->body}}</div>
</article>
@endforeach
@stop